diff options
Diffstat (limited to 'src/nautilus-list-view.c')
-rw-r--r-- | src/nautilus-list-view.c | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c index c39d2ca33..5ceb0c229 100644 --- a/src/nautilus-list-view.c +++ b/src/nautilus-list-view.c @@ -59,12 +59,6 @@ #define DEBUG_FLAG NAUTILUS_DEBUG_LIST_VIEW #include "nautilus-debug.h" -/* We use a rectangle to make the popover point to the right column. In an - * ideal world with GtkListBox we would just point to the GtkListBoxRow. In our case, we - * need to use a rectangle and we provide some width to not make the popover arrow pointy - * in the edges if the window is small */ -#define RENAME_POPOVER_RELATIVE_TO_RECTANGLE_WIDTH 40 - struct SelectionForeachData { GList *list; @@ -3708,39 +3702,33 @@ nautilus_list_view_get_id (NautilusFilesView *view) static GdkRectangle * nautilus_list_view_compute_rename_popover_pointing_to (NautilusFilesView *view) { - GtkTreeSelection *selection; - GtkTreePath *path; - GdkRectangle *rect; - GtkTreeModel *model; + NautilusListView *list_view; GtkTreeView *tree_view; + GtkTreeSelection *selection; GList *list; - NautilusListView *list_view; + GtkTreePath *path; + GdkRectangle *rect = g_malloc0 (sizeof (GdkRectangle)); - rect = g_malloc0 (sizeof (GdkRectangle)); list_view = NAUTILUS_LIST_VIEW (view); tree_view = list_view->details->tree_view; - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (list_view->details->tree_view)); - model = GTK_TREE_MODEL (list_view->details->model); - list = gtk_tree_selection_get_selected_rows (selection, &model); + selection = gtk_tree_view_get_selection (tree_view); + list = gtk_tree_selection_get_selected_rows (selection, NULL); path = list->data; - gtk_tree_view_get_cell_area (tree_view, path, NULL, rect); + gtk_tree_view_get_cell_area (tree_view, + path, + list_view->details->file_name_column, + rect); gtk_tree_view_convert_bin_window_to_widget_coords (tree_view, rect->x, rect->y, &rect->x, &rect->y); if (list_view->details->last_event_button_x > 0) { + /* Point to the position in the row where it was clicked. */ rect->x = list_view->details->last_event_button_x; + /* Make it zero width to point exactly at rect->x.*/ + rect->width = 0; } - else - { - rect->x = CLAMP (gtk_tree_view_column_get_width (list_view->details->file_name_column) * 0.5 - - RENAME_POPOVER_RELATIVE_TO_RECTANGLE_WIDTH * 0.5, - 0, - gtk_tree_view_column_get_width (list_view->details->file_name_column) - - RENAME_POPOVER_RELATIVE_TO_RECTANGLE_WIDTH); - } - rect->width = RENAME_POPOVER_RELATIVE_TO_RECTANGLE_WIDTH; g_list_free_full (list, (GDestroyNotify) gtk_tree_path_free); |