summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-08-17 11:24:56 +0100
committerCarl Hetherington <cth@carlh.net>2016-08-17 11:24:56 +0100
commitc57c320a47aeb4d921ade5e3ed6a3f0ac59f6238 (patch)
treee5523d1d93e6a293a742d225566b858ef541ec13 /src
parent102c41ceb089d9038beff0850dbe1a40a2aeae48 (diff)
Scroll audio mapping view labels with the grid (#919).
Diffstat (limited to 'src')
-rw-r--r--src/wx/audio_mapping_view.cc31
-rw-r--r--src/wx/audio_mapping_view.h1
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 ();