[nautilus] batch-rename-dialog: use positions for tag handling
- From: Carlos Soriano Sánchez <csoriano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] batch-rename-dialog: use positions for tag handling
- Date: Tue, 13 Sep 2016 21:10:11 +0000 (UTC)
commit 7fb5aa77c904905e9af7e34b5f3a1dbd4dc66b4f
Author: Carlos Soriano <csoriano gnome org>
Date: Tue Sep 13 22:45:46 2016 +0200
batch-rename-dialog: use positions for tag handling
When a tag is added, deleted or moved or a text is changed, inserted
or deleted, we need to do update the text and tags already present
based on what changed.
We were checking whether a tag was present or not matching with the
text rather than deterministically adding, removing or updating the
positions based on the direct user interaction.
Doing it in this way is a potential problem since two tags added
writing manually would confuse the underlying handling, apart of being
harder to have a consistent state of the tags like deleting multiple
tags at once, deleting tags with text on the sides when selected,
replacing tags with text, crashes when using overwrite mode instead of
insertion mode, or crashes when using modifiers. Apart of making the
handling more complex.
This patch refactors the tag handling for using positions and direct
manipulation of them instead of text.
https://bugzilla.gnome.org/show_bug.cgi?id=771069
src/nautilus-batch-rename-dialog.c | 492 ++++++++--------------
src/resources/ui/nautilus-batch-rename-dialog.ui | 4 +-
2 files changed, 180 insertions(+), 316 deletions(-)
---
diff --git a/src/nautilus-batch-rename-dialog.c b/src/nautilus-batch-rename-dialog.c
index 837bd32..184b5ac 100644
--- a/src/nautilus-batch-rename-dialog.c
+++ b/src/nautilus-batch-rename-dialog.c
@@ -101,12 +101,6 @@ struct _NautilusBatchRenameDialog
gint row_height;
gboolean rename_clicked;
-
- /* the numbers of characters from the name entry */
- gint name_entry_characters;
- gboolean tags_deleted;
- gint cursor_position;
- gboolean use_manual_cursor_position;
};
typedef struct
@@ -114,8 +108,6 @@ typedef struct
gboolean available;
gboolean set;
gint position;
- gint original_position;
- gint new_position;
/* if the tag was just added, then we shouldn't update it's position */
gboolean just_added;
TagConstants tag_constants;
@@ -198,10 +190,15 @@ add_tag (NautilusBatchRenameDialog *self,
tag_data->just_added = TRUE;
tag_data->position = cursor_position;
+ /* FIXME: We can add a tag when the cursor is inside a tag, which breaks this.
+ * We need to check the cursor movement and update the actions acordingly or
+ * even better add the tag at the end of the previous tag if this happens.
+ */
gtk_editable_insert_text (GTK_EDITABLE (self->name_entry),
tag_text_representation,
g_utf8_strlen (tag_text_representation, -1),
&cursor_position);
+ tag_data->just_added = FALSE;
gtk_editable_set_position (GTK_EDITABLE (self->name_entry), cursor_position);
gtk_entry_grab_focus_without_selecting (GTK_ENTRY (self->name_entry));
@@ -322,8 +319,8 @@ row_selected (GtkListBox *box,
}
static gint
-compare_tag_position (gconstpointer a,
- gconstpointer b)
+compare_int (gconstpointer a,
+ gconstpointer b)
{
int *number1 = (int *) a;
int *number2 = (int *) b;
@@ -366,7 +363,7 @@ split_entry_text (NautilusBatchRenameDialog *self,
}
}
- g_array_sort (tag_positions, compare_tag_position);
+ g_array_sort (tag_positions, compare_int);
for (i = 0; i < tags; i++)
{
@@ -1354,54 +1351,6 @@ file_names_list_has_duplicates_async (NautilusBatchRenameDialog *dialog,
g_task_run_in_thread (task, file_names_list_has_duplicates_async_thread);
}
-static void
-update_tags (NautilusBatchRenameDialog *dialog)
-{
- TagData *tag_data;
- const gchar *entry_text;
- g_autoptr (GList) tag_info_keys = NULL;
- GList *l;
- gint character_difference;
- gint cursor_position;
-
- entry_text = gtk_entry_get_text (GTK_ENTRY (dialog->name_entry));
-
- if (dialog->use_manual_cursor_position)
- {
- gtk_editable_set_position (GTK_EDITABLE (dialog->name_entry),
- dialog->cursor_position);
- }
-
- if (dialog->tags_deleted)
- {
- dialog->tags_deleted = FALSE;
- gtk_editable_set_position (GTK_EDITABLE (dialog->name_entry),
- g_utf8_strlen (entry_text, -1));
- }
-
- g_object_get (dialog->name_entry, "cursor-position", &cursor_position, NULL);
-
- character_difference = g_utf8_strlen (entry_text, -1) - dialog->name_entry_characters;
- dialog->name_entry_characters = g_utf8_strlen (entry_text, -1);
-
- tag_info_keys = g_hash_table_get_keys (dialog->tag_info_table);
- for (l = tag_info_keys; l != NULL; l = l->next)
- {
- tag_data = g_hash_table_lookup (dialog->tag_info_table, l->data);
- if (tag_data->just_added)
- {
- tag_data->just_added = FALSE;
- }
- else
- {
- if (tag_data->set && cursor_position <= tag_data->position)
- {
- tag_data->position += character_difference;
- }
- }
- }
-}
-
static gboolean
have_unallowed_character (NautilusBatchRenameDialog *dialog)
{
@@ -1542,7 +1491,7 @@ update_display_text (NautilusBatchRenameDialog *dialog)
dialog->duplicates = NULL;
}
- update_tags (dialog);
+ //update_tags (dialog);
if (dialog->new_names != NULL)
{
@@ -1573,12 +1522,6 @@ update_display_text (NautilusBatchRenameDialog *dialog)
}
static void
-file_names_widget_entry_on_changed (NautilusBatchRenameDialog *dialog)
-{
- update_display_text (dialog);
-}
-
-static void
batch_rename_dialog_mode_changed (NautilusBatchRenameDialog *dialog)
{
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->format_mode_button)))
@@ -1831,293 +1774,219 @@ file_names_widget_on_activate (NautilusBatchRenameDialog *dialog)
prepare_batch_rename (dialog);
}
-static gboolean
+static void
remove_tag (NautilusBatchRenameDialog *dialog,
- const gchar *tag_name,
- const gchar *action_name,
- gint keyval,
- gboolean is_modifier)
+ TagData *tag_data)
{
- TagData *tag_data;
- gint cursor_position;
- GString *new_entry_text;
- GString *entry_text;
- gboolean delete_tag;
GAction *action;
- delete_tag = FALSE;
-
- g_object_get (dialog->name_entry, "cursor-position", &cursor_position, NULL);
- tag_data = g_hash_table_lookup (dialog->tag_info_table, tag_name);
- entry_text = g_string_new (gtk_entry_get_text (GTK_ENTRY (dialog->name_entry)));
-
if (!tag_data->set)
{
- return FALSE;
- }
-
- if (keyval == GDK_KEY_BackSpace)
- {
- if (cursor_position > tag_data->position &&
- cursor_position <= tag_data->position + g_utf8_strlen (tag_name, -1))
- {
- delete_tag = TRUE;
- }
- }
-
- if (keyval == GDK_KEY_Delete)
- {
- if (cursor_position >= tag_data->position &&
- cursor_position < tag_data->position + g_utf8_strlen (tag_name, -1))
- {
- delete_tag = TRUE;
- }
- }
+ g_warning ("Trying to remove an already removed tag");
- if (!is_modifier &&
- keyval != GDK_KEY_Left &&
- keyval != GDK_KEY_Right &&
- keyval != GDK_KEY_Delete &&
- keyval != GDK_KEY_Return &&
- keyval != GDK_KEY_Escape &&
- keyval != GDK_KEY_Tab &&
- keyval != GDK_KEY_End &&
- keyval != GDK_KEY_Home)
- {
- if (cursor_position > tag_data->position &&
- cursor_position < tag_data->position + g_utf8_strlen (tag_name, -1))
- {
- delete_tag = TRUE;
- }
+ return;
}
- if (delete_tag)
- {
- action = g_action_map_lookup_action (G_ACTION_MAP (dialog->action_group),
- action_name);
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), TRUE);
-
- new_entry_text = g_string_new ("");
- new_entry_text = g_string_append_len (new_entry_text,
- entry_text->str,
- tag_data->position);
- new_entry_text = g_string_append (new_entry_text,
- g_utf8_offset_to_pointer (entry_text->str,
- tag_data->position + g_utf8_strlen
(tag_name, -1)));
-
- tag_data->set = FALSE;
- dialog->cursor_position = tag_data->position;
- dialog->use_manual_cursor_position = TRUE;
- gtk_entry_set_text (GTK_ENTRY (dialog->name_entry), new_entry_text->str);
- gtk_editable_set_position (GTK_EDITABLE (dialog->name_entry), tag_data->position);
- dialog->use_manual_cursor_position = FALSE;
-
- g_string_free (new_entry_text, TRUE);
- g_string_free (entry_text, TRUE);
+ tag_data->set = FALSE;
+ tag_data->position = -1;
+ action = g_action_map_lookup_action (G_ACTION_MAP (dialog->action_group),
+ tag_data->tag_constants.action_name);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), TRUE);
+}
- return TRUE;
- }
+static gint
+compare_tag_position (gconstpointer a,
+ gconstpointer b)
+{
+ const TagData *tag_data1 = a;
+ const TagData *tag_data2 = b;
- return FALSE;
+ return tag_data1->position - tag_data2->position;
}
-static GString *
-remove_tag_selection (NautilusBatchRenameDialog *dialog,
- GString *old_entry_text,
- const gchar *action_name,
- const gchar *tag_name,
- gint start,
- gint end)
+typedef enum
+{
+ TEXT_WAS_DELETED,
+ TEXT_WAS_INSERTED
+} TextChangedMode;
+
+static GList*
+get_tags_intersecting_sorted (NautilusBatchRenameDialog *self,
+ gint start_position,
+ gint end_position,
+ TextChangedMode text_changed_mode)
{
+ g_autoptr (GList) tag_info_keys = NULL;
TagData *tag_data;
- GAction *action;
- GString *new_entry_text;
-
- new_entry_text = NULL;
-
- tag_data = g_hash_table_lookup (dialog->tag_info_table, tag_name);
+ GList *l;
+ GList *intersecting_tags = NULL;
+ gint tag_end_position;
- if (tag_data->set && tag_data->original_position < end &&
- tag_data->original_position + g_utf8_strlen (tag_name, -1) > start)
+ tag_info_keys = g_hash_table_get_keys (self->tag_info_table);
+ for (l = tag_info_keys; l != NULL; l = l->next)
{
- new_entry_text = g_string_new ("");
- new_entry_text = g_string_append_len (new_entry_text,
- old_entry_text->str,
- tag_data->new_position);
- new_entry_text = g_string_append (new_entry_text,
- g_utf8_offset_to_pointer (old_entry_text->str,
- tag_data->new_position + g_utf8_strlen
(tag_name, -1)));
+ g_autofree gchar *tag_text_representation = NULL;
- tag_data->set = FALSE;
+ tag_data = g_hash_table_lookup (self->tag_info_table, l->data);
+ tag_text_representation = batch_rename_get_tag_text_representation (tag_data->tag_constants);
+ tag_end_position = tag_data->position + g_utf8_strlen (tag_text_representation, -1);
+ if (tag_data->set && !tag_data->just_added)
+ {
+ gboolean selection_intersects_tag_start;
+ gboolean selection_intersects_tag_end;
+ gboolean tag_is_contained_in_selection;
- action = g_action_map_lookup_action (G_ACTION_MAP (dialog->action_group),
- action_name);
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), TRUE);
- }
+ if (text_changed_mode == TEXT_WAS_DELETED)
+ {
+ selection_intersects_tag_start = end_position > tag_data->position &&
+ end_position <= tag_end_position;
+ selection_intersects_tag_end = start_position >= tag_data->position &&
+ start_position < tag_end_position;
+ tag_is_contained_in_selection = start_position <= tag_data->position &&
+ end_position >= tag_end_position;
+ }
+ else
+ {
+ selection_intersects_tag_start = start_position > tag_data->position &&
+ start_position < tag_end_position;
+ selection_intersects_tag_end = FALSE;
+ tag_is_contained_in_selection = FALSE;
- if (new_entry_text == NULL)
- {
- return g_string_new (old_entry_text->str);
+ }
+ if (selection_intersects_tag_end || selection_intersects_tag_start ||
tag_is_contained_in_selection)
+ {
+ intersecting_tags = g_list_prepend (intersecting_tags, tag_data);
+ }
+ }
}
- return new_entry_text;
+
+ return g_list_sort (intersecting_tags, compare_tag_position);
}
static void
-update_tag_position (NautilusBatchRenameDialog *dialog,
- const gchar *tag_name,
- GString *new_entry_text)
+update_tags_positions (NautilusBatchRenameDialog *self,
+ gint start_position,
+ gint end_position,
+ TextChangedMode text_changed_mode)
{
+ g_autoptr (GList) tag_info_keys = NULL;
TagData *tag_data;
+ GList *l;
- tag_data = g_hash_table_lookup (dialog->tag_info_table, tag_name);
-
- if (tag_data->set)
+ tag_info_keys = g_hash_table_get_keys (self->tag_info_table);
+ for (l = tag_info_keys; l != NULL; l = l->next)
{
- tag_data->original_position = tag_data->position;
- tag_data->new_position = g_utf8_pointer_to_offset (new_entry_text->str,
- g_strrstr (new_entry_text->str, tag_name));
+ tag_data = g_hash_table_lookup (self->tag_info_table, l->data);
+ if (tag_data->set && !tag_data->just_added && tag_data->position >= start_position)
+ {
+ if (text_changed_mode == TEXT_WAS_DELETED)
+ {
+ tag_data->position -= end_position - start_position;
+ }
+ else
+ {
+ tag_data->position += end_position - start_position;
+ }
+ }
}
}
-static gboolean
-on_key_press_event (GtkWidget *widget,
- GdkEventKey *event,
- gpointer user_data)
+static void
+on_delete_text (GtkEditable *editable,
+ gint start_position,
+ gint end_position,
+ gpointer user_data)
{
- NautilusBatchRenameDialog *dialog;
- gint keyval;
- GdkEvent *gdk_event;
- GString *old_entry_text;
- GString *new_entry_text;
- gboolean entry_has_selection;
- gint start;
- gint end;
- g_autoptr (GList) tag_info_keys = NULL;
+ NautilusBatchRenameDialog *self;
+ g_autoptr (GList) intersecting_tags = NULL;
+ gint final_start_position;
+ gint final_end_position;
GList *l;
- gboolean tag_removed = FALSE;
- TagData *tag_data;
- const gchar *action_name;
- gint minimum_tag_position;
- gdk_event = (GdkEvent *) event;
- dialog = NAUTILUS_BATCH_RENAME_DIALOG (user_data);
- keyval = event->keyval;
- tag_info_keys = g_hash_table_get_keys (dialog->tag_info_table);
- entry_has_selection = (gtk_editable_get_selection_bounds (GTK_EDITABLE (dialog->name_entry),
- &start,
- &end));
+ self = NAUTILUS_BATCH_RENAME_DIALOG (user_data);
+ intersecting_tags = get_tags_intersecting_sorted (self, start_position,
+ end_position, TEXT_WAS_DELETED);
+ if (intersecting_tags)
+ {
+ gint last_tag_end_position;
+ g_autofree gchar *tag_text_representation = NULL;
+ TagData *first_tag = g_list_first (intersecting_tags)->data;
+ TagData *last_tag = g_list_last (intersecting_tags)->data;
- if (event->state & GDK_CONTROL_MASK)
+ tag_text_representation = batch_rename_get_tag_text_representation (last_tag->tag_constants);
+ last_tag_end_position = last_tag->position +
+ g_utf8_strlen (tag_text_representation, -1);
+ final_start_position = MIN (start_position, first_tag->position);
+ final_end_position = MAX (end_position, last_tag_end_position);
+ }
+ else
{
- return GDK_EVENT_PROPAGATE;
+ final_start_position = start_position;
+ final_end_position = end_position;
}
+ g_signal_handlers_block_by_func (editable, (gpointer) on_delete_text, user_data);
+ gtk_editable_delete_text (editable, final_start_position, final_end_position);
+ g_signal_handlers_unblock_by_func (editable, (gpointer) on_delete_text, user_data);
- if (entry_has_selection &&
- ((keyval == GDK_KEY_Delete || keyval == GDK_KEY_BackSpace) ||
- (!gdk_event->key.is_modifier &&
- keyval != GDK_KEY_Left &&
- keyval != GDK_KEY_Right &&
- keyval != GDK_KEY_Return &&
- keyval != GDK_KEY_Escape &&
- keyval != GDK_KEY_Tab &&
- keyval != GDK_KEY_End &&
- keyval != GDK_KEY_Home)))
+ /* Mark the tags as removed */
+ for (l = intersecting_tags; l != NULL; l = l->next)
{
- old_entry_text = g_string_new (gtk_entry_get_text (GTK_ENTRY (dialog->name_entry)));
-
- minimum_tag_position = G_MAXINT;
-
- for (l = tag_info_keys; l != NULL; l = l->next)
- {
- g_autofree gchar *tag_text_representation = NULL;
+ remove_tag (self, l->data);
+ }
- tag_data = g_hash_table_lookup (dialog->tag_info_table, l->data);
- tag_text_representation = batch_rename_get_tag_text_representation (tag_data->tag_constants);
- if (tag_data->set)
- {
- update_tag_position (dialog, tag_text_representation, old_entry_text);
- new_entry_text = remove_tag_selection (dialog,
- old_entry_text,
- tag_data->tag_constants.action_name,
- tag_text_representation,
- start,
- end);
-
- if (!g_string_equal (new_entry_text, old_entry_text))
- {
- if (tag_data->position < minimum_tag_position)
- {
- minimum_tag_position = tag_data->position;
- }
-
- tag_removed = TRUE;
- }
- g_string_free (old_entry_text, TRUE);
- old_entry_text = new_entry_text;
- }
- }
+ /* If we removed the numbering tag, we want to enable all numbering actions */
+ if (!numbering_tag_is_some_added (self))
+ {
+ guint i;
- /* If we removed the numbering tag, we want to enable all numbering actions */
- if (!numbering_tag_is_some_added (dialog))
+ for (i = 0; i < G_N_ELEMENTS (numbering_tags_constants); i++)
{
- guint i;
-
- for (i = 0; i < G_N_ELEMENTS (numbering_tags_constants); i++)
- {
- enable_action (dialog, numbering_tags_constants[i].action_name);
- }
+ enable_action (self, numbering_tags_constants[i].action_name);
}
+ }
- if (minimum_tag_position != G_MAXINT)
- {
- dialog->use_manual_cursor_position = TRUE;
- dialog->cursor_position = minimum_tag_position;
+ update_tags_positions (self, final_start_position,
+ final_end_position, TEXT_WAS_DELETED);
+ update_display_text (self);
- gtk_entry_set_text (GTK_ENTRY (dialog->name_entry), new_entry_text->str);
- gtk_editable_set_position (GTK_EDITABLE (dialog->name_entry), minimum_tag_position);
+ g_signal_stop_emission_by_name (editable, "delete-text");
+}
- dialog->use_manual_cursor_position = FALSE;
+static void
+on_insert_text (GtkEditable *editable,
+ const gchar *new_text,
+ gint new_text_length,
+ gpointer position,
+ gpointer user_data)
+{
+ NautilusBatchRenameDialog *self;
+ gint start_position;
+ gint end_position;
+ g_autoptr (GList) intersecting_tags = NULL;
- g_string_free (new_entry_text, TRUE);
- }
- }
- else
+ self = NAUTILUS_BATCH_RENAME_DIALOG (user_data);
+ start_position = *(int *)position;
+ end_position = start_position + g_utf8_strlen (new_text, -1);
+ intersecting_tags = get_tags_intersecting_sorted (self, start_position,
+ end_position, TEXT_WAS_INSERTED);
+ if (!intersecting_tags)
{
- for (l = tag_info_keys; l != NULL; l = l->next)
- {
- g_autofree gchar *tag_text_representation = NULL;
-
- tag_data = g_hash_table_lookup (dialog->tag_info_table, l->data);
- action_name = tag_data->tag_constants.action_name;
- tag_text_representation = batch_rename_get_tag_text_representation (tag_data->tag_constants);
- if (remove_tag (dialog, tag_text_representation, action_name,
- keyval, gdk_event->key.is_modifier))
- {
- tag_removed = TRUE;
-
- break;
- }
- }
+ g_signal_handlers_block_by_func (editable, (gpointer) on_insert_text, user_data);
+ gtk_editable_insert_text (editable, new_text, new_text_length, position);
+ g_signal_handlers_unblock_by_func (editable, (gpointer) on_insert_text, user_data);
- /* If we removed the numbering tag, we want to enable all numbering actions */
- if (!numbering_tag_is_some_added (dialog))
- {
- guint i;
-
- for (i = 0; i < G_N_ELEMENTS (numbering_tags_constants); i++)
- {
- enable_action (dialog, numbering_tags_constants[i].action_name);
- }
- }
+ update_tags_positions (self, start_position, end_position, TEXT_WAS_INSERTED);
+ update_display_text (self);
}
- if ((keyval == GDK_KEY_Delete || keyval == GDK_KEY_BackSpace) && tag_removed)
- {
- return GDK_EVENT_STOP;
- }
+ g_signal_stop_emission_by_name (editable, "insert-text");
+}
- return GDK_EVENT_PROPAGATE;
+static void
+file_names_widget_entry_on_changed (NautilusBatchRenameDialog *self)
+{
+ update_display_text (self);
}
static void
@@ -2208,8 +2077,8 @@ nautilus_batch_rename_dialog_class_init (NautilusBatchRenameDialogClass *klass)
gtk_widget_class_bind_template_child (widget_class, NautilusBatchRenameDialog, add_tag_menu);
gtk_widget_class_bind_template_child (widget_class, NautilusBatchRenameDialog, numbering_label);
- gtk_widget_class_bind_template_callback (widget_class, file_names_widget_entry_on_changed);
gtk_widget_class_bind_template_callback (widget_class, file_names_widget_on_activate);
+ gtk_widget_class_bind_template_callback (widget_class, file_names_widget_entry_on_changed);
gtk_widget_class_bind_template_callback (widget_class, batch_rename_dialog_mode_changed);
gtk_widget_class_bind_template_callback (widget_class, add_button_clicked);
gtk_widget_class_bind_template_callback (widget_class, add_popover_closed);
@@ -2218,7 +2087,8 @@ nautilus_batch_rename_dialog_class_init (NautilusBatchRenameDialogClass *klass)
gtk_widget_class_bind_template_callback (widget_class, select_next_conflict_up);
gtk_widget_class_bind_template_callback (widget_class, select_next_conflict_down);
gtk_widget_class_bind_template_callback (widget_class, batch_rename_dialog_on_response);
- gtk_widget_class_bind_template_callback (widget_class, on_key_press_event);
+ gtk_widget_class_bind_template_callback (widget_class, on_insert_text);
+ gtk_widget_class_bind_template_callback (widget_class, on_delete_text);
}
GtkWidget *
@@ -2265,6 +2135,8 @@ nautilus_batch_rename_dialog_new (GList *selection,
}
gtk_window_set_title (GTK_WINDOW (dialog), dialog_title->str);
+ add_tag (dialog, metadata_tags_constants[ORIGINAL_FILE_NAME]);
+
nautilus_batch_rename_dialog_initialize_actions (dialog);
update_display_text (dialog);
@@ -2333,32 +2205,24 @@ nautilus_batch_rename_dialog_init (NautilusBatchRenameDialog *self)
tag_data = g_new (TagData, 1);
tag_data->available = TRUE;
tag_data->set = FALSE;
- tag_data->position = 0;
+ tag_data->position = -1;
tag_data->tag_constants = numbering_tags_constants[i];
g_hash_table_insert (self->tag_info_table, g_strdup (tag_text_representation), tag_data);
}
for (i = 0; i < G_N_ELEMENTS (metadata_tags_constants); i++)
{
- gboolean is_original_name;
g_autofree gchar *tag_text_representation = NULL;
/* Only the original name is available and set at the start */
- is_original_name = metadata_tags_constants[i].metadata_type == ORIGINAL_FILE_NAME;
tag_text_representation = batch_rename_get_tag_text_representation (metadata_tags_constants[i]);
tag_data = g_new (TagData, 1);
- tag_data->available = is_original_name;
- tag_data->set = is_original_name;
- tag_data->position = 0;
+ tag_data->available = FALSE;
+ tag_data->set = FALSE;
+ tag_data->position = -1;
tag_data->tag_constants = metadata_tags_constants[i];
g_hash_table_insert (self->tag_info_table, g_strdup (tag_text_representation), tag_data);
-
- if (is_original_name)
- {
- gtk_entry_set_text (GTK_ENTRY (self->name_entry), tag_text_representation);
- self->name_entry_characters = g_utf8_strlen (tag_text_representation, -1);
- }
}
self->row_height = -1;
diff --git a/src/resources/ui/nautilus-batch-rename-dialog.ui
b/src/resources/ui/nautilus-batch-rename-dialog.ui
index 4d4a6ec..d4bef6d 100644
--- a/src/resources/ui/nautilus-batch-rename-dialog.ui
+++ b/src/resources/ui/nautilus-batch-rename-dialog.ui
@@ -110,9 +110,9 @@
<property name="width_request">400</property>
<property name="hexpand">True</property>
<property name="activates-default">True</property>
- <signal name="changed" handler="file_names_widget_entry_on_changed"
swapped="yes" />
<signal name="activate" handler="file_names_widget_on_activate" swapped="yes" />
- <signal name="key-press-event" handler="on_key_press_event" swapped="no"/>
+ <signal name="insert-text" handler="on_insert_text" swapped="no" />
+ <signal name="delete-text" handler="on_delete_text" swapped="no" />
</object>
</child>
<child>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]