diff options
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-canvas-note-item.c | 6 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-icon-canvas-item.c | 25 | ||||
-rw-r--r-- | libnautilus-private/nautilus-canvas-note-item.c | 6 | ||||
-rw-r--r-- | libnautilus-private/nautilus-icon-canvas-item.c | 25 |
5 files changed, 50 insertions, 24 deletions
@@ -1,3 +1,15 @@ +2001-04-10 Andy Hertzfeld <andy@eazel.com> + + * libnautilus-extensions/nautilus-canvas-note-item.c: + (nautilus_canvas_note_item_set_note_text), + (nautilus_canvas_note_item_update): + tweaked note sizing + + * libnautilus-extensions/nautilus-icon-canvas-item.c: + (create_annotation), (get_emblem_rectangle): + made the annotation be positioned properly by using world coordinates + instead of canvas coordinates + 2001-04-09 Andy Hertzfeld <andy@eazel.com> removed some unneeded generality from the note item diff --git a/libnautilus-extensions/nautilus-canvas-note-item.c b/libnautilus-extensions/nautilus-canvas-note-item.c index 985884b99..2fb752696 100644 --- a/libnautilus-extensions/nautilus-canvas-note-item.c +++ b/libnautilus-extensions/nautilus-canvas-note-item.c @@ -345,8 +345,8 @@ nautilus_canvas_note_item_set_note_text (NautilusCanvasNoteItem *note_item, cons width = (total_width < ANNOTATION_WIDTH) ? total_width : ANNOTATION_WIDTH; /* add some vertical slop for descenders and incorporate scale factor */ - note_item->x2 = note_item->x1 + (width / item->canvas->pixels_per_unit); - note_item->y2 = note_item->y1 + 4.0 + (height / item->canvas->pixels_per_unit); + note_item->x2 = floor (note_item->x1 + (width / item->canvas->pixels_per_unit) + .5); + note_item->y2 = floor (note_item->y1 + 4.0 + (height / item->canvas->pixels_per_unit) + .5); update_item_bounding_box (note_item); @@ -890,7 +890,7 @@ nautilus_canvas_note_item_update (GnomeCanvasItem *item, double affine[6], ArtSV x1 = note_item->x2; y1 = note_item->y2; - round_off_amount = item->canvas->pixels_per_unit; + round_off_amount = item->canvas->pixels_per_unit / 2; gnome_canvas_item_reset_bounds (item); midpoint = (x1 + x0) / 2; diff --git a/libnautilus-extensions/nautilus-icon-canvas-item.c b/libnautilus-extensions/nautilus-icon-canvas-item.c index 423f4066a..c1d500e15 100644 --- a/libnautilus-extensions/nautilus-icon-canvas-item.c +++ b/libnautilus-extensions/nautilus-icon-canvas-item.c @@ -228,10 +228,10 @@ static void get_icon_canvas_rectangle (NautilusIconCanvasIt static void emblem_layout_reset (EmblemLayout *layout, NautilusIconCanvasItem *icon_item, const ArtIRect *icon_rect); -static gboolean emblem_layout_next (EmblemLayout *layout, +static gboolean emblem_layout_next (EmblemLayout *layout, GdkPixbuf **emblem_pixbuf, ArtIRect *emblem_rect); -static void get_emblem_rectangle (NautilusIconCanvasItem *icon_item, +static void get_emblem_rectangle (NautilusIconCanvasItem *icon_item, int which_emblem, ArtIRect *rect); @@ -1876,9 +1876,11 @@ create_annotation (NautilusIconCanvasItem *icon_item, int emblem_index) { uint fill_color, outline_color; double top, left; - double delta_x, delta_y; + double right, bottom; ArtDRect icon_rect; ArtIRect emblem_rect; + int emblem_x, emblem_y; + double world_emblem_x, world_emblem_y; int annotation_width; char *note_text; GnomeCanvas *canvas; @@ -1914,12 +1916,17 @@ create_annotation (NautilusIconCanvasItem *icon_item, int emblem_index) if (canvas->aa) { get_emblem_rectangle (icon_item, emblem_index, &emblem_rect); annotation_width = icon_item->details->annotation->x2 - icon_item->details->annotation->x1; - left = ((emblem_rect.x1 + emblem_rect.x0) / 2) - (annotation_width / 2.0 ); - top = (emblem_rect.y1 + emblem_rect.y0) / 2; + + emblem_x = (emblem_rect.x0 + emblem_rect.x1) / 2; + emblem_y = (emblem_rect.y0 + emblem_rect.y1) / 2; + gnome_canvas_c2w (canvas, emblem_x, emblem_y, &world_emblem_x, &world_emblem_y); - delta_x = left - icon_item->details->annotation->x1; - delta_y = top - icon_item->details->annotation->y1; - gnome_canvas_item_move (icon_item->details->annotation, delta_x, delta_y); + left = world_emblem_x - (annotation_width / 2.0 ); + top = world_emblem_y; + right = left + annotation_width; + bottom = top + icon_item->details->annotation->y2 - icon_item->details->annotation->y1; + + gnome_canvas_item_set (icon_item->details->annotation, "x1", left, "y1", top, "x2", right, "y2", bottom, NULL); } gnome_canvas_item_raise_to_top (icon_item->details->annotation); @@ -2304,7 +2311,7 @@ get_emblem_rectangle (NautilusIconCanvasItem *icon_item, EmblemLayout emblem_layout; GdkPixbuf *pixbuf; int emblem_index; - + emblem_layout_reset (&emblem_layout, icon_item, &icon_item->details->canvas_rect); emblem_index = 0; diff --git a/libnautilus-private/nautilus-canvas-note-item.c b/libnautilus-private/nautilus-canvas-note-item.c index 985884b99..2fb752696 100644 --- a/libnautilus-private/nautilus-canvas-note-item.c +++ b/libnautilus-private/nautilus-canvas-note-item.c @@ -345,8 +345,8 @@ nautilus_canvas_note_item_set_note_text (NautilusCanvasNoteItem *note_item, cons width = (total_width < ANNOTATION_WIDTH) ? total_width : ANNOTATION_WIDTH; /* add some vertical slop for descenders and incorporate scale factor */ - note_item->x2 = note_item->x1 + (width / item->canvas->pixels_per_unit); - note_item->y2 = note_item->y1 + 4.0 + (height / item->canvas->pixels_per_unit); + note_item->x2 = floor (note_item->x1 + (width / item->canvas->pixels_per_unit) + .5); + note_item->y2 = floor (note_item->y1 + 4.0 + (height / item->canvas->pixels_per_unit) + .5); update_item_bounding_box (note_item); @@ -890,7 +890,7 @@ nautilus_canvas_note_item_update (GnomeCanvasItem *item, double affine[6], ArtSV x1 = note_item->x2; y1 = note_item->y2; - round_off_amount = item->canvas->pixels_per_unit; + round_off_amount = item->canvas->pixels_per_unit / 2; gnome_canvas_item_reset_bounds (item); midpoint = (x1 + x0) / 2; diff --git a/libnautilus-private/nautilus-icon-canvas-item.c b/libnautilus-private/nautilus-icon-canvas-item.c index 423f4066a..c1d500e15 100644 --- a/libnautilus-private/nautilus-icon-canvas-item.c +++ b/libnautilus-private/nautilus-icon-canvas-item.c @@ -228,10 +228,10 @@ static void get_icon_canvas_rectangle (NautilusIconCanvasIt static void emblem_layout_reset (EmblemLayout *layout, NautilusIconCanvasItem *icon_item, const ArtIRect *icon_rect); -static gboolean emblem_layout_next (EmblemLayout *layout, +static gboolean emblem_layout_next (EmblemLayout *layout, GdkPixbuf **emblem_pixbuf, ArtIRect *emblem_rect); -static void get_emblem_rectangle (NautilusIconCanvasItem *icon_item, +static void get_emblem_rectangle (NautilusIconCanvasItem *icon_item, int which_emblem, ArtIRect *rect); @@ -1876,9 +1876,11 @@ create_annotation (NautilusIconCanvasItem *icon_item, int emblem_index) { uint fill_color, outline_color; double top, left; - double delta_x, delta_y; + double right, bottom; ArtDRect icon_rect; ArtIRect emblem_rect; + int emblem_x, emblem_y; + double world_emblem_x, world_emblem_y; int annotation_width; char *note_text; GnomeCanvas *canvas; @@ -1914,12 +1916,17 @@ create_annotation (NautilusIconCanvasItem *icon_item, int emblem_index) if (canvas->aa) { get_emblem_rectangle (icon_item, emblem_index, &emblem_rect); annotation_width = icon_item->details->annotation->x2 - icon_item->details->annotation->x1; - left = ((emblem_rect.x1 + emblem_rect.x0) / 2) - (annotation_width / 2.0 ); - top = (emblem_rect.y1 + emblem_rect.y0) / 2; + + emblem_x = (emblem_rect.x0 + emblem_rect.x1) / 2; + emblem_y = (emblem_rect.y0 + emblem_rect.y1) / 2; + gnome_canvas_c2w (canvas, emblem_x, emblem_y, &world_emblem_x, &world_emblem_y); - delta_x = left - icon_item->details->annotation->x1; - delta_y = top - icon_item->details->annotation->y1; - gnome_canvas_item_move (icon_item->details->annotation, delta_x, delta_y); + left = world_emblem_x - (annotation_width / 2.0 ); + top = world_emblem_y; + right = left + annotation_width; + bottom = top + icon_item->details->annotation->y2 - icon_item->details->annotation->y1; + + gnome_canvas_item_set (icon_item->details->annotation, "x1", left, "y1", top, "x2", right, "y2", bottom, NULL); } gnome_canvas_item_raise_to_top (icon_item->details->annotation); @@ -2304,7 +2311,7 @@ get_emblem_rectangle (NautilusIconCanvasItem *icon_item, EmblemLayout emblem_layout; GdkPixbuf *pixbuf; int emblem_index; - + emblem_layout_reset (&emblem_layout, icon_item, &icon_item->details->canvas_rect); emblem_index = 0; |