diff options
author | Andy Hertzfeld <andy@src.gnome.org> | 2001-01-11 21:53:58 +0000 |
---|---|---|
committer | Andy Hertzfeld <andy@src.gnome.org> | 2001-01-11 21:53:58 +0000 |
commit | dfaeb7a0c3a6c67a0bab54f57ff686563ba0e339 (patch) | |
tree | df7716a9657cab6eac447396c9513b5794088ba6 /libnautilus-extensions/nautilus-icon-container.c | |
parent | 89567594485c3ae83131bc22bbf41aaa4fae3d64 (diff) | |
download | nautilus-dfaeb7a0c3a6c67a0bab54f57ff686563ba0e339.tar.gz |
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.
Diffstat (limited to 'libnautilus-extensions/nautilus-icon-container.c')
-rw-r--r-- | libnautilus-extensions/nautilus-icon-container.c | 17 |
1 files changed, 17 insertions, 0 deletions
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]); |