summaryrefslogtreecommitdiff
path: root/gtk2_ardour/keyeditor.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-03-15 18:15:26 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-03-15 18:15:26 -0400
commit694c7254e19fd0fbabe1ad25020fc0785216eb96 (patch)
tree1332c0a87acb42021522ee841099445f0d3fd066 /gtk2_ardour/keyeditor.cc
parent285b76dc08ab5e14bd9951c51e2710a49e1f91ec (diff)
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
Diffstat (limited to 'gtk2_ardour/keyeditor.cc')
-rw-r--r--gtk2_ardour/keyeditor.cc17
1 files changed, 13 insertions, 4 deletions
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 ();
}
-