diff options
author | Marcus Carlson <marcus@mejlamej.nu> | 2010-04-07 09:58:04 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2010-04-07 09:58:04 +0200 |
commit | 305cf9768bd716ba9bbcd3e773511536243a9cc5 (patch) | |
tree | 0596b44fbf0a7872877d0c9090afe8c6e7d11949 /libnautilus-private | |
parent | 263051df98aace0b59fb2bd1772711dceba8e404 (diff) | |
download | nautilus-305cf9768bd716ba9bbcd3e773511536243a9cc5.tar.gz |
Fix emblem scaling with zoom >= 150%
Emblem handling did not properly take zoom into account (#343540)
Diffstat (limited to 'libnautilus-private')
-rw-r--r-- | libnautilus-private/nautilus-icon-canvas-item.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/libnautilus-private/nautilus-icon-canvas-item.c b/libnautilus-private/nautilus-icon-canvas-item.c index 0e08d3154..8c8de4401 100644 --- a/libnautilus-private/nautilus-icon-canvas-item.c +++ b/libnautilus-private/nautilus-icon-canvas-item.c @@ -2488,7 +2488,7 @@ static void nautilus_icon_canvas_item_ensure_bounds_up_to_date (NautilusIconCanvasItem *icon_item) { NautilusIconCanvasItemDetails *details; - EelIRect icon_rect, emblem_rect; + EelIRect icon_rect, emblem_rect, icon_rect_raw; EelIRect text_rect, text_rect_for_layout, text_rect_for_entire_text; EelIRect total_rect, total_rect_for_layout, total_rect_for_entire_text; EelCanvasItem *item; @@ -2505,15 +2505,21 @@ nautilus_icon_canvas_item_ensure_bounds_up_to_date (NautilusIconCanvasItem *icon pixels_per_unit = EEL_CANVAS_ITEM (item)->canvas->pixels_per_unit; - /* Compute icon rectangle. */ + /* Compute raw and scaled icon rectangle. */ icon_rect.x0 = 0; icon_rect.y0 = 0; + icon_rect_raw.x0 = 0; + icon_rect_raw.y0 = 0; if (details->pixbuf == NULL) { icon_rect.x1 = icon_rect.x0; icon_rect.y1 = icon_rect.y0; + icon_rect_raw.x1 = icon_rect_raw.x0; + icon_rect_raw.y1 = icon_rect_raw.y0; } else { - icon_rect.x1 = icon_rect.x0 + gdk_pixbuf_get_width (details->pixbuf) / pixels_per_unit; - icon_rect.y1 = icon_rect.y0 + gdk_pixbuf_get_height (details->pixbuf) / pixels_per_unit; + icon_rect_raw.x1 = icon_rect_raw.x0 + gdk_pixbuf_get_width (details->pixbuf); + icon_rect_raw.y1 = icon_rect_raw.y0 + gdk_pixbuf_get_height (details->pixbuf); + icon_rect.x1 = icon_rect_raw.x1 / pixels_per_unit; + icon_rect.y1 = icon_rect_raw.y1 / pixels_per_unit; } /* Compute text rectangle. */ @@ -2527,7 +2533,7 @@ nautilus_icon_canvas_item_ensure_bounds_up_to_date (NautilusIconCanvasItem *icon eel_irect_union (&total_rect, &icon_rect, &text_rect); eel_irect_union (&total_rect_for_layout, &icon_rect, &text_rect_for_layout); eel_irect_union (&total_rect_for_entire_text, &icon_rect, &text_rect_for_entire_text); - emblem_layout_reset (&emblem_layout, icon_item, icon_rect, is_rtl); + emblem_layout_reset (&emblem_layout, icon_item, icon_rect_raw, is_rtl); while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect, is_rtl)) { emblem_rect.x0 = floor (emblem_rect.x0 / pixels_per_unit); emblem_rect.y0 = floor (emblem_rect.y0 / pixels_per_unit); |