diff options
| author | Carl Hetherington <cth@carlh.net> | 2023-02-19 21:19:15 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2023-02-19 21:19:17 +0100 |
| commit | f568d196a5bbf12726261afdfb92a40e0e0e4c8b (patch) | |
| tree | 681b61890ff234278c6c53590f08f2494df43347 /src | |
| parent | cad77c03245601a05511c24fe02b90a26f252c2d (diff) | |
Remove scrolling in AudioMappingView.
In the audio panel it was a bit weird to have part of the panel
scrollable when the whole video panel is. Now both video and audio
panels scroll. You lose the "always there" view of the audio processing
summary but I think this is outweighed by the scrolling simplicity.
I also suspect it may make things behave better on "short" screens.
Diffstat (limited to 'src')
| -rw-r--r-- | src/wx/audio_mapping_view.cc | 105 | ||||
| -rw-r--r-- | src/wx/audio_mapping_view.h | 5 | ||||
| -rw-r--r-- | src/wx/config_dialog.cc | 1 |
3 files changed, 10 insertions, 101 deletions
diff --git a/src/wx/audio_mapping_view.cc b/src/wx/audio_mapping_view.cc index 54b951df5..7d3e0a6d0 100644 --- a/src/wx/audio_mapping_view.cc +++ b/src/wx/audio_mapping_view.cc @@ -90,75 +90,25 @@ AudioMappingView::AudioMappingView (wxWindow* parent, wxString left_label, wxStr _menu->Append (ID_plus3dB, _("+3dB")); _menu->Append (ID_edit, _("Edit...")); - _body = new wxPanel (this, wxID_ANY); - _vertical_scroll = new wxScrollBar (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSB_VERTICAL); - _horizontal_scroll = new wxScrollBar (this, wxID_ANY); - #ifndef __WXOSX__ SetDoubleBuffered (true); #endif - Bind (wxEVT_SIZE, boost::bind(&AudioMappingView::size, this, _1)); Bind (wxEVT_MENU, boost::bind(&AudioMappingView::set_gain_from_menu, this, 0), ID_off); Bind (wxEVT_MENU, boost::bind(&AudioMappingView::set_gain_from_menu, this, db_to_linear(-6)), ID_minus6dB); Bind (wxEVT_MENU, boost::bind(&AudioMappingView::set_gain_from_menu, this, 1), ID_0dB); Bind (wxEVT_MENU, boost::bind(&AudioMappingView::set_gain_from_menu, this, db_to_linear(3)), ID_plus3dB); Bind (wxEVT_MENU, boost::bind(&AudioMappingView::edit, this), ID_edit); - Bind (wxEVT_MOUSEWHEEL, boost::bind(&AudioMappingView::mouse_wheel, this, _1)); - _body->Bind (wxEVT_PAINT, boost::bind(&AudioMappingView::paint, this)); - _body->Bind (wxEVT_LEFT_DOWN, boost::bind(&AudioMappingView::left_down, this, _1)); - _body->Bind (wxEVT_RIGHT_DOWN, boost::bind(&AudioMappingView::right_down, this, _1)); - _body->Bind (wxEVT_MOTION, boost::bind(&AudioMappingView::motion, this, _1)); - _vertical_scroll->Bind (wxEVT_SCROLL_TOP, boost::bind(&AudioMappingView::scroll, this)); - _vertical_scroll->Bind (wxEVT_SCROLL_BOTTOM, boost::bind(&AudioMappingView::scroll, this)); - _vertical_scroll->Bind (wxEVT_SCROLL_LINEUP, boost::bind(&AudioMappingView::scroll, this)); - _vertical_scroll->Bind (wxEVT_SCROLL_LINEDOWN, boost::bind(&AudioMappingView::scroll, this)); - _vertical_scroll->Bind (wxEVT_SCROLL_PAGEUP, boost::bind(&AudioMappingView::scroll, this)); - _vertical_scroll->Bind (wxEVT_SCROLL_PAGEDOWN, boost::bind(&AudioMappingView::scroll, this)); - _vertical_scroll->Bind (wxEVT_SCROLL_THUMBTRACK, boost::bind(&AudioMappingView::scroll, this)); - _vertical_scroll->Bind (wxEVT_SCROLL_THUMBRELEASE, boost::bind(&AudioMappingView::scroll, this)); - _horizontal_scroll->Bind (wxEVT_SCROLL_TOP, boost::bind(&AudioMappingView::scroll, this)); - _horizontal_scroll->Bind (wxEVT_SCROLL_BOTTOM, boost::bind(&AudioMappingView::scroll, this)); - _horizontal_scroll->Bind (wxEVT_SCROLL_LINEUP, boost::bind(&AudioMappingView::scroll, this)); - _horizontal_scroll->Bind (wxEVT_SCROLL_LINEDOWN, boost::bind(&AudioMappingView::scroll, this)); - _horizontal_scroll->Bind (wxEVT_SCROLL_PAGEUP, boost::bind(&AudioMappingView::scroll, this)); - _horizontal_scroll->Bind (wxEVT_SCROLL_PAGEDOWN, boost::bind(&AudioMappingView::scroll, this)); - _horizontal_scroll->Bind (wxEVT_SCROLL_THUMBTRACK, boost::bind(&AudioMappingView::scroll, this)); - _horizontal_scroll->Bind (wxEVT_SCROLL_THUMBRELEASE, boost::bind(&AudioMappingView::scroll, this)); -} - - -void -AudioMappingView::size (wxSizeEvent& ev) -{ - setup (); - ev.Skip (); + Bind (wxEVT_PAINT, boost::bind(&AudioMappingView::paint, this)); + Bind (wxEVT_LEFT_DOWN, boost::bind(&AudioMappingView::left_down, this, _1)); + Bind (wxEVT_RIGHT_DOWN, boost::bind(&AudioMappingView::right_down, this, _1)); + Bind (wxEVT_MOTION, boost::bind(&AudioMappingView::motion, this, _1)); } void AudioMappingView::setup () { - auto const s = GetSize(); - int const w = _vertical_scroll->GetSize().GetWidth(); - int const h = _horizontal_scroll->GetSize().GetHeight(); - - _vertical_scroll->SetPosition (wxPoint(s.GetWidth() - w, 0)); - _vertical_scroll->SetSize (wxSize(w, max(0, s.GetHeight() - h))); - - _body->SetSize (wxSize(max(0, s.GetWidth() - w), max(0, s.GetHeight() - h))); - - _horizontal_scroll->SetPosition (wxPoint(0, s.GetHeight() - h)); - _horizontal_scroll->SetSize (wxSize(max(0, s.GetWidth() - w), h)); - - _vertical_scroll->SetScrollbar ( - _vertical_scroll->GetThumbPosition(), - s.GetHeight() - h - 8, - ROW_HEIGHT * (2 + _input_channels.size()), - ROW_HEIGHT, - true - ); - wxClientDC dc (GetParent()); dc.SetFont (wxSWISS_FONT->Bold()); @@ -175,19 +125,7 @@ AudioMappingView::setup () _column_widths_total += this_width; } - _horizontal_scroll->SetScrollbar ( - _horizontal_scroll->GetThumbPosition(), - s.GetWidth() - w - 8, - LEFT_WIDTH + _column_widths_total, - HORIZONTAL_PAGE_SIZE, - true); -} - - -void -AudioMappingView::scroll () -{ - Refresh (); + SetMinSize({8 + LEFT_WIDTH + _column_widths_total, static_cast<int>(8 + TOP_HEIGHT + ROW_HEIGHT * _input_channels.size())}); } @@ -381,10 +319,7 @@ void restore (wxDC& dc) void AudioMappingView::paint () { - wxPaintDC dc (_body); - - int const hs = _horizontal_scroll->GetThumbPosition (); - int const vs = _vertical_scroll->GetThumbPosition (); + wxPaintDC dc(this); paint_static (dc); @@ -394,7 +329,6 @@ AudioMappingView::paint () _column_widths_total, ROW_HEIGHT * (2 + _input_channels.size()) ); - dc.SetLogicalOrigin (hs, 0); paint_column_labels (dc); restore (dc); @@ -404,7 +338,6 @@ AudioMappingView::paint () LEFT_WIDTH, min(int(ROW_HEIGHT * _input_channels.size()), GetSize().GetHeight() - TOP_HEIGHT) + 1 ); - dc.SetLogicalOrigin (0, vs); paint_row_labels (dc); restore (dc); @@ -414,7 +347,6 @@ AudioMappingView::paint () MINIMUM_COLUMN_WIDTH + _column_widths_total, min(int(ROW_HEIGHT * (2 + _input_channels.size())), GetSize().GetHeight() - TOP_HEIGHT) ); - dc.SetLogicalOrigin (hs, vs); paint_row_lines (dc); restore (dc); @@ -424,7 +356,6 @@ AudioMappingView::paint () MINIMUM_COLUMN_WIDTH + _column_widths_total, min(int(ROW_HEIGHT * (1 + _input_channels.size())), GetSize().GetHeight() - ROW_HEIGHT) ); - dc.SetLogicalOrigin(hs, vs); paint_column_lines (dc); restore (dc); @@ -434,7 +365,6 @@ AudioMappingView::paint () _column_widths_total, min(int(ROW_HEIGHT * _input_channels.size()), GetSize().GetHeight() - TOP_HEIGHT) ); - dc.SetLogicalOrigin(hs, vs); paint_indicators (dc); restore (dc); } @@ -443,8 +373,8 @@ AudioMappingView::paint () optional<pair<NamedChannel, NamedChannel>> AudioMappingView::mouse_event_to_channels (wxMouseEvent& ev) const { - int x = ev.GetX() + _horizontal_scroll->GetThumbPosition(); - int const y = ev.GetY() + _vertical_scroll->GetThumbPosition(); + int x = ev.GetX(); + int const y = ev.GetY(); if (x <= LEFT_WIDTH || y < TOP_HEIGHT) { return {}; @@ -472,12 +402,12 @@ AudioMappingView::mouse_event_to_channels (wxMouseEvent& ev) const optional<string> AudioMappingView::mouse_event_to_input_group_name (wxMouseEvent& ev) const { - int const x = ev.GetX() + _horizontal_scroll->GetThumbPosition(); + int const x = ev.GetX(); if (x < MINIMUM_COLUMN_WIDTH || x > (2 * MINIMUM_COLUMN_WIDTH)) { return {}; } - int const y = (ev.GetY() + _vertical_scroll->GetThumbPosition() - TOP_HEIGHT) / ROW_HEIGHT; + int const y = (ev.GetY() - TOP_HEIGHT) / ROW_HEIGHT; for (auto i: _input_groups) { if (i.from <= y && y <= i.to) { return i.name; @@ -517,21 +447,6 @@ AudioMappingView::right_down (wxMouseEvent& ev) PopupMenu (_menu, ev.GetPosition()); } -void -AudioMappingView::mouse_wheel (wxMouseEvent& ev) -{ - if (ev.ShiftDown()) { - _horizontal_scroll->SetThumbPosition ( - _horizontal_scroll->GetThumbPosition() + (ev.GetWheelRotation() > 0 ? -HORIZONTAL_PAGE_SIZE : HORIZONTAL_PAGE_SIZE) - ); - - } else { - _vertical_scroll->SetThumbPosition ( - _vertical_scroll->GetThumbPosition() + (ev.GetWheelRotation() > 0 ? -ROW_HEIGHT : ROW_HEIGHT) - ); - } - Refresh (); -} /** Called when any gain value has changed */ void diff --git a/src/wx/audio_mapping_view.h b/src/wx/audio_mapping_view.h index 70a226392..8c1a2d8ba 100644 --- a/src/wx/audio_mapping_view.h +++ b/src/wx/audio_mapping_view.h @@ -86,11 +86,9 @@ private: void paint_row_lines (wxDC& dc); void paint_indicators (wxDC& dc); void size (wxSizeEvent &); - void scroll (); void left_down (wxMouseEvent &); void right_down (wxMouseEvent &); void motion (wxMouseEvent &); - void mouse_wheel (wxMouseEvent &); boost::optional<std::pair<NamedChannel, NamedChannel>> mouse_event_to_channels (wxMouseEvent& ev) const; boost::optional<std::string> mouse_event_to_input_group_name (wxMouseEvent& ev) const; void setup (); @@ -102,9 +100,6 @@ private: AudioMapping _map; wxMenu* _menu = nullptr; - wxPanel* _body = nullptr; - wxScrollBar* _vertical_scroll = nullptr; - wxScrollBar* _horizontal_scroll = nullptr; int _menu_input; int _menu_output; diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index 51b6ff2e9..c9ce97367 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -866,7 +866,6 @@ SoundPage::setup () add_label_to_sizer (table, _panel, _("Mapping"), true, wxGBPosition(r, 0)); _map = new AudioMappingView (_panel, _("DCP"), _("DCP"), _("Output"), _("output")); - _map->SetSize (-1, 400); table->Add (_map, wxGBPosition(r, 1), wxDefaultSpan, wxEXPAND); ++r; |
