summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-02-19 21:19:15 +0100
committerCarl Hetherington <cth@carlh.net>2023-02-19 21:19:17 +0100
commitf568d196a5bbf12726261afdfb92a40e0e0e4c8b (patch)
tree681b61890ff234278c6c53590f08f2494df43347 /src
parentcad77c03245601a05511c24fe02b90a26f252c2d (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.cc105
-rw-r--r--src/wx/audio_mapping_view.h5
-rw-r--r--src/wx/config_dialog.cc1
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;