[nautilus] rename-file-popover-controller: consume ctrl-z
- From: Ernestas Kulik <ernestask src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] rename-file-popover-controller: consume ctrl-z
- Date: Tue, 8 Aug 2017 17:05:09 +0000 (UTC)
commit bf6b1e2c2f0cd3d882f99029af79a3439bdacec1
Author: Ernestas Kulik <ernestask gnome org>
Date: Tue Aug 8 13:35:11 2017 +0300
rename-file-popover-controller: consume ctrl-z
Pressing ctrl-z while renaming a file results in undoing the last
completed operation, which breaks expectations. This commit makes the
key combination revert the text in the name entry to the display name
of the target file.
https://bugzilla.gnome.org/show_bug.cgi?id=686023
src/nautilus-rename-file-popover-controller.c | 65 ++++++++++++++++--------
1 files changed, 43 insertions(+), 22 deletions(-)
---
diff --git a/src/nautilus-rename-file-popover-controller.c b/src/nautilus-rename-file-popover-controller.c
index 3a11c22..09d5d79 100644
--- a/src/nautilus-rename-file-popover-controller.c
+++ b/src/nautilus-rename-file-popover-controller.c
@@ -126,34 +126,16 @@ nautilus_rename_file_popover_controller_ignore_existing_file (NautilusFileNameWi
return nautilus_file_compare_display_name (self->target_file, display_name) == 0;
}
-/* Albeit a misnomer, this only handles presses of the F2 key.
- * This is to restore functionality, lost in the introduction of the popover,
- * where pressing F2 while renaming would select all text.
- * The bug reporter also requested switching between selecting the name
- * and the name with extension.
- *
- * See https://bugzilla.gnome.org/show_bug.cgi?id=774361
- */
static gboolean
-name_entry_on_key_pressed (GtkWidget *widget,
- GdkEvent *event,
- gpointer user_data)
+name_entry_on_f2_pressed (GtkWidget *widget,
+ NautilusRenameFilePopoverController *self)
{
- GdkEventKey *key_event;
- NautilusRenameFilePopoverController *self;
guint text_length;
gint start_pos;
gint end_pos;
gboolean all_selected;
- key_event = (GdkEventKey *)event;
- if (key_event->keyval != GDK_KEY_F2)
- {
- return GDK_EVENT_PROPAGATE;
- }
-
- self = NAUTILUS_RENAME_FILE_POPOVER_CONTROLLER (user_data);
- text_length = (guint)gtk_entry_get_text_length (GTK_ENTRY (widget));
+ text_length = (guint) gtk_entry_get_text_length (GTK_ENTRY (widget));
if (text_length == 0)
{
return GDK_EVENT_PROPAGATE;
@@ -162,7 +144,7 @@ name_entry_on_key_pressed (GtkWidget *widget,
gtk_editable_get_selection_bounds (GTK_EDITABLE (widget),
&start_pos, &end_pos);
- all_selected = (start_pos == 0) && ((guint)end_pos == text_length);
+ all_selected = (start_pos == 0) && ((guint) end_pos == text_length);
if (!all_selected || !nautilus_file_is_regular_file (self->target_file))
{
gtk_editable_select_region (GTK_EDITABLE (widget), 0, -1);
@@ -182,6 +164,45 @@ name_entry_on_key_pressed (GtkWidget *widget,
return GDK_EVENT_PROPAGATE;
}
+static gboolean
+name_entry_on_undo (GtkWidget *widget,
+ NautilusRenameFilePopoverController *self)
+{
+ g_autofree gchar *display_name = NULL;
+
+ display_name = nautilus_file_get_display_name (self->target_file);
+
+ gtk_entry_set_text (GTK_ENTRY (widget), display_name);
+
+ gtk_editable_select_region (GTK_EDITABLE (widget), 0, -1);
+
+ return GDK_EVENT_STOP;
+}
+
+static gboolean
+name_entry_on_key_pressed (GtkWidget *widget,
+ GdkEvent *event,
+ gpointer user_data)
+{
+ GdkEventKey *key_event;
+ NautilusRenameFilePopoverController *self;
+
+ key_event = (GdkEventKey *) event;
+ self = NAUTILUS_RENAME_FILE_POPOVER_CONTROLLER (user_data);
+
+ if (key_event->keyval == GDK_KEY_F2)
+ {
+ return name_entry_on_f2_pressed (widget, self);
+ }
+ else if (key_event->keyval == GDK_KEY_z &&
+ key_event->state == GDK_CONTROL_MASK)
+ {
+ return name_entry_on_undo (widget, self);
+ }
+
+ return GDK_EVENT_PROPAGATE;
+}
+
static void
target_file_on_changed (NautilusFile *file,
gpointer user_data)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]