diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-08-17 11:24:56 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-08-17 11:24:56 +0100 |
| commit | c57c320a47aeb4d921ade5e3ed6a3f0ac59f6238 (patch) | |
| tree | e5523d1d93e6a293a742d225566b858ef541ec13 /src | |
| parent | 102c41ceb089d9038beff0850dbe1a40a2aeae48 (diff) | |
Scroll audio mapping view labels with the grid (#919).
Diffstat (limited to 'src')
| -rw-r--r-- | src/wx/audio_mapping_view.cc | 31 | ||||
| -rw-r--r-- | src/wx/audio_mapping_view.h | 1 |
2 files changed, 29 insertions, 3 deletions
diff --git a/src/wx/audio_mapping_view.cc b/src/wx/audio_mapping_view.cc index 9f1688cdf..f0ec44e6b 100644 --- a/src/wx/audio_mapping_view.cc +++ b/src/wx/audio_mapping_view.cc @@ -151,6 +151,14 @@ AudioMappingView::AudioMappingView (wxWindow* parent) Bind (wxEVT_GRID_CELL_LEFT_CLICK, boost::bind (&AudioMappingView::left_click, this, _1)); Bind (wxEVT_GRID_CELL_RIGHT_CLICK, boost::bind (&AudioMappingView::right_click, this, _1)); _grid->GetGridWindow()->Bind (wxEVT_MOTION, boost::bind (&AudioMappingView::mouse_moved_grid, this, _1)); + _grid->Bind (wxEVT_SCROLLWIN_TOP, boost::bind (&AudioMappingView::grid_scrolled, this)); + _grid->Bind (wxEVT_SCROLLWIN_BOTTOM, boost::bind (&AudioMappingView::grid_scrolled, this)); + _grid->Bind (wxEVT_SCROLLWIN_LINEUP, boost::bind (&AudioMappingView::grid_scrolled, this)); + _grid->Bind (wxEVT_SCROLLWIN_LINEDOWN, boost::bind (&AudioMappingView::grid_scrolled, this)); + _grid->Bind (wxEVT_SCROLLWIN_PAGEUP, boost::bind (&AudioMappingView::grid_scrolled, this)); + _grid->Bind (wxEVT_SCROLLWIN_PAGEDOWN, boost::bind (&AudioMappingView::grid_scrolled, this)); + _grid->Bind (wxEVT_SCROLLWIN_THUMBTRACK, boost::bind (&AudioMappingView::grid_scrolled, this)); + _grid->Bind (wxEVT_SCROLLWIN_THUMBRELEASE, boost::bind (&AudioMappingView::grid_scrolled, this)); Bind (wxEVT_SIZE, boost::bind (&AudioMappingView::sized, this, _1)); _menu = new wxMenu; @@ -376,6 +384,10 @@ AudioMappingView::paint_left_labels () return; } + int sx, sy; + _grid->CalcUnscrolledPosition (0, 0, &sx, &sy); + gc->Translate (0, -sy); + wxSize const size = dc.GetSize(); int const half = size.GetWidth() / 2; @@ -403,7 +415,7 @@ AudioMappingView::paint_left_labels () dc.DrawRotatedText ( j->name, half + (half - label_height) / 2, - min (i->second, (i->second + i->first + label_width) / 2), + min (i->second, (i->second + i->first + label_width) / 2) - sy, 90 ); @@ -426,7 +438,7 @@ AudioMappingView::paint_left_labels () dc.DrawRotatedText ( _("Content"), (half - overall_label_height) / 2, - min (size.GetHeight(), (size.GetHeight() + _grid->GetColLabelSize() + overall_label_width) / 2), + min (size.GetHeight(), (size.GetHeight() + _grid->GetColLabelSize() + overall_label_width) / 2 - sy), 90 ); @@ -446,6 +458,10 @@ AudioMappingView::paint_top_labels () return; } + int sx, sy; + _grid->CalcUnscrolledPosition (0, 0, &sx, &sy); + gc->Translate (-sx, 0); + wxSize const size = dc.GetSize(); gc->SetAntialiasMode (wxANTIALIAS_DEFAULT); @@ -455,7 +471,7 @@ AudioMappingView::paint_top_labels () wxCoord label_height; dc.GetTextExtent (_("DCP"), &label_width, &label_height); - dc.DrawText (_("DCP"), (size.GetWidth() + _grid->GetColSize(0) + LEFT_WIDTH - label_width) / 2, (size.GetHeight() - label_height) / 2); + dc.DrawText (_("DCP"), (size.GetWidth() + _grid->GetColSize(0) + LEFT_WIDTH - label_width) / 2 - sx, (size.GetHeight() - label_height) / 2); gc->SetPen (wxPen (wxColour (0, 0, 0))); wxGraphicsPath lines = gc->CreatePath(); @@ -497,3 +513,12 @@ AudioMappingView::mouse_moved_left_labels (wxMouseEvent& event) _left_labels->SetToolTip (""); } } + +void +AudioMappingView::grid_scrolled () +{ + _left_labels->Refresh (); + _left_labels->Update (); + _top_labels->Refresh (); + _top_labels->Update (); +} diff --git a/src/wx/audio_mapping_view.h b/src/wx/audio_mapping_view.h index a1d33ccd6..6d2265784 100644 --- a/src/wx/audio_mapping_view.h +++ b/src/wx/audio_mapping_view.h @@ -83,6 +83,7 @@ private: void paint_top_labels (); void mouse_moved_left_labels (wxMouseEvent &); void setup_sizes (); + void grid_scrolled (); void off (); void full (); |
