[gnome-flashback/gnome-3-36] desktop: activate rename with F2 key
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-flashback/gnome-3-36] desktop: activate rename with F2 key
- Date: Wed, 29 Apr 2020 18:04:31 +0000 (UTC)
commit 3486a48780867b07c722ff08ff7a58aea77921d2
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Wed Apr 29 16:40:28 2020 +0300
desktop: activate rename with F2 key
https://bugs.launchpad.net/bugs/1875703
gnome-flashback/libdesktop/gf-icon-view.c | 25 ++++++++++++
gnome-flashback/libdesktop/gf-icon.c | 64 ++++++++++++++++++-------------
gnome-flashback/libdesktop/gf-icon.h | 2 +
3 files changed, 65 insertions(+), 26 deletions(-)
---
diff --git a/gnome-flashback/libdesktop/gf-icon-view.c b/gnome-flashback/libdesktop/gf-icon-view.c
index e72d9b5..f64073c 100644
--- a/gnome-flashback/libdesktop/gf-icon-view.c
+++ b/gnome-flashback/libdesktop/gf-icon-view.c
@@ -95,6 +95,8 @@ enum
ACTIVATE,
+ RENAME,
+
TRASH,
DELETE,
@@ -2023,6 +2025,17 @@ activate_cb (GfIconView *self,
gf_icon_open (GF_ICON (l->data));
}
+static void
+rename_cb (GfIconView *self,
+ gpointer user_data)
+{
+ if (self->selected_icons == NULL ||
+ g_list_length (self->selected_icons) != 1)
+ return;
+
+ gf_icon_rename (GF_ICON (self->selected_icons->data));
+}
+
static void
trash_cb (GfIconView *self,
gpointer user_data)
@@ -2615,6 +2628,11 @@ install_signals (void)
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
0, NULL, NULL, NULL, G_TYPE_NONE, 0);
+ view_signals[RENAME] =
+ g_signal_new ("rename", GF_TYPE_ICON_VIEW,
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
+
view_signals[TRASH] =
g_signal_new ("trash", GF_TYPE_ICON_VIEW,
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
@@ -2687,6 +2705,12 @@ add_bindings (GtkBindingSet *binding_set)
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Enter, modifiers,
"activate", 0);
+ /* Rename */
+
+ modifiers = 0;
+ gtk_binding_entry_add_signal (binding_set, GDK_KEY_F2, modifiers,
+ "rename", 0);
+
/* Trash */
modifiers = 0;
@@ -2782,6 +2806,7 @@ gf_icon_view_init (GfIconView *self)
g_signal_connect (self, "select-all", G_CALLBACK (select_all_cb), NULL);
g_signal_connect (self, "unselect-all", G_CALLBACK (unselect_all_cb), NULL);
g_signal_connect (self, "activate", G_CALLBACK (activate_cb), NULL);
+ g_signal_connect (self, "rename", G_CALLBACK (rename_cb), NULL);
g_signal_connect (self, "trash", G_CALLBACK (trash_cb), NULL);
g_signal_connect (self, "delete", G_CALLBACK (delete_cb), NULL);
g_signal_connect (self, "toggle", G_CALLBACK (toggle_cb), NULL);
diff --git a/gnome-flashback/libdesktop/gf-icon.c b/gnome-flashback/libdesktop/gf-icon.c
index b46ff02..a4c1adb 100644
--- a/gnome-flashback/libdesktop/gf-icon.c
+++ b/gnome-flashback/libdesktop/gf-icon.c
@@ -439,32 +439,7 @@ static void
rename_cb (GtkMenuItem *item,
GfIcon *self)
{
- GfIconPrivate *priv;
-
- priv = gf_icon_get_instance_private (self);
-
- g_assert (priv->popover == NULL);
- priv->popover = gf_rename_popover_new (GTK_WIDGET (self),
- gf_icon_get_file_type (self),
- gf_icon_get_name (self));
-
- g_signal_connect (priv->popover, "validate",
- G_CALLBACK (rename_validate_cb),
- self);
-
- g_signal_connect (priv->popover, "do-rename",
- G_CALLBACK (rename_do_rename_cb),
- self);
-
- g_signal_connect (priv->popover, "closed",
- G_CALLBACK (rename_closed_cb),
- self);
-
- g_signal_connect (priv->popover, "destroy",
- G_CALLBACK (rename_destroy_cb),
- self);
-
- gtk_popover_popup (GTK_POPOVER (priv->popover));
+ gf_icon_rename (self);
}
static void
@@ -581,6 +556,9 @@ create_popup_menu (GfIcon *self)
gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), item);
gtk_widget_show (item);
+ label = gtk_bin_get_child (GTK_BIN (item));
+ gtk_accel_label_set_accel (GTK_ACCEL_LABEL (label), GDK_KEY_F2, 0);
+
g_signal_connect (item, "activate",
G_CALLBACK (rename_cb),
self);
@@ -1589,6 +1567,40 @@ gf_icon_open (GfIcon *self)
g_free (uri);
}
+void
+gf_icon_rename (GfIcon *self)
+{
+ GfIconPrivate *priv;
+
+ if (!GF_ICON_GET_CLASS (self)->can_rename (self))
+ return;
+
+ priv = gf_icon_get_instance_private (self);
+
+ g_assert (priv->popover == NULL);
+ priv->popover = gf_rename_popover_new (GTK_WIDGET (self),
+ gf_icon_get_file_type (self),
+ gf_icon_get_name (self));
+
+ g_signal_connect (priv->popover, "validate",
+ G_CALLBACK (rename_validate_cb),
+ self);
+
+ g_signal_connect (priv->popover, "do-rename",
+ G_CALLBACK (rename_do_rename_cb),
+ self);
+
+ g_signal_connect (priv->popover, "closed",
+ G_CALLBACK (rename_closed_cb),
+ self);
+
+ g_signal_connect (priv->popover, "destroy",
+ G_CALLBACK (rename_destroy_cb),
+ self);
+
+ gtk_popover_popup (GTK_POPOVER (priv->popover));
+}
+
void
gf_icon_popup_menu (GfIcon *self)
{
diff --git a/gnome-flashback/libdesktop/gf-icon.h b/gnome-flashback/libdesktop/gf-icon.h
index ddfdf9a..399978c 100644
--- a/gnome-flashback/libdesktop/gf-icon.h
+++ b/gnome-flashback/libdesktop/gf-icon.h
@@ -75,6 +75,8 @@ gboolean gf_icon_get_selected (GfIcon *self);
void gf_icon_open (GfIcon *self);
+void gf_icon_rename (GfIcon *self);
+
void gf_icon_popup_menu (GfIcon *self);
void gf_icon_update (GfIcon *self);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]