bool View::key_pressed_event(GdkEventKey *event) { // FIXME: Cursor and TAB keys are stolen by UI // cerr << "key " << event->keyval << endl; if (m_objtree->get_selection()->count_selected_rows() <= 0) return false; switch (event->keyval) { case GDK_Tab: { Glib::RefPtr<Gtk::TreeSelection> selection = m_objtree->get_selection(); Glib::RefPtr<Gtk::TreeStore> model = m_model->objtree.m_model; Gtk::TreeModel::iterator sel = selection->get_selected(); if (event->state & GDK_SHIFT_MASK) sel--; else sel++; if (sel) { selection->select (sel); return true; } else return false; } case GDK_Escape: { bool has_selected = m_objtree->get_selection()->get_selected(); m_objtree->get_selection()->unselect_all(); return has_selected; } case GDK_Delete: case GDK_KP_Delete: delete_selected_stl(); return true; case GDK_Up: case GDK_KP_Up: return moveSelected( 0.0, 1.0 ); case GDK_Down: case GDK_KP_Down: return moveSelected( 0.0, -1.0 ); case GDK_Left: case GDK_KP_Left: return moveSelected( -1.0, 0.0 ); case GDK_Right: case GDK_KP_Right: return moveSelected( 1.0, 0.0 ); default: return false; } }
bool View::key_pressed_event(GdkEventKey *event) { if (m_rfo_tree->get_selection()->count_selected_rows() <= 0) return false; switch (event->keyval) { case GDK_KEY_Tab: { Glib::RefPtr<Gtk::TreeSelection> selection = m_rfo_tree->get_selection(); Glib::RefPtr<Gtk::TreeStore> model = m_model->rfo.m_model; Gtk::TreeModel::iterator sel = selection->get_selected(); if (event->state & GDK_SHIFT_MASK) sel--; else sel++; if (sel) { selection->select (sel); return true; } else return false; } case GDK_KEY_Escape: { bool has_selected = m_rfo_tree->get_selection()->get_selected(); m_rfo_tree->get_selection()->unselect_all(); return has_selected; } case GDK_KEY_Delete: case GDK_KEY_KP_Delete: delete_selected_stl(); return true; case GDK_KEY_Up: case GDK_KEY_KP_Up: return moveSelected( 0.0, 1.0 ); case GDK_KEY_Down: case GDK_KEY_KP_Down: return moveSelected( 0.0, -1.0 ); case GDK_KEY_Left: case GDK_KEY_KP_Left: return moveSelected( -1.0, 0.0 ); case GDK_KEY_Right: case GDK_KEY_KP_Right: return moveSelected( 1.0, 0.0 ); default: return false; } }