[nautilus] canvas-container: remove NautilusCanvasLayoutMode



commit d6c89019d493b7de6abca3849e397e3685e52d82
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Thu Oct 4 17:03:29 2012 -0400

    canvas-container: remove NautilusCanvasLayoutMode
    
    Since we use the vertical layout only for the desktop these days, remove
    NautilusCanvasLayoutMode completely, and just return TRUE from
    nautilus_canvas_container_layout_is_vertical() if we're a desktop
    container.
    This allows to remove a lot of unused layouting code.

 libnautilus-private/nautilus-canvas-container.c |  248 +----------------------
 libnautilus-private/nautilus-canvas-container.h |    9 -
 libnautilus-private/nautilus-canvas-private.h   |    3 -
 src/nautilus-canvas-view.c                      |   14 +-
 src/nautilus-desktop-canvas-view.c              |    6 -
 5 files changed, 12 insertions(+), 268 deletions(-)
---
diff --git a/libnautilus-private/nautilus-canvas-container.c b/libnautilus-private/nautilus-canvas-container.c
index de493d4..98b35f3 100644
--- a/libnautilus-private/nautilus-canvas-container.c
+++ b/libnautilus-private/nautilus-canvas-container.c
@@ -1195,43 +1195,6 @@ lay_down_one_line (NautilusCanvasContainer *container,
 }
 
 static void
-lay_down_one_column (NautilusCanvasContainer *container,
-		     GList *line_start,
-		     GList *line_end,
-		     double x,
-		     double y_start,
-		     double y_iter,
-		     GArray *positions)
-{
-	GList *p;
-	NautilusCanvasIcon *icon;
-	double y;
-	IconPositions *position;
-	int i;
-	gboolean is_rtl;
-
-        is_rtl = nautilus_canvas_container_is_layout_rtl (container);
-
-	/* Lay out the icons along the baseline. */
-	y = y_start;
-	i = 0;
-	for (p = line_start; p != line_end; p = p->next) {
-		icon = p->data;
-
-		position = &g_array_index (positions, IconPositions, i++);
-
-		icon_set_position
-			(icon,
-			 is_rtl ? get_mirror_x_position (container, icon, x + position->x_offset) : x + position->x_offset,
-			 y + position->y_offset);
-
-		icon->saved_ltr_x = is_rtl ? get_mirror_x_position (container, icon, icon->x) : icon->x;
-
-		y += y_iter;
-	}
-}
-
-static void
 lay_down_icons_horizontal (NautilusCanvasContainer *container,
 			     GList *icons,
 			     double start_y)
@@ -1336,171 +1299,6 @@ lay_down_icons_horizontal (NautilusCanvasContainer *container,
 }
 
 static void
