summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog20
-rw-r--r--libnautilus-extensions/nautilus-icon-container.c163
-rw-r--r--libnautilus-extensions/nautilus-icon-container.h10
-rw-r--r--libnautilus-extensions/nautilus-icon-private.h5
-rw-r--r--libnautilus-private/nautilus-icon-container.c163
-rw-r--r--libnautilus-private/nautilus-icon-container.h10
-rw-r--r--libnautilus-private/nautilus-icon-private.h5
-rw-r--r--src/file-manager/fm-desktop-icon-view.c7
8 files changed, 96 insertions, 287 deletions
diff --git a/ChangeLog b/ChangeLog
index c055345df..47ba1e39e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2000-08-11 Gene Z. Ragan <gzr@eazel.com>
+
+ * libnautilus-extensions/nautilus-icon-container.c:
+ (icon_set_position), (lay_down_icons),
+ (nautilus_icon_container_initialize),
+ (nautilus_icon_container_set_layout_mode):
+ Removed layout code that was being designed for the desktop.
+ The desktop has no auto layout at the present.
+
+ (nautilus_icon_container_get_is_fixed_size),
+ (nautilus_icon_container_set_is_fixed_size):
+ New functions to set and get the icon containers
+ fixed size attribute. This attribute should be checked
+ whenever an operation that would change the size
+ of the container is called.
+
+ * src/file-manager/fm-desktop-icon-view.c:
+ (fm_desktop_icon_view_initialize):
+ Removed layout mode code.
+
2000-08-11 Ali Abdin <aliabdin@aucegypt.edu>
* components/help/converters/gnome-db2html2/gdb3html.h:
diff --git a/libnautilus-extensions/nautilus-icon-container.c b/libnautilus-extensions/nautilus-icon-container.c
index f0396c796..fec61da32 100644
--- a/libnautilus-extensions/nautilus-icon-container.c
+++ b/libnautilus-extensions/nautilus-icon-container.c
@@ -156,7 +156,7 @@ icon_free (NautilusIcon *icon)
static void
icon_set_position (NautilusIcon *icon,
double x, double y)
-{
+{
if (icon->x == x && icon->y == y) {
return;
}
@@ -505,26 +505,6 @@ get_icon_space_width (const ArtDRect *bounds)
return power_of_two_width;
}
-static int
-get_icon_space_height (const ArtDRect *bounds)
-{
- /*double world_height;
- int power_of_two_height;
-
- world_height = ICON_PAD_LEFT + (bounds->y1 - bounds->y0) + ICON_PAD_RIGHT;
- for (power_of_two_height = ICON_BASE_WIDTH;
- power_of_two_height < world_height;
- power_of_two_height += power_of_two_height) {
- g_return_val_if_fail (power_of_two_height >= ICON_BASE_WIDTH, ICON_BASE_WIDTH);
- }
- return power_of_two_height;*/
-
- double world_height;
- world_height = ICON_PAD_LEFT + (bounds->y1 - bounds->y0) + ICON_PAD_RIGHT;
-
- return world_height;
-}
-
static void
lay_down_one_line (NautilusIconContainer *container,
GList *line_start,
@@ -587,70 +567,6 @@ lay_down_one_line (NautilusIconContainer *container,
}
static void
-lay_down_one_line_vertical (NautilusIconContainer *container,
- GList *line_start,
- GList *line_end,
- double *x)
-{
- GList *p;
- double max_width_left, max_width_right;
- NautilusIcon *icon;
- ArtDRect bounds, icon_bounds;
- double width_left, width_right, y, height;
-
- g_assert (NAUTILUS_IS_ICON_CONTAINER (container));
- g_assert (line_end == NULL || g_list_first (line_start) == g_list_first (line_end));
- g_assert (x != NULL);
-
- /* Compute the total width to the right and left of the baseline. */
- max_width_left = 0;
- max_width_right = 0;
- for (p = line_start; p != line_end; p = p->next) {
- icon = p->data;
-
- nautilus_gnome_canvas_item_get_world_bounds
- (GNOME_CANVAS_ITEM (icon->item), &bounds);
- nautilus_icon_canvas_item_get_icon_rectangle (icon->item, &icon_bounds);
- width_left = icon_bounds.x1 - bounds.x0;
- width_right = bounds.x1 - icon_bounds.x1;
-
- if (width_left > max_width_left) {
- max_width_left = width_left;
- }
- if (width_left > max_width_left) {
- max_width_left = width_left;
- }
- }
-
- /* Advance to the baseline. */
- *x += ICON_PAD_TOP + max_width_left;
-
- /* Lay out the icons vertically along the baseline. */
- y = 0;
- for (p = line_start; p != line_end; p = p->next) {
- icon = p->data;
-
- nautilus_gnome_canvas_item_get_world_bounds
- (GNOME_CANVAS_ITEM (icon->item), &bounds);
- nautilus_icon_canvas_item_get_icon_rectangle (icon->item, &icon_bounds);
- height = get_icon_space_height (&bounds);
-
- icon_set_position
- (icon,
- *x - (icon_bounds.x1 - icon_bounds.x0),
- y + (height - (icon_bounds.y1 - icon_bounds.y0)) / 2);
-
-
-
- y += height;
- }
-
- /* Advance to next line. */
- *x += max_width_right + ICON_PAD_BOTTOM;
-}
-
-
-static void
lay_down_icons_horizontal (NautilusIconContainer *container,
GList *icons,
double start_y)
@@ -690,64 +606,16 @@ lay_down_icons_horizontal (NautilusIconContainer *container,
}
}
-static void
-lay_down_icons_vertical (NautilusIconContainer *container, GList *icons, double start_y)
-{
- GList *p, *line_start;
- NautilusIcon *icon;
- ArtDRect bounds;
- double canvas_width, line_height, space_height, y;
- double canvas_height;
-
- /* Lay out icons a line at a time. */
- gnome_canvas_c2w (GNOME_CANVAS (container),
- GTK_WIDGET (container)->allocation.width, 0,
- &canvas_width, NULL);
-
- gnome_canvas_c2w (GNOME_CANVAS (container),
- GTK_WIDGET (container)->allocation.height, 0,
- &canvas_height, NULL);
-
- line_height = 0;
- line_start = icons;
- y = start_y;
- for (p = icons; p != NULL; p = p->next) {
- icon = p->data;
-
- /* Get the height of the icon. */
- nautilus_gnome_canvas_item_get_world_bounds (GNOME_CANVAS_ITEM (icon->item), &bounds);
- space_height = get_icon_space_height (&bounds);
-
- /* If this icon doesn't fit, lay out the line that's queued up. */
- if (line_start != p && line_height + space_height > canvas_height) {
- lay_down_one_line_vertical (container, line_start, p, &y);
- line_height = 0;
- line_start = p;
- }
-
- /* Add this icon. */
- line_height += space_height;
- }
-
- /* Lay down that last line of icons. */
- if (line_start != NULL) {
- lay_down_one_line_vertical (container, line_start, NULL, &y);
- }
-}
static void
lay_down_icons (NautilusIconContainer *container, GList *icons, double start_y)
{
switch (container->details->layout_mode)
{
- case NAUTILUS_ICON_CANVAS_LAYOUT_HORIZONTAL:
+ case NAUTILUS_ICON_CONTAINER_LAYOUT_HORIZONTAL:
lay_down_icons_horizontal (container, icons, start_y);
break;
- case NAUTILUS_ICON_CANVAS_LAYOUT_VERTICAL_CLIPPED:
- lay_down_icons_vertical (container, icons, start_y);
- break;
-
default:
break;
}
@@ -2628,9 +2496,10 @@ nautilus_icon_container_initialize (NautilusIconContainer *container)
details = g_new0 (NautilusIconContainerDetails, 1);
details->zoom_level = NAUTILUS_ZOOM_LEVEL_STANDARD;
+ details->is_fixed_size = FALSE;
/* Set default layout mode */
- details->layout_mode = NAUTILUS_ICON_CANVAS_LAYOUT_HORIZONTAL;
+ details->layout_mode = NAUTILUS_ICON_CONTAINER_LAYOUT_HORIZONTAL;
/* font table - this isn't exactly proportional, but it looks better than computed */
details->label_font[NAUTILUS_ZOOM_LEVEL_SMALLEST] = nautilus_font_factory_get_font_by_family ("helvetica", 8);
@@ -3731,7 +3600,7 @@ nautilus_icon_container_set_auto_layout (NautilusIconContainer *container,
void
nautilus_icon_container_set_layout_mode (NautilusIconContainer *container,
- NautilusIconCanvasLayoutMode mode)
+ NautilusIconContainerLayoutMode mode)
{
g_return_if_fail (NAUTILUS_IS_ICON_CONTAINER (container));
@@ -4057,6 +3926,28 @@ update_label_color (NautilusBackground *background,
}
}
+
+/* Return if the icon container is a fixed size */
+gboolean
+nautilus_icon_container_get_is_fixed_size (NautilusIconContainer *container)
+{
+ g_return_val_if_fail (container != NULL, FALSE);
+ g_return_val_if_fail (NAUTILUS_IS_ICON_CONTAINER (container), FALSE);
+
+ return container->details->is_fixed_size;
+}
+
+/* Set the icon container to be a fixed size */
+void
+nautilus_icon_container_set_is_fixed_size (NautilusIconContainer *container,
+ gboolean is_fixed_size)
+{
+ g_return_if_fail (container != NULL);
+ g_return_if_fail (NAUTILUS_IS_ICON_CONTAINER (container));
+
+ container->details->is_fixed_size = is_fixed_size;
+}
+
#if ! defined (NAUTILUS_OMIT_SELF_CHECK)
static char *
diff --git a/libnautilus-extensions/nautilus-icon-container.h b/libnautilus-extensions/nautilus-icon-container.h
index 53a31f735..bb2336910 100644
--- a/libnautilus-extensions/nautilus-icon-container.h
+++ b/libnautilus-extensions/nautilus-icon-container.h
@@ -52,9 +52,8 @@ typedef struct {
} NautilusIconPosition;
typedef enum {
- NAUTILUS_ICON_CANVAS_LAYOUT_HORIZONTAL,
- NAUTILUS_ICON_CANVAS_LAYOUT_VERTICAL_CLIPPED
-} NautilusIconCanvasLayoutMode;
+ NAUTILUS_ICON_CONTAINER_LAYOUT_HORIZONTAL
+} NautilusIconContainerLayoutMode;
typedef struct NautilusIconContainerDetails NautilusIconContainerDetails;
@@ -154,7 +153,7 @@ gboolean nautilus_icon_container_is_auto_layout (NautilusIconCo
void nautilus_icon_container_set_auto_layout (NautilusIconContainer *container,
gboolean auto_layout);
void nautilus_icon_container_set_layout_mode (NautilusIconContainer *container,
- NautilusIconCanvasLayoutMode mode);
+ NautilusIconContainerLayoutMode mode);
void nautilus_icon_container_sort (NautilusIconContainer *container);
void nautilus_icon_container_freeze_icon_positions (NautilusIconContainer *container);
@@ -194,5 +193,8 @@ void nautilus_icon_container_set_anti_aliased_mode (NautilusIconCo
void nautilus_icon_container_set_label_font_for_zoom_level (NautilusIconContainer *container,
int zoom_level,
GdkFont *font);
+gboolean nautilus_icon_container_get_is_fixed_size (NautilusIconContainer *container);
+void nautilus_icon_container_set_is_fixed_size (NautilusIconContainer *container,
+ gboolean is_fixed_size);
#endif /* NAUTILUS_ICON_CONTAINER_H */
diff --git a/libnautilus-extensions/nautilus-icon-private.h b/libnautilus-extensions/nautilus-icon-private.h
index 6f7ba63a3..aab39b33f 100644
--- a/libnautilus-extensions/nautilus-icon-private.h
+++ b/libnautilus-extensions/nautilus-icon-private.h
@@ -177,7 +177,10 @@ struct NautilusIconContainerDetails {
gboolean auto_layout;
/* Layout mode */
- NautilusIconCanvasLayoutMode layout_mode;
+ NautilusIconContainerLayoutMode layout_mode;
+
+ /* Is the container fixed or resizable */
+ gboolean is_fixed_size;
};
/* Private functions shared by mutiple files. */
diff --git a/libnautilus-private/nautilus-icon-container.c b/libnautilus-private/nautilus-icon-container.c
index f0396c796..fec61da32 100644
--- a/libnautilus-private/nautilus-icon-container.c
+++ b/libnautilus-private/nautilus-icon-container.c
@@ -156,7 +156,7 @@ icon_free (NautilusIcon *icon)
static void
icon_set_position (NautilusIcon *icon,
double x, double y)
-{
+{
if (icon->x == x && icon->y == y) {
return;
}
@@ -505,26 +505,6 @@ get_icon_space_width (const ArtDRect *bounds)
return power_of_two_width;
}
-static int
-get_icon_space_height (const ArtDRect *bounds)
-{
- /*double world_height;
- int power_of_two_height;
-
- world_height = ICON_PAD_LEFT + (bounds->y1 - bounds->y0) + ICON_PAD_RIGHT;
- for (power_of_two_height = ICON_BASE_WIDTH;
- power_of_two_height < world_height;
- power_of_two_height += power_of_two_height) {
- g_return_val_if_fail (power_of_two_height >= ICON_BASE_WIDTH, ICON_BASE_WIDTH);
- }
- return power_of_two_height;*/
-
- double world_height;
- world_height = ICON_PAD_LEFT + (bounds->y1 - bounds->y0) + ICON_PAD_RIGHT;
-
- return world_height;
-}
-
static void
lay_down_one_line (NautilusIconContainer *container,
GList *line_start,
@@ -587,70 +567,6 @@ lay_down_one_line (NautilusIconContainer *container,
}
static void
-lay_down_one_line_vertical (NautilusIconContainer *container,
- GList *line_start,
- GList *line_end,
- double *x)
-{
- GList *p;
- double max_width_left, max_width_right;
- NautilusIcon *icon;
- ArtDRect bounds, icon_bounds;
- double width_left, width_right, y, height;
-
- g_assert (NAUTILUS_IS_ICON_CONTAINER (container));
- g_assert (line_end == NULL || g_list_first (line_start) == g_list_first (line_end));
- g_assert (x != NULL);
-
- /* Compute the total width to the right and left of the baseline. */
- max_width_left = 0;
- max_width_right = 0;
- for (p = line_start; p != line_end; p = p->next) {
- icon = p->data;
-
- nautilus_gnome_canvas_item_get_world_bounds
- (GNOME_CANVAS_ITEM (icon->item), &bounds);
- nautilus_icon_canvas_item_get_icon_rectangle (icon->item, &icon_bounds);
- width_left = icon_bounds.x1 - bounds.x0;
- width_right = bounds.x1 - icon_bounds.x1;
-
- if (width_left > max_width_left) {
- max_width_left = width_left;
- }
- if (width_left > max_width_left) {
- max_width_left = width_left;
- }
- }
-
- /* Advance to the baseline. */
- *x += ICON_PAD_TOP + max_width_left;
-
- /* Lay out the icons vertically along the baseline. */
- y = 0;
- for (p = line_start; p != line_end; p = p->next) {
- icon = p->data;
-
- nautilus_gnome_canvas_item_get_world_bounds
- (GNOME_CANVAS_ITEM (icon->item), &bounds);
- nautilus_icon_canvas_item_get_icon_rectangle (icon->item, &icon_bounds);
- height = get_icon_space_height (&bounds);
-
- icon_set_position
- (icon,
- *x - (icon_bounds.x1 - icon_bounds.x0),
- y + (height - (icon_bounds.y1 - icon_bounds.y0)) / 2);
-
-
-
- y += height;
- }
-
- /* Advance to next line. */
- *x += max_width_right + ICON_PAD_BOTTOM;
-}
-
-
-static void
lay_down_icons_horizontal (NautilusIconContainer *container,
GList *icons,
double start_y)
@@ -690,64 +606,16 @@ lay_down_icons_horizontal (NautilusIconContainer *container,
}
}
-static void
-lay_down_icons_vertical (NautilusIconContainer *container, GList *icons, double start_y)
-{
- GList *p, *line_start;
- NautilusIcon *icon;
- ArtDRect bounds;
- double canvas_width, line_height, space_height, y;
- double canvas_height;
-
- /* Lay out icons a line at a time. */
- gnome_canvas_c2w (GNOME_CANVAS (container),
- GTK_WIDGET (container)->allocation.width, 0,
- &canvas_width, NULL);
-
- gnome_canvas_c2w (GNOME_CANVAS (container),
- GTK_WIDGET (container)->allocation.height, 0,
- &canvas_height, NULL);
-
- line_height = 0;
- line_start = icons;
- y = start_y;
- for (p = icons; p != NULL; p = p->next) {
- icon = p->data;
-
- /* Get the height of the icon. */
- nautilus_gnome_canvas_item_get_world_bounds (GNOME_CANVAS_ITEM (icon->item), &bounds);
- space_height = get_icon_space_height (&bounds);
-
- /* If this icon doesn't fit, lay out the line that's queued up. */
- if (line_start != p && line_height + space_height > canvas_height) {
- lay_down_one_line_vertical (container, line_start, p, &y);
- line_height = 0;
- line_start = p;
- }
-
- /* Add this icon. */
- line_height += space_height;
- }
-
- /* Lay down that last line of icons. */
- if (line_start != NULL) {
- lay_down_one_line_vertical (container, line_start, NULL, &y);
- }
-}
static void
lay_down_icons (NautilusIconContainer *container, GList *icons, double start_y)
{
switch (container->details->layout_mode)
{
- case NAUTILUS_ICON_CANVAS_LAYOUT_HORIZONTAL:
+ case NAUTILUS_ICON_CONTAINER_LAYOUT_HORIZONTAL:
lay_down_icons_horizontal (container, icons, start_y);
break;
- case NAUTILUS_ICON_CANVAS_LAYOUT_VERTICAL_CLIPPED:
- lay_down_icons_vertical (container, icons, start_y);
- break;
-
default:
break;
}
@@ -2628,9 +2496,10 @@ nautilus_icon_container_initialize (NautilusIconContainer *container)
details = g_new0 (NautilusIconContainerDetails, 1);
details->zoom_level = NAUTILUS_ZOOM_LEVEL_STANDARD;
+ details->is_fixed_size = FALSE;
/* Set default layout mode */
- details->layout_mode = NAUTILUS_ICON_CANVAS_LAYOUT_HORIZONTAL;
+ details->layout_mode = NAUTILUS_ICON_CONTAINER_LAYOUT_HORIZONTAL;
/* font table - this isn't exactly proportional, but it looks better than computed */
details->label_font[NAUTILUS_ZOOM_LEVEL_SMALLEST] = nautilus_font_factory_get_font_by_family ("helvetica", 8);
@@ -3731,7 +3600,7 @@ nautilus_icon_container_set_auto_layout (NautilusIconContainer *container,
void
nautilus_icon_container_set_layout_mode (NautilusIconContainer *container,
- NautilusIconCanvasLayoutMode mode)
+ NautilusIconContainerLayoutMode mode)
{
g_return_if_fail (NAUTILUS_IS_ICON_CONTAINER (container));
@@ -4057,6 +3926,28 @@ update_label_color (NautilusBackground *background,
}
}
+
+/* Return if the icon container is a fixed size */
+gboolean
+nautilus_icon_container_get_is_fixed_size (NautilusIconContainer *container)
+{
+ g_return_val_if_fail (container != NULL, FALSE);
+ g_return_val_if_fail (NAUTILUS_IS_ICON_CONTAINER (container), FALSE);
+
+ return container->details->is_fixed_size;
+}
+
+/* Set the icon container to be a fixed size */
+void
+nautilus_icon_container_set_is_fixed_size (NautilusIconContainer *container,
+ gboolean is_fixed_size)
+{
+ g_return_if_fail (container != NULL);
+ g_return_if_fail (NAUTILUS_IS_ICON_CONTAINER (container));
+
+ container->details->is_fixed_size = is_fixed_size;
+}
+
#if ! defined (NAUTILUS_OMIT_SELF_CHECK)
static char *
diff --git a/libnautilus-private/nautilus-icon-container.h b/libnautilus-private/nautilus-icon-container.h
index 53a31f735..bb2336910 100644
--- a/libnautilus-private/nautilus-icon-container.h
+++ b/libnautilus-private/nautilus-icon-container.h
@@ -52,9 +52,8 @@ typedef struct {
} NautilusIconPosition;
typedef enum {
- NAUTILUS_ICON_CANVAS_LAYOUT_HORIZONTAL,
- NAUTILUS_ICON_CANVAS_LAYOUT_VERTICAL_CLIPPED
-} NautilusIconCanvasLayoutMode;
+ NAUTILUS_ICON_CONTAINER_LAYOUT_HORIZONTAL
+} NautilusIconContainerLayoutMode;
typedef struct NautilusIconContainerDetails NautilusIconContainerDetails;
@@ -154,7 +153,7 @@ gboolean nautilus_icon_container_is_auto_layout (NautilusIconCo
void nautilus_icon_container_set_auto_layout (NautilusIconContainer *container,
gboolean auto_layout);
void nautilus_icon_container_set_layout_mode (NautilusIconContainer *container,
- NautilusIconCanvasLayoutMode mode);
+ NautilusIconContainerLayoutMode mode);
void nautilus_icon_container_sort (NautilusIconContainer *container);
void nautilus_icon_container_freeze_icon_positions (NautilusIconContainer *container);
@@ -194,5 +193,8 @@ void nautilus_icon_container_set_anti_aliased_mode (NautilusIconCo
void nautilus_icon_container_set_label_font_for_zoom_level (NautilusIconContainer *container,
int zoom_level,
GdkFont *font);
+gboolean nautilus_icon_container_get_is_fixed_size (NautilusIconContainer *container);
+void nautilus_icon_container_set_is_fixed_size (NautilusIconContainer *container,
+ gboolean is_fixed_size);
#endif /* NAUTILUS_ICON_CONTAINER_H */
diff --git a/libnautilus-private/nautilus-icon-private.h b/libnautilus-private/nautilus-icon-private.h
index 6f7ba63a3..aab39b33f 100644
--- a/libnautilus-private/nautilus-icon-private.h
+++ b/libnautilus-private/nautilus-icon-private.h
@@ -177,7 +177,10 @@ struct NautilusIconContainerDetails {
gboolean auto_layout;
/* Layout mode */
- NautilusIconCanvasLayoutMode layout_mode;
+ NautilusIconContainerLayoutMode layout_mode;
+
+ /* Is the container fixed or resizable */
+ gboolean is_fixed_size;
};
/* Private functions shared by mutiple files. */
diff --git a/src/file-manager/fm-desktop-icon-view.c b/src/file-manager/fm-desktop-icon-view.c
index c54c6a9e9..6fc56b11a 100644
--- a/src/file-manager/fm-desktop-icon-view.c
+++ b/src/file-manager/fm-desktop-icon-view.c
@@ -183,6 +183,8 @@ fm_desktop_icon_view_initialize (FMDesktopIconView *desktop_icon_view)
desktop_icon_view->details = g_new0 (FMDesktopIconViewDetails, 1);
desktop_icon_view->details->volume_monitor = nautilus_volume_monitor_get ();
+ nautilus_icon_container_set_is_fixed_size (icon_container, TRUE);
+
/* Check for and clean up any old mount links that may have been left behind */
remove_old_mount_links ();
@@ -199,11 +201,6 @@ fm_desktop_icon_view_initialize (FMDesktopIconView *desktop_icon_view)
fm_desktop_icon_view_trash_state_changed_callback,
desktop_icon_view);
- /* The desktop uses a vertical layout mode */
- nautilus_icon_container_set_layout_mode (NAUTILUS_ICON_CONTAINER (icon_container),
- NAUTILUS_ICON_CANVAS_LAYOUT_VERTICAL_CLIPPED);
-
-
/* Check for mountable devices */
nautilus_volume_monitor_find_mount_devices (desktop_icon_view->details->volume_monitor);
}