From 694c7254e19fd0fbabe1ad25020fc0785216eb96 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 15 Mar 2016 18:15:26 -0400 Subject: in key editor, attach key press/release handlers before other handlers so that normal treeview navigation keys (backspace, up, down etc.) can still be bound --- gtk2_ardour/keyeditor.cc | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'gtk2_ardour/keyeditor.cc') diff --git a/gtk2_ardour/keyeditor.cc b/gtk2_ardour/keyeditor.cc index f567bbf751..794e2e258c 100644 --- a/gtk2_ardour/keyeditor.cc +++ b/gtk2_ardour/keyeditor.cc @@ -151,8 +151,12 @@ KeyEditor::page_change (GtkNotebookPage*, guint) } bool -KeyEditor::Tab::on_key_press_event (GdkEventKey* ev) +KeyEditor::Tab::key_press_event (GdkEventKey* ev) { + if (view.get_selection()->count_selected_rows() != 1) { + return false; + } + if (!ev->is_modifier) { last_keyval = ev->keyval; } @@ -166,8 +170,12 @@ KeyEditor::Tab::on_key_press_event (GdkEventKey* ev) } bool -KeyEditor::Tab::on_key_release_event (GdkEventKey* ev) +KeyEditor::Tab::key_release_event (GdkEventKey* ev) { + if (view.get_selection()->count_selected_rows() != 1) { + return false; + } + if (last_keyval == 0) { return false; } @@ -186,7 +194,7 @@ KeyEditor::Tab::Tab (KeyEditor& ke, string const & str, Bindings* b) { data_model = TreeStore::create(columns); populate (); - + filter = TreeModelFilter::create(data_model); filter->set_visible_func (sigc::mem_fun (*this, &Tab::visible_func)); @@ -205,6 +213,8 @@ KeyEditor::Tab::Tab (KeyEditor& ke, string const & str, Bindings* b) view.set_name (X_("KeyEditorTree")); view.signal_cursor_changed().connect (sigc::mem_fun (*this, &Tab::action_selected)); + view.signal_key_press_event().connect (sigc::mem_fun (*this, &Tab::key_press_event), false); + view.signal_key_release_event().connect (sigc::mem_fun (*this, &Tab::key_release_event), false); view.get_column(0)->set_sort_column (columns.name); view.get_column(1)->set_sort_column (columns.binding); @@ -479,4 +489,3 @@ KeyEditor::search_string_updated (const std::string& filter) filter_string = boost::to_lower_copy(filter); current_tab ()->filter->refilter (); } - -- cgit v1.2.3