diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-04-05 11:12:58 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-04-05 11:12:58 +0100 |
| commit | 7ec4cb260c6f1bade4bbe515f91ebe8b3572472c (patch) | |
| tree | 3807f350bd0f9b9c553f85eb79e93b6fdb2e5411 | |
| parent | 4775971005de645dd539c7c940a699758d535c46 (diff) | |
Stop hot keys stealing from text fields (#1263).v2.13.10
| -rw-r--r-- | ChangeLog | 2 | ||||
| -rw-r--r-- | src/tools/dcpomatic.cc | 38 |
2 files changed, 34 insertions, 6 deletions
@@ -1,5 +1,7 @@ 2018-04-05 Carl Hetherington <cth@carlh.net> + * Fix non-working arrow keys / space in text fields (#1263). + * Fix assertion failures with 3D content in some cases. 2018-03-28 Carl Hetherington <cth@carlh.net> diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index 0fffe6cfc..33e90aef3 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -348,10 +348,10 @@ public: #endif Bind (wxEVT_MENU, boost::bind (&ContentPanel::add_file_clicked, _film_editor->content_panel()), ID_add_file); Bind (wxEVT_MENU, boost::bind (&DOMFrame::remove_clicked, this, _1), ID_remove); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::start_stop_pressed, this), ID_start_stop); + Bind (wxEVT_MENU, boost::bind (&DOMFrame::start_stop_pressed, this, _1), ID_start_stop); Bind (wxEVT_MENU, boost::bind (&DOMFrame::timeline_pressed, this), ID_timeline); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::back_frame, this), ID_back_frame); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::forward_frame, this), ID_forward_frame); + Bind (wxEVT_MENU, boost::bind (&DOMFrame::back_frame, this, _1), ID_back_frame); + Bind (wxEVT_MENU, boost::bind (&DOMFrame::forward_frame, this, _1), ID_forward_frame); wxAcceleratorTable accel_table (accelerators, accel); SetAcceleratorTable (accel_table); delete[] accel; @@ -1213,8 +1213,26 @@ private: _update_news_requested = false; } - void start_stop_pressed () + /** Skip the given event if we're focussed in a TextCtrl, so that hotkeys don't + * steal from text controls. + */ + bool maybe_pass (wxCommandEvent& ev) { + wxWindow* f = wxWindow::FindFocus(); + if (!f || !dynamic_cast<wxTextCtrl*>(f)) { + return false; + } + + ev.Skip(); + return true; + } + + void start_stop_pressed (wxCommandEvent& ev) + { + if (maybe_pass(ev)) { + return; + } + if (_film_viewer->playing()) { _film_viewer->stop(); } else { @@ -1227,13 +1245,21 @@ private: _film_editor->content_panel()->timeline_clicked (); } - void back_frame () + void back_frame (wxCommandEvent& ev) { + if (maybe_pass(ev)) { + return; + } + _film_viewer->back_frame (); } - void forward_frame () + void forward_frame (wxCommandEvent& ev) { + if (maybe_pass(ev)) { + return; + } + _film_viewer->forward_frame (); } |
