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
This commit is contained in:
@@ -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__ */
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
@@ -808,6 +811,32 @@ EditorRoutes::hide_all_miditracks ()
|
||||
set_all_audio_midi_visibility (3, false);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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__ */
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "gtkmm2ext/treeutils.h"
|
||||
|
||||
using namespace Glib;
|
||||
@@ -162,13 +164,15 @@ Gtkmm2ext::treeview_select_next (TreeView& view, RefPtr<TreeModel> model, TreeVi
|
||||
iter = model->get_iter (start);
|
||||
|
||||
TreeRow row = (*iter);
|
||||
bool down_allowed = true;
|
||||
bool down_allowed = false;
|
||||
|
||||
if (!row.children().empty()) {
|
||||
TreePath tp = model->get_path (iter);
|
||||
|
||||
if (!view.row_expanded (tp)) {
|
||||
down_allowed = false;
|
||||
} else {
|
||||
down_allowed = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user