Merge lp:~jmiguelbenitez/pantheon-files/fix-1173778 into lp:~elementary-apps/pantheon-files/trunk

Proposed by José M. Benítez
Status: Merged
Approved by: Cody Garver
Approved revision: 1404
Merged at revision: 1431
Proposed branch: lp:~jmiguelbenitez/pantheon-files/fix-1173778
Merge into: lp:~elementary-apps/pantheon-files/trunk
Diff against target: 146 lines (+23/-27)
5 files modified
libcore/marlin-file-utilities.c (+9/-1)
libcore/marlin-file-utilities.h (+2/-0)
src/fm-abstract-icon-view.c (+2/-6)
src/fm-columns-view.c (+5/-8)
src/fm-list-view.c (+5/-12)
To merge this branch: bzr merge lp:~jmiguelbenitez/pantheon-files/fix-1173778
Reviewer Review Type Date Requested Status
Jeremy Wootten Approve
Review via email: mp+200962@code.launchpad.net

Commit message

A folder with dots in its name is not treated as a file when renamed to fix bug #1173778

Description of the change

Fix for bug #1173778 (Renaming folders with dots in name treats them as file with extension).

To post a comment you must log in.
Revision history for this message
Jeremy Wootten (jeremywootten) wrote :

The branch works as described and no side effects found.

However, the code is indented with tabs instead of spaces, which is against the coding guidelines.

Also, the solution does not make use of the existing "select_all" parameter and repeats code three times for the three different views.

I suggest writing a single function that all three views can access. For example, in marlin_file_utilities:

void
marlin_get_rename_region (const char *filename, int *start_offset, int *end_offset, gboolean select_all)
{
        if (select_all) {
            *start_offset = 0;
            *end_offset = g_utf8_strlen (filename, -1);
        } else
            eel_filename_get_rename_region (filename, start_offset, end_offset);
}

Then in each view:

    if (icon_view->details->editable_widget != NULL) {
        marlin_get_rename_region (icon_view->details->original_name, &start_offset, &end_offset, select_all);
        gtk_editable_select_region (GTK_EDITABLE (icon_view->details->editable_widget),
                                    start_offset, end_offset);
    }

review: Needs Fixing
1403. By José M. Benítez

Some refactor to avoid duplicating code.

Revision history for this message
José M. Benítez (jmiguelbenitez) wrote :

Thanks for the suggestion, Jeremy. Now this looks so much better.

1404. By José M. Benítez

Tabs replaced by whitespaces.

Revision history for this message
Jeremy Wootten (jeremywootten) wrote :

Thanks José!

