in key editor, attach key press/release handlers before other handlers so that normal...
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 15 Mar 2016 22:15:26 +0000 (18:15 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 15 Mar 2016 22:15:26 +0000 (18:15 -0400)
gtk2_ardour/keyeditor.cc
gtk2_ardour/keyeditor.h

index f567bbf7512859c09c7860687e93c8fd87328109..794e2e258c79e5684157db59f3064d4dd5a57080 100644 (file)
@@ -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 ();
 }
-
index d9b8ed976831e7f1b48eb3df7d7d5e454eb713ef..2a612160fae72ea34d1d09c5dbfa8e92b84c8981 100644 (file)
@@ -89,8 +89,8 @@ class KeyEditor : public ArdourWindow
                guint last_keyval;
 
                protected:
-               bool on_key_press_event (GdkEventKey*);
-               bool on_key_release_event (GdkEventKey*);
+               bool key_press_event (GdkEventKey*);
+               bool key_release_event (GdkEventKey*);
                Gtk::TreeModel::iterator find_action_path (Gtk::TreeModel::const_iterator begin, Gtk::TreeModel::const_iterator end, const std::string& path) const;
        };