diff options
author | Federico Mena Quintero <federico@ximian.com> | 2004-04-29 23:13:50 +0000 |
---|---|---|
committer | Federico Mena Quintero <federico@src.gnome.org> | 2004-04-29 23:13:50 +0000 |
commit | 6631943388cd7da4e9abefbf73e31c9be5840a52 (patch) | |
tree | 41ed32dd6ee702aef85a9788ae2bac123b9e21f0 /gtk/gtkfilechooserdefault.c | |
parent | 40532b0d45e4d5bd72f039725acbfcee079582f2 (diff) | |
download | gdk-pixbuf-6631943388cd7da4e9abefbf73e31c9be5840a52.tar.gz |
Fixes #140412.
2004-04-29 Federico Mena Quintero <federico@ximian.com>
Fixes #140412.
* gtk/gtkfilechooserdefault.c (remove_selected_bookmarks): New
function; moved the code over from
remove_bookmark_button_clicked_cb().
(remove_selected_bookmarks): Now, getting a non-removable bookmark
is not an error, as we may be called as a result of hitting the
Delete key.
(shortcuts_key_press_event_cb): New handler; delete the bookmark
if the user presses Backspace, Delete, or KP_Delete.
Diffstat (limited to 'gtk/gtkfilechooserdefault.c')
-rw-r--r-- | gtk/gtkfilechooserdefault.c | 76 |
1 files changed, 55 insertions, 21 deletions
diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index 60143eec9..b3cc47280 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -329,6 +329,11 @@ static void shortcuts_row_activated_cb (GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, GtkFileChooserDefault *impl); + +static gboolean shortcuts_key_press_event_cb (GtkWidget *widget, + GdkEventKey *event, + GtkFileChooserDefault *impl); + static gboolean shortcuts_select_func (GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, @@ -1701,10 +1706,9 @@ add_bookmark_button_clicked_cb (GtkButton *button, impl); } -/* Callback used when the "Remove bookmark" button is clicked */ +/* Removes the selected bookmarks */ static void -remove_bookmark_button_clicked_cb (GtkButton *button, - GtkFileChooserDefault *impl) +remove_selected_bookmarks (GtkFileChooserDefault *impl) { GtkTreeSelection *selection; GtkTreeIter iter; @@ -1714,28 +1718,33 @@ remove_bookmark_button_clicked_cb (GtkButton *button, selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view)); - if (gtk_tree_selection_get_selected (selection, NULL, &iter)) - { - gtk_tree_model_get (impl->shortcuts_filter_model, &iter, - SHORTCUTS_COL_PATH, &path, - SHORTCUTS_COL_REMOVABLE, &removable, -1); - if (!removable) - { - g_assert_not_reached (); - return; - } + if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) + return; - error = NULL; - if (!gtk_file_system_remove_bookmark (impl->file_system, path, &error)) - { - error_dialog (impl, - _("Could not remove bookmark for %s:\n%s"), - path, - error); - } + gtk_tree_model_get (impl->shortcuts_filter_model, &iter, + SHORTCUTS_COL_PATH, &path, + SHORTCUTS_COL_REMOVABLE, &removable, -1); + if (!removable) + return; + + error = NULL; + if (!gtk_file_system_remove_bookmark (impl->file_system, path, &error)) + { + error_dialog (impl, + _("Could not remove bookmark for %s:\n%s"), + path, + error); } } +/* Callback used when the "Remove bookmark" button is clicked */ +static void +remove_bookmark_button_clicked_cb (GtkButton *button, + GtkFileChooserDefault *impl) +{ + remove_selected_bookmarks (impl); +} + struct selection_check_closure { GtkFileChooserDefault *impl; gboolean empty; @@ -2482,6 +2491,9 @@ shortcuts_list_create (GtkFileChooserDefault *impl) g_signal_connect (impl->browse_shortcuts_tree_view, "row-activated", G_CALLBACK (shortcuts_row_activated_cb), impl); + g_signal_connect (impl->browse_shortcuts_tree_view, "key-press-event", + G_CALLBACK (shortcuts_key_press_event_cb), impl); + g_signal_connect (impl->browse_shortcuts_tree_view, "drag-begin", G_CALLBACK (shortcuts_drag_begin_cb), impl); g_signal_connect (impl->browse_shortcuts_tree_view, "drag-end", @@ -4819,6 +4831,28 @@ shortcuts_row_activated_cb (GtkTreeView *tree_view, shortcuts_activate_item (impl, selected); } +/* Handler for GtkWidget::key-press-event on the shortcuts list */ +static gboolean +shortcuts_key_press_event_cb (GtkWidget *widget, + GdkEventKey *event, + GtkFileChooserDefault *impl) +{ + guint modifiers; + + modifiers = gtk_accelerator_get_default_mod_mask (); + + if ((event->keyval == GDK_BackSpace + || event->keyval == GDK_Delete + || event->keyval == GDK_KP_Delete) + && (event->state & modifiers) == 0) + { + remove_selected_bookmarks (impl); + return TRUE; + } + + return FALSE; +} + static gboolean shortcuts_select_func (GtkTreeSelection *selection, GtkTreeModel *model, |