This is good to go now.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'libcore/marlin-file-utilities.c'
2--- libcore/marlin-file-utilities.c 2013-09-09 03:08:16 +0000
3+++ libcore/marlin-file-utilities.c 2014-02-17 00:57:15 +0000
4@@ -142,4 +142,12 @@
5 gof_file_list_free (unhandled_files);
6 }
7
8-
9+void
10+marlin_get_rename_region (const char *filename, int *start_offset, int *end_offset, gboolean select_all)
11+{
12+ if (select_all) {
13+ *start_offset = 0;
14+ *end_offset = g_utf8_strlen (filename, -1);
15+ } else
16+ eel_filename_get_rename_region (filename, start_offset, end_offset);
17+}
18
19=== modified file 'libcore/marlin-file-utilities.h'
20--- libcore/marlin-file-utilities.h 2012-06-06 23:03:49 +0000
21+++ libcore/marlin-file-utilities.h 2014-02-17 00:57:15 +0000
22@@ -31,4 +31,6 @@
23
24 void marlin_restore_files_from_trash (GList *files, GtkWindow *parent_window);
25
26+void marlin_get_rename_region (const char *filename, int *start_offset, int *end_offset, gboolean select_all);
27+
28 #endif /* MARLIN_FILE_UTILITIES_H */
29
30=== modified file 'src/fm-abstract-icon-view.c'
31--- src/fm-abstract-icon-view.c 2013-09-28 11:29:18 +0000
32+++ src/fm-abstract-icon-view.c 2014-02-17 00:57:15 +0000
33@@ -399,9 +399,7 @@
34
35 icon_view = FM_ABSTRACT_ICON_VIEW (view);
36
37- //g_message ("%s\n", G_STRFUNC);
38 /* Select all if we are in renaming mode already */
39- //if (icon_view->details->file_name_column && icon_view->details->editable_widget) {
40 if (icon_view->details->editable_widget) {
41 gtk_editable_select_region (GTK_EDITABLE (icon_view->details->editable_widget),
42 0, -1);
43@@ -424,7 +422,7 @@
44 /* set cursor also triggers editing-started, where we save the editable widget */
45 /*gtk_tree_view_set_cursor (icon_view->tree, path,
46 icon_view->details->file_name_column, TRUE);*/
47- /* sound like set_cursor is not enought to trigger editing-started, we use cursor_on_cell instead */
48+ /* sound like set_cursor is not enough to trigger editing-started, we use cursor_on_cell instead */
49 exo_icon_view_set_cursor (icon_view->icons, path,
50 view->name_renderer,
51 TRUE);
52@@ -434,9 +432,7 @@
53 TRUE);*/
54
55 if (icon_view->details->editable_widget != NULL) {
56- eel_filename_get_rename_region (icon_view->details->original_name,
57- &start_offset, &end_offset);
58-
59+ marlin_get_rename_region (icon_view->details->original_name, &start_offset, &end_offset, select_all);
60 gtk_editable_select_region (GTK_EDITABLE (icon_view->details->editable_widget),
61 start_offset, end_offset);
62 }
63
64=== modified file 'src/fm-columns-view.c'
65--- src/fm-columns-view.c 2013-09-27 09:35:51 +0000
66+++ src/fm-columns-view.c 2014-02-17 00:57:15 +0000
67@@ -287,7 +287,6 @@
68
69 col_view = FM_COLUMNS_VIEW (view);
70
71- g_message ("%s", G_STRFUNC);
72 /* Select all if we are in renaming mode already */
73 if (col_view->details->file_name_column && col_view->details->editable_widget) {
74 gtk_editable_select_region (GTK_EDITABLE (col_view->details->editable_widget),
75@@ -310,19 +309,17 @@
76 /* set cursor also triggers editing-started, where we save the editable widget */
77 /*gtk_tree_view_set_cursor (col_view->tree, path,
78 col_view->details->file_name_column, TRUE);*/
79- /* sound like set_cursor is not enought to trigger editing-started, we use cursor_on_cell instead */
80+ /* sound like set_cursor is not enough to trigger editing-started, we use cursor_on_cell instead */
81 gtk_tree_view_set_cursor_on_cell (col_view->tree, path,
82 col_view->details->file_name_column,
83 (GtkCellRenderer *) col_view->details->file_name_cell,
84 TRUE);
85
86- if (col_view->details->editable_widget != NULL) {
87- eel_filename_get_rename_region (col_view->details->original_name,
88- &start_offset, &end_offset);
89-
90- gtk_editable_select_region (GTK_EDITABLE (col_view->details->editable_widget),
91+ if (col_view->details->editable_widget != NULL) {
92+ marlin_get_rename_region (col_view->details->original_name, &start_offset, &end_offset, select_all);
93+ gtk_editable_select_region (GTK_EDITABLE (col_view->details->editable_widget),
94 start_offset, end_offset);
95- }
96+ }
97
98 gtk_tree_path_free (path);
99 }
100
101=== modified file 'src/fm-list-view.c'
102--- src/fm-list-view.c 2014-01-11 14:53:35 +0000
103+++ src/fm-list-view.c 2014-02-17 00:57:15 +0000
104@@ -321,7 +321,6 @@
105 }
106
107 if (!fm_list_model_get_first_iter_for_file (list_view->model, file, &iter)) {
108- g_debug ("%s FAILED", G_STRFUNC);
109 return;
110 }
111
112@@ -330,29 +329,23 @@
113
114 path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_view->model), &iter);
115
116- /* Make filename-cells editable. */
117- g_object_set (G_OBJECT (list_view->details->file_name_cell),
118- "editable", TRUE, NULL);
119-
120 gtk_tree_view_scroll_to_cell (list_view->tree, NULL,
121 list_view->details->file_name_column,
122 TRUE, 0.0, 0.0);
123 /* set cursor also triggers editing-started, where we save the editable widget */
124 /*gtk_tree_view_set_cursor (list_view->tree, path,
125 list_view->details->file_name_column, TRUE);*/
126- /* sound like set_cursor is not enought to trigger editing-started, we use cursor_on_cell instead */
127+ /* sound like set_cursor is not enough to trigger editing-started, we use cursor_on_cell instead */
128 gtk_tree_view_set_cursor_on_cell (list_view->tree, path,
129 list_view->details->file_name_column,
130 (GtkCellRenderer *) list_view->details->file_name_cell,
131 TRUE);
132
133- if (list_view->details->editable_widget != NULL) {
134- eel_filename_get_rename_region (list_view->details->original_name,
135- &start_offset, &end_offset);
136-
137- gtk_editable_select_region (GTK_EDITABLE (list_view->details->editable_widget),
138+ if (list_view->details->editable_widget != NULL) {
139+ marlin_get_rename_region (list_view->details->original_name, &start_offset, &end_offset, select_all);
140+ gtk_editable_select_region (GTK_EDITABLE (list_view->details->editable_widget),
141 start_offset, end_offset);
142- }
143+ }
144
145 gtk_tree_path_free (path);
146 }

Subscribers

People subscribed via source and target branches

to all changes: