diff options
author | Carlos Soriano <csoriano@gnome.org> | 2015-08-15 17:20:21 +0200 |
---|---|---|
committer | Carlos Soriano <csoriano@gnome.org> | 2015-08-16 14:53:54 +0200 |
commit | 328348c6f76bc72823c1a8464937b7f4208674d9 (patch) | |
tree | d901e2155586dd3d14d7e3d3f56f24b0fde2649c /libnautilus-private | |
parent | edaa65f4ee7d6219c0c6ca1cecdf84be2bc2a63d (diff) | |
download | nautilus-328348c6f76bc72823c1a8464937b7f4208674d9.tar.gz |
nautilus-view: use popover for renaming
Some users felt it quite disruptive to us a dialog, even
if the attention has to be on the name entry.
Also it's the way that GtkFileChooser implemented it
and it actually feels less disruptive and desigerns agreed
it works better.
So continue to use a dialog for the new folder creation, but use
a popover for renaming.
Diffstat (limited to 'libnautilus-private')
-rw-r--r-- | libnautilus-private/nautilus-canvas-container.c | 41 | ||||
-rw-r--r-- | libnautilus-private/nautilus-canvas-container.h | 1 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory.c | 22 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory.h | 2 |
4 files changed, 66 insertions, 0 deletions
diff --git a/libnautilus-private/nautilus-canvas-container.c b/libnautilus-private/nautilus-canvas-container.c index a2620dc81..d40b77abb 100644 --- a/libnautilus-private/nautilus-canvas-container.c +++ b/libnautilus-private/nautilus-canvas-container.c @@ -6380,6 +6380,47 @@ nautilus_canvas_container_get_icon_locations (NautilusCanvasContainer *container return result; } +/* Returns an array of GdkRectangles of the icons. */ +static GArray * +nautilus_canvas_container_get_icons_bounding_box (NautilusCanvasContainer *container, + GList *icons) +{ + GArray *result; + GList *node; + int index; + int x1, x2, y1, y2; + + result = g_array_new (FALSE, TRUE, sizeof (GdkRectangle)); + result = g_array_set_size (result, g_list_length (icons)); + + for (index = 0, node = icons; node != NULL; index++, node = node->next) { + icon_get_bounding_box ((NautilusCanvasIcon *)node->data, + &x1, &y1, &x2, &y2, + BOUNDS_USAGE_FOR_ENTIRE_ITEM); + g_array_index (result, GdkRectangle, index).x = x1; + g_array_index (result, GdkRectangle, index).width = x2 - x1; + g_array_index (result, GdkRectangle, index).y = y1; + g_array_index (result, GdkRectangle, index).height = y2 - y1; + } + + return result; +} + +GArray * +nautilus_canvas_container_get_selected_icons_bounding_box (NautilusCanvasContainer *container) +{ + GArray *result; + GList *icons; + + g_return_val_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container), NULL); + + icons = nautilus_canvas_container_get_selected_icons (container); + result = nautilus_canvas_container_get_icons_bounding_box (container, icons); + g_list_free (icons); + + return result; +} + /** * nautilus_canvas_container_get_selected_icon_locations: * @container: An canvas container widget. diff --git a/libnautilus-private/nautilus-canvas-container.h b/libnautilus-private/nautilus-canvas-container.h index 9519b4abe..711b3ea4b 100644 --- a/libnautilus-private/nautilus-canvas-container.h +++ b/libnautilus-private/nautilus-canvas-container.h @@ -270,6 +270,7 @@ void nautilus_canvas_container_invert_selection (NautilusCanvasContainer void nautilus_canvas_container_set_selection (NautilusCanvasContainer *view, GList *selection); GArray * nautilus_canvas_container_get_selected_icon_locations (NautilusCanvasContainer *view); +GArray * nautilus_canvas_container_get_selected_icons_bounding_box (NautilusCanvasContainer *container); gboolean nautilus_canvas_container_has_stretch_handles (NautilusCanvasContainer *container); gboolean nautilus_canvas_container_is_stretched (NautilusCanvasContainer *container); void nautilus_canvas_container_show_stretch_handles (NautilusCanvasContainer *container); diff --git a/libnautilus-private/nautilus-directory.c b/libnautilus-private/nautilus-directory.c index 4f408080a..e150e8106 100644 --- a/libnautilus-private/nautilus-directory.c +++ b/libnautilus-private/nautilus-directory.c @@ -1447,6 +1447,28 @@ nautilus_directory_contains_file (NautilusDirectory *directory, return NAUTILUS_DIRECTORY_CLASS (G_OBJECT_GET_CLASS (directory))->contains_file (directory, file); } +NautilusFile* +nautilus_directory_get_file_by_name (NautilusDirectory *directory, + const gchar *name) +{ + GList *files; + GList *l; + NautilusFile *result = NULL; + + files = nautilus_directory_get_file_list (directory); + + for (l = files; l != NULL; l = l->next) { + if (nautilus_file_compare_display_name (l->data, name) == 0) { + result = nautilus_file_ref (l->data); + break; + } + } + + nautilus_file_list_free (files); + + return result; +} + void nautilus_directory_call_when_ready (NautilusDirectory *directory, NautilusFileAttributes file_attributes, diff --git a/libnautilus-private/nautilus-directory.h b/libnautilus-private/nautilus-directory.h index 46040d7d1..5f6c0cdd8 100644 --- a/libnautilus-private/nautilus-directory.h +++ b/libnautilus-private/nautilus-directory.h @@ -167,6 +167,8 @@ GFile * nautilus_directory_get_location (NautilusDirector gboolean nautilus_directory_contains_file (NautilusDirectory *directory, NautilusFile *file); +NautilusFile* nautilus_directory_get_file_by_name (NautilusDirectory *directory, + const gchar *name); /* Get (and ref) a NautilusFile object for this directory. */ NautilusFile * nautilus_directory_get_corresponding_file (NautilusDirectory *directory); |