From dfaeb7a0c3a6c67a0bab54f57ff686563ba0e339 Mon Sep 17 00:00:00 2001 From: Andy Hertzfeld Date: Thu, 11 Jan 2001 21:53:58 +0000 Subject: fixed bug 5338, switching to and from "tighter layout" messes up icon fixed bug 5338, switching to and from "tighter layout" messes up icon labels, by adding a call to invalidate an item's cached label size, and making the icon canvas invalidate the items when appropriate. This also fixes a similar problem when the anti-aliased mode changes. * libnautilus-extensions/nautilus-icon-canvas-item.c: (nautilus_icon_canvas_item_initialize), (nautilus_icon_canvas_item_invalidate_label_size), (nautilus_icon_canvas_item_set_arg): renamed internal invalidation routine to make it externally accessible * libnautilus-extensions/nautilus-icon-canvas-item.h: added nautilus_icon_canvas_item_invalidate_label_size * libnautilus-extensions/nautilus-icon-container.c: (invalidate_label_sizes), (nautilus_icon_container_set_anti_aliased_mode), (nautilus_icon_container_set_tighter_layout): added an invalidate_label_sizes routine and called it when tighter layout or the anti-aliased mode changes. --- libnautilus-extensions/nautilus-icon-container.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'libnautilus-extensions/nautilus-icon-container.c') diff --git a/libnautilus-extensions/nautilus-icon-container.c b/libnautilus-extensions/nautilus-icon-container.c index e5917df28..de21f75fb 100644 --- a/libnautilus-extensions/nautilus-icon-container.c +++ b/libnautilus-extensions/nautilus-icon-container.c @@ -1219,6 +1219,20 @@ button_event_modifies_selection (GdkEventButton *event) return (event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) != 0; } +/* invalidate the cached label sizes for all the icons */ +static void +invalidate_label_sizes (NautilusIconContainer *container) +{ + GList *p; + NautilusIcon *icon; + + for (p = container->details->icons; p != NULL; p = p->next) { + icon = p->data; + + nautilus_icon_canvas_item_invalidate_label_size (icon->item); + } +} + static gboolean select_one_unselect_others (NautilusIconContainer *container, NautilusIcon *icon_to_select) @@ -3992,6 +4006,8 @@ nautilus_icon_container_set_anti_aliased_mode (NautilusIconContainer *container, canvas = GNOME_CANVAS (container); if (canvas->aa != anti_aliased_mode) { canvas->aa = anti_aliased_mode; + + invalidate_label_sizes (container); nautilus_icon_container_request_update_all (container); } } @@ -4492,6 +4508,7 @@ nautilus_icon_container_set_tighter_layout (NautilusIconContainer *container, container->details->tighter_layout = tighter_layout; + invalidate_label_sizes (container); redo_layout (container); gtk_signal_emit (GTK_OBJECT (container), signals[LAYOUT_CHANGED]); -- cgit v1.2.1