[gthumb] selections: added command Alt+Shift+n to remove files from selection n
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] selections: added command Alt+Shift+n to remove files from selection n
- Date: Mon, 9 Apr 2012 20:00:04 +0000 (UTC)
commit d1a3f8876a297acc07092ffa65ca0a7284fd9a97
Author: Paolo Bacchilega <paobac src gnome org>
Date: Mon Apr 9 20:51:18 2012 +0200
selections: added command Alt+Shift+n to remove files from selection n
extensions/selections/actions.c | 26 ++++++++++++++++++++++++++
extensions/selections/actions.h | 6 ++++--
extensions/selections/callbacks.c | 19 ++++++++++++++++---
3 files changed, 46 insertions(+), 5 deletions(-)
---
diff --git a/extensions/selections/actions.c b/extensions/selections/actions.c
index 40227f5..8dbd9a1 100644
--- a/extensions/selections/actions.c
+++ b/extensions/selections/actions.c
@@ -111,3 +111,29 @@ gth_browser_activate_action_add_to_selection_3 (GtkAction *action,
{
gth_browser_activate_action_add_to_selection (browser, 3);
}
+
+
+void
+gth_browser_activate_action_remove_from_selection (GthBrowser *browser,
+ int n_selection)
+{
+ char *uri;
+ GFile *folder;
+ GList *items;
+ GList *file_list = NULL;
+ GList *files;
+
+ uri = g_strdup_printf ("selection:///%d", n_selection);
+ folder = g_file_new_for_uri (uri);
+ items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
+ file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items);
+ files = gth_file_data_list_to_file_list (file_list);
+ gth_selections_manager_remove_files (folder, files);
+
+ _g_object_list_unref (files);
+ _g_object_list_unref (file_list);
+ _gtk_tree_path_list_free (items);
+ g_object_unref (folder);
+ g_free (uri);
+}
+
diff --git a/extensions/selections/actions.h b/extensions/selections/actions.h
index 9d2ef59..7c31c7e 100644
--- a/extensions/selections/actions.h
+++ b/extensions/selections/actions.h
@@ -26,8 +26,10 @@
#define DEFINE_ACTION(x) void x (GtkAction *action, gpointer data);
-void gth_browser_activate_action_add_to_selection (GthBrowser *browser,
- int n_selection);
+void gth_browser_activate_action_add_to_selection (GthBrowser *browser,
+ int n_selection);
+void gth_browser_activate_action_remove_from_selection (GthBrowser *browser,
+ int n_selection);
DEFINE_ACTION(gth_browser_activate_action_go_selection_1)
DEFINE_ACTION(gth_browser_activate_action_go_selection_2)
diff --git a/extensions/selections/callbacks.c b/extensions/selections/callbacks.c
index 82c77de..2b3a5e0 100644
--- a/extensions/selections/callbacks.c
+++ b/extensions/selections/callbacks.c
@@ -145,12 +145,25 @@ selections__gth_browser_file_list_key_press_cb (GthBrowser *browser,
guint modifiers;
modifiers = gtk_accelerator_get_default_mod_mask ();
- if ((event->state & modifiers) == GDK_MOD1_MASK) {
- switch (gdk_keyval_to_lower (event->keyval)) {
+ if (((event->state & modifiers) == GDK_MOD1_MASK) || ((event->state & modifiers) == (GDK_SHIFT_MASK|GDK_MOD1_MASK))) {
+ guint keyval;
+
+ gdk_keymap_translate_keyboard_state (gdk_keymap_get_for_display (gtk_widget_get_display (GTK_WIDGET (browser))),
+ event->hardware_keycode,
+ event->state & ~GDK_SHIFT_MASK,
+ event->group,
+ &keyval,
+ NULL, NULL, NULL);
+
+ switch (keyval) {
case GDK_KEY_1:
case GDK_KEY_2:
case GDK_KEY_3:
- gth_browser_activate_action_add_to_selection (browser, gdk_keyval_to_lower (event->keyval) - GDK_KEY_1 + 1);
+ /* Alt+Shift+n => remove from selection n */
+ if ((event->state & modifiers) == (GDK_SHIFT_MASK|GDK_MOD1_MASK))
+ gth_browser_activate_action_remove_from_selection (browser, keyval - GDK_KEY_1 + 1);
+ else /* Alt+n => add to selection n */
+ gth_browser_activate_action_add_to_selection (browser, keyval - GDK_KEY_1 + 1);
result = GINT_TO_POINTER (1);
break;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]