diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-09-28 18:37:21 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-09-28 18:37:21 +0000 |
commit | 0ff828822f88c70db31183c66505fdfd640bb87d (patch) | |
tree | 9841897a06e01fb59e21cd37b8ab65e00f5d11e1 /gtk2_ardour | |
parent | 40903b19266fb42a49903ad3cbfb8c388704f068 (diff) |
use select next/prev stuff on editor track+bus list
git-svn-id: svn://localhost/ardour2/branches/3.0@7851 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor_regions.h | 5 | ||||
-rw-r--r-- | gtk2_ardour/editor_routes.cc | 32 | ||||
-rw-r--r-- | gtk2_ardour/editor_routes.h | 2 |
3 files changed, 33 insertions, 6 deletions
diff --git a/gtk2_ardour/editor_regions.h b/gtk2_ardour/editor_regions.h index ad0a871aec..de53edc4e3 100644 --- a/gtk2_ardour/editor_regions.h +++ b/gtk2_ardour/editor_regions.h @@ -189,11 +189,6 @@ private: bool ignore_region_list_selection_change; bool ignore_selected_region_change; bool expanded; - - void select_one (Glib::RefPtr<Gtk::TreeSelection>, Glib::RefPtr<Gtk::TreeModel>, Gtk::TreeView&, - Gtk::TreeIter, Gtk::TreePath, Gtk::TreeViewColumn*); - void select_next (); - void select_previous (); }; #endif /* __gtk_ardour_editor_regions_h__ */ diff --git a/gtk2_ardour/editor_routes.cc b/gtk2_ardour/editor_routes.cc index 54586e6c6d..23e05c787f 100644 --- a/gtk2_ardour/editor_routes.cc +++ b/gtk2_ardour/editor_routes.cc @@ -45,6 +45,7 @@ #include "gtkmm2ext/cell_renderer_pixbuf_multi.h" #include "gtkmm2ext/cell_renderer_pixbuf_toggle.h" +#include "gtkmm2ext/treeutils.h" #include "i18n.h" @@ -161,6 +162,7 @@ EditorRoutes::EditorRoutes (Editor* e) _display.set_headers_visible (true); _display.set_name ("TrackListDisplay"); _display.get_selection()->set_mode (SELECTION_SINGLE); + _display.get_selection()->set_select_function (sigc::mem_fun (*this, &EditorRoutes::selection_filter)); _display.set_reorderable (true); _display.set_rules_hint (true); _display.set_size_request (100, -1); @@ -199,6 +201,7 @@ EditorRoutes::EditorRoutes (Editor* e) _model->signal_rows_reordered().connect (sigc::mem_fun (*this, &EditorRoutes::reordered)); _display.signal_button_press_event().connect (sigc::mem_fun (*this, &EditorRoutes::button_press), false); + _display.signal_key_press_event().connect (sigc::mem_fun(*this, &EditorRoutes::key_press), false); Route::SyncOrderKeys.connect (*this, MISSING_INVALIDATOR, ui_bind (&EditorRoutes::sync_order_keys, this, _1), gui_context()); } @@ -809,6 +812,32 @@ EditorRoutes::hide_all_miditracks () } bool +EditorRoutes::key_press (GdkEventKey* ev) +{ + TreeViewColumn *col; + + switch (ev->keyval) { + case GDK_Tab: + case GDK_ISO_Left_Tab: + col = _display.get_column (5); // select&focus on name column + + if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { + treeview_select_previous (_display, _model, col); + } else { + treeview_select_next (_display, _model, col); + } + + return true; + break; + + default: + break; + } + + return false; +} + +bool EditorRoutes::button_press (GdkEventButton* ev) { if (Keyboard::is_context_menu_event (ev)) { @@ -848,8 +877,9 @@ EditorRoutes::button_press (GdkEventButton* ev) } bool -EditorRoutes::selection_filter (Glib::RefPtr<TreeModel> const &, TreeModel::Path const &, bool) +EditorRoutes::selection_filter (Glib::RefPtr<TreeModel> const &, TreeModel::Path const &path , bool already_selected) { + cerr << path.to_string() << " is " << (already_selected ? " already selected " : " not selected ") << endl; return true; } diff --git a/gtk2_ardour/editor_routes.h b/gtk2_ardour/editor_routes.h index b6acae3685..a1e72664cc 100644 --- a/gtk2_ardour/editor_routes.h +++ b/gtk2_ardour/editor_routes.h @@ -137,6 +137,8 @@ private: bool _redisplay_does_not_reset_order_keys; Gtk::Menu* _menu; + + bool key_press (GdkEventKey* ev); }; #endif /* __ardour_gtk_editor_route_h__ */ |