-get_max_icon_dimensions (GList *icon_start,
-			 GList *icon_end,
-			 double *max_icon_width,
-			 double *max_icon_height,
-			 double *max_text_width,
-			 double *max_text_height,
-			 double *max_bounds_height)
-{
-	NautilusCanvasIcon *icon;
-	EelDRect icon_bounds;
-	EelDRect text_bounds;
-	GList *p;
-	double y1, y2;
-
-	*max_icon_width = *max_text_width = 0.0;
-	*max_icon_height = *max_text_height = 0.0;
-	*max_bounds_height = 0.0;
-
-	/* Would it be worth caching these bounds for the next loop? */
-	for (p = icon_start; p != icon_end; p = p->next) {
-		icon = p->data;
-
-		icon_bounds = nautilus_canvas_item_get_icon_rectangle (icon->item);
-		*max_icon_width = MAX (*max_icon_width, ceil (icon_bounds.x1 - icon_bounds.x0));
-		*max_icon_height = MAX (*max_icon_height, ceil (icon_bounds.y1 - icon_bounds.y0));
-
-		text_bounds = nautilus_canvas_item_get_text_rectangle (icon->item, TRUE);
-		*max_text_width = MAX (*max_text_width, ceil (text_bounds.x1 - text_bounds.x0));
-		*max_text_height = MAX (*max_text_height, ceil (text_bounds.y1 - text_bounds.y0));
-
-		nautilus_canvas_item_get_bounds_for_layout (icon->item,
-								   NULL, &y1,
-								   NULL, &y2);
-		*max_bounds_height = MAX (*max_bounds_height, y2 - y1);
-	}
-}
-
-static void
-lay_down_icons_vertical (NautilusCanvasContainer *container,
-			   GList *icons,
-			   double start_y)
-{
-	GList *p, *line_start;
-	NautilusCanvasIcon *icon;
-	double x, canvas_height;
-	GArray *positions;
-	IconPositions *position;
-	EelDRect icon_bounds;
-	EelDRect text_bounds;
-	GtkAllocation allocation;
-
-	double line_height;
-
-	double max_height;
-	double max_height_with_borders;
-	double max_width;
-	double max_width_in_column;
-
-	double max_bounds_height;
-	double max_bounds_height_with_borders;
-
-	double max_text_width, max_icon_width;
-	double max_text_height, max_icon_height;
-	int height;
-	int i;
-
-	g_assert (NAUTILUS_IS_CANVAS_CONTAINER (container));
-
-	if (icons == NULL) {
-		return;
-	}
-
-	positions = g_array_new (FALSE, FALSE, sizeof (IconPositions));
-	gtk_widget_get_allocation (GTK_WIDGET (container), &allocation);
-
-	/* Lay out icons a column at a time. */
-	canvas_height = CANVAS_HEIGHT(container, allocation);
-
-	max_icon_width = max_text_width = 0.0;
-	max_icon_height = max_text_height = 0.0;
-	max_bounds_height = 0.0;
-
-	get_max_icon_dimensions (icons, NULL,
-				   &max_icon_width, &max_icon_height,
-				   &max_text_width, &max_text_height,
-				   &max_bounds_height);
-
-	max_width = max_icon_width + max_text_width;
-	max_height = MAX (max_icon_height, max_text_height);
-	max_height_with_borders = ICON_PAD_TOP + max_height;
-
-	max_bounds_height_with_borders = ICON_PAD_TOP + max_bounds_height;
-
-	line_height = ICON_PAD_TOP;
-	line_start = icons;
-	x = 0;
-	i = 0;
-
-	max_width_in_column = 0.0;
-
-	for (p = icons; p != NULL; p = p->next) {
-		icon = p->data;
-
-		/* If this icon doesn't fit, it's time to lay out the column that's queued up. */
-
-		/* We use the bounds height here, since for wrapping we also want to consider
-		 * overlapping emblems at the bottom. We may wrap a little bit too early since
-		 * the icon with the max. bounds height may actually not be in the last row, but
-		 * it is better than visual glitches
-		 */
-		if (line_start != p && line_height + (max_bounds_height_with_borders-1) >= canvas_height ) {
-			x += ICON_PAD_LEFT;
-
-			/* correctly set (per-column) width */
-			for (i = 0; i < (int) positions->len; i++) {
-				position = &g_array_index (positions, IconPositions, i);
-				position->width = max_width_in_column;
-			}
-
-			lay_down_one_column (container, line_start, p, x, CONTAINER_PAD_TOP, max_height_with_borders, positions);
-
-			/* Advance to next column. */
-			x += max_width_in_column + ICON_PAD_RIGHT;
-
-			line_height = ICON_PAD_TOP;
-			line_start = p;
-			i = 0;
-
-			max_width_in_column = 0;
-		}
-
-		icon_bounds = nautilus_canvas_item_get_icon_rectangle (icon->item);
-		text_bounds = nautilus_canvas_item_get_text_rectangle (icon->item, TRUE);
-
-		max_width_in_column = MAX (max_width_in_column,
-					   ceil (icon_bounds.x1 - icon_bounds.x0) +
-					   ceil (text_bounds.x1 - text_bounds.x0));
-
-		g_array_set_size (positions, i + 1);
-		position = &g_array_index (positions, IconPositions, i++);
-
-		position->width = max_width;
-		position->height = max_height;
-		position->y_offset = ICON_PAD_TOP;
-		position->x_offset = ICON_PAD_LEFT;
-
-		position->x_offset += max_icon_width - ceil (icon_bounds.x1 - icon_bounds.x0);
-
-		height = MAX (ceil (icon_bounds.y1 - icon_bounds.y0), ceil(text_bounds.y1 - text_bounds.y0));
-		position->y_offset += (max_height - height) / 2;
-
-		/* Add this icon. */
-		line_height += max_height_with_borders;
-	}
-
-	/* Lay down that last column of icons. */
-	if (line_start != NULL) {
-		x += ICON_PAD_LEFT;
-		lay_down_one_column (container, line_start, NULL, x, CONTAINER_PAD_TOP, max_height_with_borders, positions);
-	}
-
-	g_array_free (positions, TRUE);
-}
-
-static void
 snap_position (NautilusCanvasContainer *container,
 	       NautilusCanvasIcon *icon,
 	       int *x, int *y)
@@ -2046,25 +1844,11 @@ lay_down_icons_vertical_desktop (NautilusCanvasContainer *container, GList *icon
 static void
 lay_down_icons (NautilusCanvasContainer *container, GList *icons, double start_y)
 {
-	switch (container->details->layout_mode)
-		{
-		case NAUTILUS_CANVAS_LAYOUT_L_R_T_B:
-		case NAUTILUS_CANVAS_LAYOUT_R_L_T_B:
-			lay_down_icons_horizontal (container, icons, start_y);
-			break;
-		
-		case NAUTILUS_CANVAS_LAYOUT_T_B_L_R:
-		case NAUTILUS_CANVAS_LAYOUT_T_B_R_L:
-			if (nautilus_canvas_container_get_is_desktop (container)) {
-				lay_down_icons_vertical_desktop (container, icons);
-			} else {
-				lay_down_icons_vertical (container, icons, start_y);
-			}
-			break;
-		
-		default:
-			g_assert_not_reached ();
-		}
+	if (container->details->is_desktop) {
+		lay_down_icons_vertical_desktop (container, icons);
+	} else {
+		lay_down_icons_horizontal (container, icons, start_y);
+	}
 }
 
 static void
@@ -7281,21 +7065,6 @@ nautilus_canvas_container_set_keep_aligned (NautilusCanvasContainer *container,
 }
 
 void
-nautilus_canvas_container_set_layout_mode (NautilusCanvasContainer *container,
-					   NautilusCanvasLayoutMode mode)
-{
-	g_return_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container));
-
-	container->details->layout_mode = mode;
-	invalidate_labels (container);
-
-	container->details->needs_resort = TRUE;
-	redo_layout (container);
-
-	g_signal_emit (container, signals[LAYOUT_CHANGED], 0);
-}
-
-void
 nautilus_canvas_container_set_label_position (NautilusCanvasContainer *container,
 					      NautilusCanvasLabelPosition position)
 {
@@ -8362,8 +8131,7 @@ nautilus_canvas_container_is_layout_rtl (NautilusCanvasContainer *container)
 {
 	g_return_val_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container), 0);
 
-	return container->details->layout_mode == NAUTILUS_CANVAS_LAYOUT_T_B_R_L ||
-		container->details->layout_mode == NAUTILUS_CANVAS_LAYOUT_R_L_T_B;
+	return (gtk_widget_get_direction (GTK_WIDGET (container)) == GTK_TEXT_DIR_RTL);
 }
 
 gboolean
@@ -8371,8 +8139,8 @@ nautilus_canvas_container_is_layout_vertical (NautilusCanvasContainer *container
 {
 	g_return_val_if_fail (NAUTILUS_IS_CANVAS_CONTAINER (container), FALSE);
 
-	return (container->details->layout_mode == NAUTILUS_CANVAS_LAYOUT_T_B_L_R ||
-		container->details->layout_mode == NAUTILUS_CANVAS_LAYOUT_T_B_R_L);
+	/* we only do vertical layout in the desktop nowadays */
+	return container->details->is_desktop;
 }
 
 int
diff --git a/libnautilus-private/nautilus-canvas-container.h b/libnautilus-private/nautilus-canvas-container.h
index ba2fe80..5ad6d52 100644
--- a/libnautilus-private/nautilus-canvas-container.h
+++ b/libnautilus-private/nautilus-canvas-container.h
@@ -57,13 +57,6 @@ typedef struct {
 } NautilusCanvasPosition;
 
 typedef enum {
-	NAUTILUS_CANVAS_LAYOUT_L_R_T_B,
-	NAUTILUS_CANVAS_LAYOUT_R_L_T_B,
-	NAUTILUS_CANVAS_LAYOUT_T_B_L_R,
-	NAUTILUS_CANVAS_LAYOUT_T_B_R_L
-} NautilusCanvasLayoutMode;
-
-typedef enum {
 	NAUTILUS_CANVAS_LABEL_POSITION_UNDER,
 } NautilusCanvasLabelPosition;
 
@@ -273,8 +266,6 @@ void              nautilus_canvas_container_set_auto_layout               (Nauti
 gboolean          nautilus_canvas_container_is_keep_aligned               (NautilusCanvasContainer  *container);
 void              nautilus_canvas_container_set_keep_aligned              (NautilusCanvasContainer  *container,
 									   gboolean                keep_aligned);
-void              nautilus_canvas_container_set_layout_mode               (NautilusCanvasContainer  *container,
-									   NautilusCanvasLayoutMode  mode);
 void              nautilus_canvas_container_set_label_position            (NautilusCanvasContainer  *container,
 									   NautilusCanvasLabelPosition pos);
 void              nautilus_canvas_container_sort                          (NautilusCanvasContainer  *container);
diff --git a/libnautilus-private/nautilus-canvas-private.h b/libnautilus-private/nautilus-canvas-private.h
index 9297733..79154db 100644
--- a/libnautilus-private/nautilus-canvas-private.h
+++ b/libnautilus-private/nautilus-canvas-private.h
@@ -210,9 +210,6 @@ struct NautilusCanvasContainerDetails {
 	gboolean single_click_mode;
 	gboolean auto_layout;
 
-	/* Layout mode */
-	NautilusCanvasLayoutMode layout_mode;
-
 	/* Label position */
 	NautilusCanvasLabelPosition label_position;
 
diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c
index d262a4e..cc5e0e1 100644
--- a/src/nautilus-canvas-view.c
+++ b/src/nautilus-canvas-view.c
@@ -2202,12 +2202,6 @@ nautilus_canvas_view_init (NautilusCanvasView *canvas_view)
 
 	canvas_container = create_canvas_container (canvas_view);
 
-	/* Set our default layout mode */
-	nautilus_canvas_container_set_layout_mode (canvas_container,
-						 gtk_widget_get_direction (GTK_WIDGET(canvas_container)) == GTK_TEXT_DIR_RTL ?
-						 NAUTILUS_CANVAS_LAYOUT_R_L_T_B :
-						 NAUTILUS_CANVAS_LAYOUT_L_R_T_B);
-
 	g_signal_connect_swapped (nautilus_preferences,
 				  "changed::" NAUTILUS_PREFERENCES_DEFAULT_SORT_ORDER,
 				  G_CALLBACK (default_sort_order_changed_callback),
@@ -2226,13 +2220,13 @@ nautilus_canvas_view_init (NautilusCanvasView *canvas_view)
 				  G_CALLBACK (text_attribute_names_changed_callback),
 				  canvas_view);
 
-	g_signal_connect_object (get_canvas_container (canvas_view), "handle_netscape_url",
+	g_signal_connect_object (canvas_container, "handle_netscape_url",
 				 G_CALLBACK (canvas_view_handle_netscape_url), canvas_view, 0);
-	g_signal_connect_object (get_canvas_container (canvas_view), "handle_uri_list",
+	g_signal_connect_object (canvas_container, "handle_uri_list",
 				 G_CALLBACK (canvas_view_handle_uri_list), canvas_view, 0);
-	g_signal_connect_object (get_canvas_container (canvas_view), "handle_text",
+	g_signal_connect_object (canvas_container, "handle_text",
 				 G_CALLBACK (canvas_view_handle_text), canvas_view, 0);
-	g_signal_connect_object (get_canvas_container (canvas_view), "handle_raw",
+	g_signal_connect_object (canvas_container, "handle_raw",
 				 G_CALLBACK (canvas_view_handle_raw), canvas_view, 0);
 
 	canvas_view->details->clipboard_handler_id =
diff --git a/src/nautilus-desktop-canvas-view.c b/src/nautilus-desktop-canvas-view.c
index 07b2546..dd42c02 100644
--- a/src/nautilus-desktop-canvas-view.c
+++ b/src/nautilus-desktop-canvas-view.c
@@ -582,12 +582,6 @@ nautilus_desktop_canvas_view_init (NautilusDesktopCanvasView *desktop_canvas_vie
 	nautilus_view_set_show_foreign (NAUTILUS_VIEW (desktop_canvas_view),
 					FALSE);
 	
-	/* Set our default layout mode */
-	nautilus_canvas_container_set_layout_mode (canvas_container,
-						 gtk_widget_get_direction (GTK_WIDGET(canvas_container)) == GTK_TEXT_DIR_RTL ?
-						 NAUTILUS_CANVAS_LAYOUT_T_B_R_L :
-						 NAUTILUS_CANVAS_LAYOUT_T_B_L_R);
-
 	g_signal_connect_object (canvas_container, "middle_click",
 				 G_CALLBACK (nautilus_desktop_canvas_view_handle_middle_click), desktop_canvas_view, 0);
 	g_signal_connect_object (desktop_canvas_view, "realize",



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]