gui/sidebar: Rename playlists when pressing the Backspace key
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
1374a025e1
commit
9b9be4e322
|
@ -132,6 +132,43 @@ void __gui_sidebar_selection_changed(GtkTreeSelection *selection, gpointer data)
|
|||
gtk_widget_set_sensitive(GTK_WIDGET(gui_random_button()), sensitive);
|
||||
}
|
||||
|
||||
static void __gui_sidebar_do_rename(GtkTreePath *path)
|
||||
{
|
||||
GtkTreeView *treeview = gui_sidebar_treeview();
|
||||
GtkTreeModel *model = gtk_tree_view_get_model(treeview);
|
||||
GtkTreeViewColumn *column = gtk_tree_view_get_column(treeview, SB_NAME);
|
||||
GtkTreeIter iter, child;
|
||||
|
||||
if (!gtk_tree_model_get_iter(model, &iter, path))
|
||||
return;
|
||||
|
||||
__gui_sidebar_filter_iter_convert(&iter, &child);
|
||||
gui_sidebar_iter_set_editable(&child, true);
|
||||
gtk_tree_view_set_cursor(treeview, path, column, true);
|
||||
}
|
||||
|
||||
static GtkTreePath *__gui_sidebar_current_path(void)
|
||||
{
|
||||
GtkTreeView *treeview = gui_sidebar_treeview();
|
||||
GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
|
||||
GtkTreeModel *model = gtk_tree_view_get_model(treeview);
|
||||
GtkTreeIter iter;
|
||||
|
||||
if (!gtk_tree_selection_get_selected(selection, &model, &iter))
|
||||
return NULL;
|
||||
return gtk_tree_model_get_path(model, &iter);
|
||||
}
|
||||
|
||||
bool __gui_sidebar_rename(GtkMenuItem *item, gpointer data)
|
||||
{
|
||||
GtkTreePath *path = __gui_sidebar_current_path();
|
||||
if (path) {
|
||||
__gui_sidebar_do_rename(path);
|
||||
gtk_tree_path_free(path);
|
||||
}
|
||||
return path != NULL;
|
||||
}
|
||||
|
||||
bool __gui_sidebar_delete(GtkMenuItem *item, gpointer data)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
|
@ -147,6 +184,8 @@ bool __gui_sidebar_keypress(GtkTreeView *treeview, GdkEventKey *event,
|
|||
gpointer data)
|
||||
{
|
||||
switch (event->keyval) {
|
||||
case GDK_KEY_BackSpace:
|
||||
return __gui_sidebar_rename(NULL, NULL);
|
||||
case GDK_KEY_Delete:
|
||||
return __gui_sidebar_delete(NULL, NULL);
|
||||
default:
|
||||
|
@ -157,9 +196,6 @@ bool __gui_sidebar_keypress(GtkTreeView *treeview, GdkEventKey *event,
|
|||
bool __gui_sidebar_button_press(GtkTreeView *treeview, GdkEventButton *event,
|
||||
gpointer data)
|
||||
{
|
||||
GtkTreeModel *model = gtk_tree_view_get_model(treeview);
|
||||
GtkTreeViewColumn *column = gtk_tree_view_get_column(treeview, SB_NAME);
|
||||
GtkTreeIter iter, child;
|
||||
GtkTreePath *path;
|
||||
|
||||
if (event->type != GDK_2BUTTON_PRESS ||
|
||||
|
@ -168,12 +204,8 @@ bool __gui_sidebar_button_press(GtkTreeView *treeview, GdkEventButton *event,
|
|||
if (!gtk_tree_view_get_path_at_pos(treeview, event->x, event->y,
|
||||
&path, NULL, NULL, NULL))
|
||||
return true;
|
||||
if (!gtk_tree_model_get_iter(model, &iter, path))
|
||||
return true;
|
||||
|
||||
__gui_sidebar_filter_iter_convert(&iter, &child);
|
||||
gui_sidebar_iter_set_editable(&child, true);
|
||||
gtk_tree_view_set_cursor(treeview, path, column, true);
|
||||
__gui_sidebar_do_rename(path);
|
||||
gtk_tree_path_free(path);
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue