From df5cf878ce791175a67f35df0bac5958b8425b1b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 12 Oct 2007 22:30:25 +0000 Subject: fixup keybinding editor binding action; restore some menu items lost in the trunk merge; no search in processor (redirect) boxes git-svn-id: svn://localhost/ardour2/trunk@2548 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/ardour.menus | 6 +++++- gtk2_ardour/keyeditor.cc | 24 ++++++++++++++++++++++++ gtk2_ardour/keyeditor.h | 6 ++++++ gtk2_ardour/processor_box.cc | 1 + 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus index 4c8c3d6df9..a24041374b 100644 --- a/gtk2_ardour/ardour.menus +++ b/gtk2_ardour/ardour.menus @@ -298,6 +298,10 @@ + + + + @@ -368,7 +372,7 @@ - + diff --git a/gtk2_ardour/keyeditor.cc b/gtk2_ardour/keyeditor.cc index 07aad652af..c9deebbb6a 100644 --- a/gtk2_ardour/keyeditor.cc +++ b/gtk2_ardour/keyeditor.cc @@ -20,6 +20,9 @@ using namespace Gdk; KeyEditor::KeyEditor () : ArdourDialog (_("Keybinding Editor"), false) { + can_bind = false; + last_state = 0; + model = TreeStore::create(columns); view.set_model (model); @@ -37,7 +40,9 @@ KeyEditor::KeyEditor () scroller.add (view); scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); + get_vbox()->pack_start (scroller); + get_vbox()->set_border_width (12); scroller.show (); view.show (); @@ -62,14 +67,29 @@ KeyEditor::action_selected () { } +bool +KeyEditor::on_key_press_event (GdkEventKey* ev) +{ + can_bind = true; + last_state = ev->state; +} + bool KeyEditor::on_key_release_event (GdkEventKey* ev) { + if (!can_bind || ev->state != last_state) { + return false; + } + TreeModel::iterator i = view.get_selection()->get_selected(); if (i != model->children().end()) { string path = (*i)[columns.path]; + if (!(*i)[columns.bindable]) { + goto out; + } + bool result = AccelMap::change_entry (path, ev->keyval, (ModifierType) ev->state, @@ -91,6 +111,8 @@ KeyEditor::on_key_release_event (GdkEventKey* ev) } + out: + can_bind = false; return true; } @@ -136,6 +158,7 @@ KeyEditor::populate () nodes[parts[1]] = rowp; parent = *(rowp); parent[columns.action] = parts[1]; + parent[columns.bindable] = false; row = *(model->append (parent.children())); @@ -149,6 +172,7 @@ KeyEditor::populate () row[columns.action] = (*l); row[columns.path] = (*p); + row[columns.bindable] = true; if (*k == ActionManager::unbound_string) { row[columns.binding] = string(); diff --git a/gtk2_ardour/keyeditor.h b/gtk2_ardour/keyeditor.h index b200adabf4..9fd129ca31 100644 --- a/gtk2_ardour/keyeditor.h +++ b/gtk2_ardour/keyeditor.h @@ -18,6 +18,7 @@ class KeyEditor : public ArdourDialog protected: void on_show (); void on_unmap (); + bool on_key_press_event (GdkEventKey*); bool on_key_release_event (GdkEventKey*); private: @@ -26,10 +27,12 @@ class KeyEditor : public ArdourDialog add (action); add (binding); add (path); + add (bindable); } Gtk::TreeModelColumn action; Gtk::TreeModelColumn binding; Gtk::TreeModelColumn path; + Gtk::TreeModelColumn bindable; }; Gtk::ScrolledWindow scroller; @@ -37,6 +40,9 @@ class KeyEditor : public ArdourDialog Glib::RefPtr model; KeyEditorColumns columns; + bool can_bind; + guint last_state; + void action_selected (); void populate (); }; diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index 12e30e59c0..e5ccc827f3 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -120,6 +120,7 @@ ProcessorBox::ProcessorBox (Placement pcmnt, Session& sess, boost::shared_ptrset_sizing(TREE_VIEW_COLUMN_FIXED); processor_display.get_column(0)->set_fixed_width(48); + processor_display.set_enable_search (false); processor_display.add_object_drag (columns.processor.index(), "redirects"); processor_display.signal_object_drop.connect (mem_fun (*this, &ProcessorBox::object_drop)); -- cgit v1.2.3