gui/sidebar: Respond to the Delete key
Gtk doesn't have a simple way to manually trigger this, so I didn't write a unit test for this feature. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
828f861d9a
commit
b3efd9d84d
|
@ -43,38 +43,6 @@ static void __playlist_set_size(GtkTreeIter *iter, const gchar *name)
|
||||||
g_free(text);
|
g_free(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool __playlist_keypress(GtkTreeView *treeview, GdkEventKey *event,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
|
|
||||||
GtkTreeModel *model = gui_sidebar_model();
|
|
||||||
GtkTreeIter iter, child;
|
|
||||||
gchar *name = NULL;
|
|
||||||
GtkTreePath *path;
|
|
||||||
GList *rows;
|
|
||||||
|
|
||||||
if (event->keyval != GDK_KEY_Delete)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
rows = gtk_tree_selection_get_selected_rows(selection, &model);
|
|
||||||
path = rows->data;
|
|
||||||
|
|
||||||
if (!gtk_tree_model_get_iter(model, &iter, path))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
__playlist_filter_get_iter(&iter, &child);
|
|
||||||
name = gui_sidebar_iter_name(&child);
|
|
||||||
if (!name)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
if (playlist_delete(gui_sidebar_iter_type(&child), name))
|
|
||||||
gtk_tree_store_remove(gui_sidebar_store(), &child);
|
|
||||||
g_free(name);
|
|
||||||
out:
|
|
||||||
g_list_free_full(rows, (GDestroyNotify)gtk_tree_path_free);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __playlist_row_activated(GtkTreeView *treeview, GtkTreePath *path,
|
void __playlist_row_activated(GtkTreeView *treeview, GtkTreePath *path,
|
||||||
GtkTreeViewColumn *col, gpointer data)
|
GtkTreeViewColumn *col, gpointer data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -141,6 +141,25 @@ void __gui_sidebar_selection_changed(GtkTreeSelection *selection, gpointer data)
|
||||||
gui_treeview_set_playlist(playlist);
|
gui_treeview_set_playlist(playlist);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool __gui_sidebar_keypress(GtkTreeView *treeview, GdkEventKey *event,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
|
||||||
|
struct playlist *playlist = gui_model_get_playlist();
|
||||||
|
GtkTreeModel *model = GTK_TREE_MODEL(gui_sidebar_filter());
|
||||||
|
GtkTreeIter iter, child;
|
||||||
|
|
||||||
|
if (!playlist || event->keyval != GDK_KEY_Delete)
|
||||||
|
return false;
|
||||||
|
if (!gtk_tree_selection_get_selected(selection, &model, &iter))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
__gui_sidebar_filter_iter_convert(&iter, &child);
|
||||||
|
if (playlist_delete(playlist->pl_type, playlist->pl_name))
|
||||||
|
gtk_tree_store_remove(gui_sidebar_store(), &child);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void __gui_sidebar_resized(GtkPaned *pane, GParamSpec *pspec, gpointer data)
|
void __gui_sidebar_resized(GtkPaned *pane, GParamSpec *pspec, gpointer data)
|
||||||
{
|
{
|
||||||
settings_set(SIDEBAR_SETTING, gtk_paned_get_position(pane));
|
settings_set(SIDEBAR_SETTING, gtk_paned_get_position(pane));
|
||||||
|
|
|
@ -747,7 +747,7 @@ audio-volume-medium</property>
|
||||||
<property name="headers_visible">False</property>
|
<property name="headers_visible">False</property>
|
||||||
<property name="search_column">1</property>
|
<property name="search_column">1</property>
|
||||||
<property name="enable_tree_lines">True</property>
|
<property name="enable_tree_lines">True</property>
|
||||||
<signal name="key-press-event" handler="__playlist_keypress" swapped="no"/>
|
<signal name="key-press-event" handler="__gui_sidebar_keypress" swapped="no"/>
|
||||||
<signal name="row-activated" handler="__playlist_row_activated" swapped="no"/>
|
<signal name="row-activated" handler="__playlist_row_activated" swapped="no"/>
|
||||||
<child internal-child="selection">
|
<child internal-child="selection">
|
||||||
<object class="GtkTreeSelection" id="treeview-selection3">
|
<object class="GtkTreeSelection" id="treeview-selection3">
|
||||||
|
|
Loading…
Reference in New Issue