Change parameters for functions that accept and return ArtIRect,

* components/news/nautilus-news.c:
	* libnautilus-extensions/nautilus-icon-canvas-item.c:
	* libnautilus-extensions/nautilus-icon-canvas-item.h:
	* libnautilus-extensions/nautilus-icon-container.c:
	* libnautilus-extensions/nautilus-icon-dnd.c:
	* libnautilus-extensions/nautilus-icon-factory.c:
	* src/file-manager/fm-list-view.c:
	* src/nautilus-about.c:
	* test/test.c:
	Change parameters for functions that accept and return ArtIRect,
	EelArtIPoint, ArtDRect, EelDimensions to pass by value instead of
	by pointer.
This commit is contained in:
Ramiro Estrugo 2001-04-30 11:39:30 +00:00
parent e3de11277e
commit 1260bbb9a4
15 changed files with 507 additions and 515 deletions

View file

@ -1,3 +1,18 @@
2001-04-30 Ramiro Estrugo <ramiro@eazel.com>
* components/news/nautilus-news.c:
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-dnd.c:
* libnautilus-extensions/nautilus-icon-factory.c:
* src/file-manager/fm-list-view.c:
* src/nautilus-about.c:
* test/test.c:
Change parameters for functions that accept and return ArtIRect,
EelArtIPoint, ArtDRect, EelDimensions to pass by value instead of
by pointer.
2001-04-30 Dan Mueth <dan@eazel.com>
Updating Nautilus Quick Reference, both content and many

View file

@ -597,7 +597,7 @@ draw_rss_items (RSSChannelData *channel_data,
if (!art_irect_empty (&dest_bounds)) {
eel_smooth_text_layout_draw_to_pixbuf
(smooth_text_layout, pixbuf,
0, 0, &dest_bounds, GTK_JUSTIFY_LEFT,
0, 0, dest_bounds, GTK_JUSTIFY_LEFT,
TRUE, text_color,
EEL_OPACITY_FULLY_OPAQUE);

View file

@ -168,8 +168,6 @@ static void nautilus_icon_canvas_item_get_arg (GtkObject
GtkArg *arg,
guint arg_id);
/* GnomeCanvasItem */
static void nautilus_icon_canvas_item_update (GnomeCanvasItem *item,
double *affine,
@ -195,8 +193,6 @@ static void nautilus_icon_canvas_item_bounds (GnomeCanvasItem
double *x2,
double *y2);
/* private */
static void draw_or_measure_label_text (NautilusIconCanvasItem *item,
GdkDrawable *drawable,
@ -215,7 +211,7 @@ static void get_icon_canvas_rectangle (NautilusIconCanvasIt
ArtIRect *rect);
static void emblem_layout_reset (EmblemLayout *layout,
NautilusIconCanvasItem *icon_item,
const ArtIRect *icon_rect);
ArtIRect icon_rect);
static gboolean emblem_layout_next (EmblemLayout *layout,
GdkPixbuf **emblem_pixbuf,
ArtIRect *emblem_rect);
@ -224,11 +220,9 @@ static void draw_pixbuf (GdkPixbuf
int x,
int y);
static gboolean hit_test_stretch_handle (NautilusIconCanvasItem *item,
const ArtIRect *canvas_rect);
ArtIRect canvas_rect);
static gboolean icon_canvas_item_is_smooth (const NautilusIconCanvasItem *icon_item);
EEL_DEFINE_CLASS_BOILERPLATE (NautilusIconCanvasItem, nautilus_icon_canvas_item, GNOME_TYPE_CANVAS_ITEM)
static EelSmoothTextLayoutCache *layout_cache;
@ -638,16 +632,19 @@ recompute_bounding_box (NautilusIconCanvasItem *icon_item)
item->y2 = bottom_right.y;
}
static void
static ArtIRect
compute_text_rectangle (NautilusIconCanvasItem *item,
const ArtIRect *icon_rect,
ArtIRect *text_rect)
ArtIRect icon_rectangle)
{
ArtIRect text_rectangle;
/* Compute text rectangle. */
text_rect->x0 = (icon_rect->x0 + icon_rect->x1) / 2 - item->details->text_width / 2;
text_rect->y0 = icon_rect->y1 + LABEL_OFFSET;
text_rect->x1 = text_rect->x0 + item->details->text_width;
text_rect->y1 = text_rect->y0 + item->details->text_height;
text_rectangle.x0 = (icon_rectangle.x0 + icon_rectangle.x1) / 2 - item->details->text_width / 2;
text_rectangle.y0 = icon_rectangle.y1 + LABEL_OFFSET;
text_rectangle.x1 = text_rectangle.x0 + item->details->text_width;
text_rectangle.y1 = text_rectangle.y0 + item->details->text_height;
return text_rectangle;
}
void
@ -658,34 +655,34 @@ nautilus_icon_canvas_item_update_bounds (NautilusIconCanvasItem *item)
GdkPixbuf *emblem_pixbuf;
/* Compute new bounds. */
eel_gnome_canvas_item_get_current_canvas_bounds
(GNOME_CANVAS_ITEM (item), &before);
before = eel_gnome_canvas_item_get_current_canvas_bounds
(GNOME_CANVAS_ITEM (item));
recompute_bounding_box (item);
eel_gnome_canvas_item_get_current_canvas_bounds
(GNOME_CANVAS_ITEM (item), &after);
after = eel_gnome_canvas_item_get_current_canvas_bounds
(GNOME_CANVAS_ITEM (item));
/* If the bounds didn't change, we are done. */
if (eel_art_irect_equal (&before, &after)) {
if (eel_art_irect_equal (before, after)) {
return;
}
/* Update canvas and text rect cache */
get_icon_canvas_rectangle (item, &item->details->canvas_rect);
compute_text_rectangle (item, &item->details->canvas_rect, &item->details->text_rect);
item->details->text_rect = compute_text_rectangle (item, item->details->canvas_rect);
/* Update emblem rect cache */
item->details->emblem_rect.x0 = 0;
item->details->emblem_rect.x1 = 0;
item->details->emblem_rect.y0 = 0;
item->details->emblem_rect.y1 = 0;
emblem_layout_reset (&emblem_layout, item, &item->details->canvas_rect);
emblem_layout_reset (&emblem_layout, item, item->details->canvas_rect);
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect)) {
art_irect_union (&item->details->emblem_rect, &item->details->emblem_rect, &emblem_rect);
}
/* Send out the bounds_changed signal and queue a redraw. */
eel_gnome_canvas_request_redraw_rectangle
(GNOME_CANVAS_ITEM (item)->canvas, &before);
(GNOME_CANVAS_ITEM (item)->canvas, before);
gtk_signal_emit (GTK_OBJECT (item),
signals[BOUNDS_CHANGED]);
eel_gnome_canvas_item_request_redraw
@ -1107,10 +1104,10 @@ draw_stretch_handles_aa (NautilusIconCanvasItem *item, GnomeCanvasBuf *buf,
}
static void
emblem_layout_reset (EmblemLayout *layout, NautilusIconCanvasItem *icon_item, const ArtIRect *icon_rect)
emblem_layout_reset (EmblemLayout *layout, NautilusIconCanvasItem *icon_item, ArtIRect icon_rect)
{
layout->icon_item = icon_item;
layout->icon_rect = *icon_rect;
layout->icon_rect = icon_rect;
layout->side = RIGHT_SIDE;
layout->position = 0;
layout->index = 0;
@ -1387,7 +1384,7 @@ nautilus_icon_canvas_item_draw (GnomeCanvasItem *item, GdkDrawable *drawable,
gdk_pixbuf_unref (temp_pixbuf);
/* Draw the emblem pixbufs. */
emblem_layout_reset (&emblem_layout, icon_item, &icon_rect);
emblem_layout_reset (&emblem_layout, icon_item, icon_rect);
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect)) {
draw_pixbuf (emblem_pixbuf, drawable, emblem_rect.x0, emblem_rect.y0);
}
@ -1535,7 +1532,7 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
destination_pixbuf,
0,
0,
&destination_area,
destination_area,
GTK_JUSTIFY_CENTER,
underlined,
EEL_RGB_COLOR_BLACK,
@ -1550,7 +1547,7 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
destination_pixbuf,
0,
0,
&destination_area,
destination_area,
GTK_JUSTIFY_CENTER,
underlined,
label_color,
@ -1566,7 +1563,7 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
destination_pixbuf,
0,
0,
&destination_area,
destination_area,
GTK_JUSTIFY_CENTER,
underlined,
label_color,
@ -1750,7 +1747,7 @@ nautilus_icon_canvas_item_render (GnomeCanvasItem *item, GnomeCanvasBuf *buf)
gdk_pixbuf_unref (temp_pixbuf);
/* draw the emblems */
emblem_layout_reset (&emblem_layout, icon_item, &icon_rect);
emblem_layout_reset (&emblem_layout, icon_item, icon_rect);
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect)) {
eel_gnome_canvas_draw_pixbuf (buf, emblem_pixbuf, emblem_rect.x0, emblem_rect.y0);
}
@ -1828,7 +1825,7 @@ nautilus_icon_canvas_item_event (GnomeCanvasItem *item, GdkEvent *event)
}
static gboolean
hit_test_pixbuf (GdkPixbuf *pixbuf, const ArtIRect *pixbuf_location, const ArtIRect *probe_rect)
hit_test_pixbuf (GdkPixbuf *pixbuf, ArtIRect pixbuf_location, ArtIRect probe_rect)
{
ArtIRect relative_rect, pixbuf_rect;
int x, y;
@ -1840,10 +1837,10 @@ hit_test_pixbuf (GdkPixbuf *pixbuf, const ArtIRect *pixbuf_location, const ArtIR
}
/* Check to see if it's within the rectangle at all. */
relative_rect.x0 = probe_rect->x0 - pixbuf_location->x0;
relative_rect.y0 = probe_rect->y0 - pixbuf_location->y0;
relative_rect.x1 = probe_rect->x1 - pixbuf_location->x0;
relative_rect.y1 = probe_rect->y1 - pixbuf_location->y0;
relative_rect.x0 = probe_rect.x0 - pixbuf_location.x0;
relative_rect.y0 = probe_rect.y0 - pixbuf_location.y0;
relative_rect.x1 = probe_rect.x1 - pixbuf_location.x0;
relative_rect.y1 = probe_rect.y1 - pixbuf_location.y0;
pixbuf_rect.x0 = 0;
pixbuf_rect.y0 = 0;
pixbuf_rect.x1 = gdk_pixbuf_get_width (pixbuf);
@ -1874,7 +1871,7 @@ hit_test_pixbuf (GdkPixbuf *pixbuf, const ArtIRect *pixbuf_location, const ArtIR
}
static gboolean
hit_test (NautilusIconCanvasItem *icon_item, const ArtIRect *canvas_rect)
hit_test (NautilusIconCanvasItem *icon_item, ArtIRect canvas_rect)
{
NautilusIconCanvasItemDetails *details;
ArtIRect emblem_rect;
@ -1884,9 +1881,9 @@ hit_test (NautilusIconCanvasItem *icon_item, const ArtIRect *canvas_rect)
details = icon_item->details;
/* Quick check to see if the rect hits the icon, text or emblems at all. */
if (!eel_art_irect_hits_irect (&icon_item->details->canvas_rect, canvas_rect)
&& (!eel_art_irect_hits_irect (&details->text_rect, canvas_rect))
&& (!eel_art_irect_hits_irect (&details->emblem_rect, canvas_rect))) {
if (!eel_art_irect_hits_irect (icon_item->details->canvas_rect, canvas_rect)
&& (!eel_art_irect_hits_irect (details->text_rect, canvas_rect))
&& (!eel_art_irect_hits_irect (details->emblem_rect, canvas_rect))) {
return FALSE;
}
@ -1897,25 +1894,25 @@ hit_test (NautilusIconCanvasItem *icon_item, const ArtIRect *canvas_rect)
/* Check for hit in the icon. If we're highlighted for dropping, anywhere in the rect is OK */
if (icon_item->details->is_highlighted_for_drop) {
if (eel_art_irect_hits_irect (&icon_item->details->canvas_rect, canvas_rect)) {
if (eel_art_irect_hits_irect (icon_item->details->canvas_rect, canvas_rect)) {
return TRUE;
}
} else {
if (hit_test_pixbuf (details->pixbuf, &icon_item->details->canvas_rect, canvas_rect)) {
if (hit_test_pixbuf (details->pixbuf, icon_item->details->canvas_rect, canvas_rect)) {
return TRUE;
}
}
/* Check for hit in the text. */
if (eel_art_irect_hits_irect (&details->text_rect, canvas_rect)
if (eel_art_irect_hits_irect (details->text_rect, canvas_rect)
&& !icon_item->details->is_renaming) {
return TRUE;
}
/* Check for hit in the emblem pixbufs. */
emblem_layout_reset (&emblem_layout, icon_item, &icon_item->details->canvas_rect);
emblem_layout_reset (&emblem_layout, icon_item, icon_item->details->canvas_rect);
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect)) {
if (hit_test_pixbuf (emblem_pixbuf, &emblem_rect, canvas_rect)) {
if (hit_test_pixbuf (emblem_pixbuf, emblem_rect, canvas_rect)) {
return TRUE;
}
}
@ -1935,7 +1932,7 @@ nautilus_icon_canvas_item_point (GnomeCanvasItem *item, double x, double y, int
canvas_rect.y0 = cy;
canvas_rect.x1 = cx + 1;
canvas_rect.y1 = cy + 1;
if (hit_test (NAUTILUS_ICON_CANVAS_ITEM (item), &canvas_rect)) {
if (hit_test (NAUTILUS_ICON_CANVAS_ITEM (item), canvas_rect)) {
return 0.0;
} else {
/* This value means not hit.
@ -1979,11 +1976,11 @@ nautilus_icon_canvas_item_bounds (GnomeCanvasItem *item,
}
/* Compute text rectangle. */
compute_text_rectangle (icon_item, &icon_rect, &text_rect);
text_rect = compute_text_rectangle (icon_item, icon_rect);
/* Compute total rectangle, adding in emblem rectangles. */
art_irect_union (&total_rect, &icon_rect, &text_rect);
emblem_layout_reset (&emblem_layout, icon_item, &icon_rect);
emblem_layout_reset (&emblem_layout, icon_item, icon_rect);
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect)) {
art_irect_union (&total_rect, &total_rect, &emblem_rect);
}
@ -1997,17 +1994,16 @@ nautilus_icon_canvas_item_bounds (GnomeCanvasItem *item,
}
/* Get the rectangle of the icon only, in world coordinates. */
void
nautilus_icon_canvas_item_get_icon_rectangle (NautilusIconCanvasItem *item,
ArtDRect *rect)
ArtDRect
nautilus_icon_canvas_item_get_icon_rectangle (const NautilusIconCanvasItem *item)
{
ArtDRect rectangle;
double i2w[6];
ArtPoint art_point;
double pixels_per_unit;
GdkPixbuf *pixbuf;
g_return_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item));
g_return_if_fail (rect != NULL);
g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item), eel_art_drect_empty);
gnome_canvas_item_i2w_affine (GNOME_CANVAS_ITEM (item), i2w);
@ -2015,14 +2011,16 @@ nautilus_icon_canvas_item_get_icon_rectangle (NautilusIconCanvasItem *item,
art_point.y = 0;
art_affine_point (&art_point, &art_point, i2w);
rect->x0 = art_point.x;
rect->y0 = art_point.y;
rectangle.x0 = art_point.x;
rectangle.y0 = art_point.y;
pixbuf = item->details->pixbuf;
pixels_per_unit = GNOME_CANVAS_ITEM (item)->canvas->pixels_per_unit;
rect->x1 = rect->x0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_width (pixbuf)) / pixels_per_unit;
rect->y1 = rect->y0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_height (pixbuf)) / pixels_per_unit;
rectangle.x1 = rectangle.x0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_width (pixbuf)) / pixels_per_unit;
rectangle.y1 = rectangle.y0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_height (pixbuf)) / pixels_per_unit;
return rectangle;
}
/* Get the rectangle of the icon only, in canvas coordinates. */
@ -2083,7 +2081,7 @@ icon_canvas_item_is_smooth (const NautilusIconCanvasItem *icon_item)
/* Check if one of the stretch handles was hit. */
static gboolean
hit_test_stretch_handle (NautilusIconCanvasItem *item,
const ArtIRect *probe_canvas_rect)
ArtIRect probe_canvas_rect)
{
ArtIRect icon_rect;
char *knob_filename;
@ -2099,7 +2097,7 @@ hit_test_stretch_handle (NautilusIconCanvasItem *item,
/* Quick check to see if the rect hits the icon at all. */
icon_rect = item->details->canvas_rect;
if (!eel_art_irect_hits_irect (probe_canvas_rect, &icon_rect)) {
if (!eel_art_irect_hits_irect (probe_canvas_rect, icon_rect)) {
return FALSE;
}
@ -2112,29 +2110,28 @@ hit_test_stretch_handle (NautilusIconCanvasItem *item,
gdk_pixbuf_unref(knob_pixbuf);
/* Check for hits in the stretch handles. */
return (probe_canvas_rect->x0 < icon_rect.x0 + knob_width
|| probe_canvas_rect->x1 >= icon_rect.x1 - knob_width)
&& (probe_canvas_rect->y0 < icon_rect.y0 + knob_height
|| probe_canvas_rect->y1 >= icon_rect.y1 - knob_height);
return (probe_canvas_rect.x0 < icon_rect.x0 + knob_width
|| probe_canvas_rect.x1 >= icon_rect.x1 - knob_width)
&& (probe_canvas_rect.y0 < icon_rect.y0 + knob_height
|| probe_canvas_rect.y1 >= icon_rect.y1 - knob_height);
}
gboolean
nautilus_icon_canvas_item_hit_test_stretch_handles (NautilusIconCanvasItem *item,
const ArtPoint *world_point)
ArtPoint world_point)
{
ArtIRect canvas_rect;
g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item), FALSE);
g_return_val_if_fail (world_point != NULL, FALSE);
gnome_canvas_w2c (GNOME_CANVAS_ITEM (item)->canvas,
world_point->x,
world_point->y,
world_point.x,
world_point.y,
&canvas_rect.x0,
&canvas_rect.y0);
canvas_rect.x1 = canvas_rect.x0 + 1;
canvas_rect.y1 = canvas_rect.y0 + 1;
return hit_test_stretch_handle (item, &canvas_rect);
return hit_test_stretch_handle (item, canvas_rect);
}
/* nautilus_icon_canvas_item_hit_test_rectangle
@ -2143,10 +2140,9 @@ nautilus_icon_canvas_item_hit_test_stretch_handles (NautilusIconCanvasItem *item
* canvas rect.
*/
gboolean
nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item, const ArtIRect *canvas_rect)
nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item, ArtIRect canvas_rect)
{
g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item), FALSE);
g_return_val_if_fail (canvas_rect != NULL, FALSE);
return hit_test (item, canvas_rect);
}

View file

@ -64,7 +64,6 @@ struct NautilusIconCanvasItemClass {
/* GtkObject */
GtkType nautilus_icon_canvas_item_get_type (void);
/* attributes */
void nautilus_icon_canvas_item_set_image (NautilusIconCanvasItem *item,
GdkPixbuf *image);
@ -83,12 +82,11 @@ void nautilus_icon_canvas_item_set_renaming (NautilusIconCanv
/* geometry and hit testing */
gboolean nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item,
const ArtIRect *canvas_rect);
ArtIRect canvas_rect);
gboolean nautilus_icon_canvas_item_hit_test_stretch_handles (NautilusIconCanvasItem *item,
const ArtPoint *world_point);
ArtPoint world_point);
void nautilus_icon_canvas_item_invalidate_label_size (NautilusIconCanvasItem *item);
void nautilus_icon_canvas_item_get_icon_rectangle (NautilusIconCanvasItem *item,
ArtDRect *world_rectangle);
ArtDRect nautilus_icon_canvas_item_get_icon_rectangle (const NautilusIconCanvasItem *item);
void nautilus_icon_canvas_item_update_bounds (NautilusIconCanvasItem *item);
void nautilus_icon_canvas_item_set_smooth_font (NautilusIconCanvasItem *item,
EelScalableFont *font);

View file

@ -476,8 +476,8 @@ reveal_icon (NautilusIconContainer *container,
hadj = gtk_layout_get_hadjustment (GTK_LAYOUT (container));
vadj = gtk_layout_get_vadjustment (GTK_LAYOUT (container));
eel_gnome_canvas_item_get_canvas_bounds
(GNOME_CANVAS_ITEM (icon->item), &bounds);
bounds = eel_gnome_canvas_item_get_canvas_bounds
(GNOME_CANVAS_ITEM (icon->item));
if (bounds.y0 < vadj->value) {
eel_gtk_adjustment_set_value (vadj, bounds.y0);
@ -795,9 +795,9 @@ lay_down_one_line (NautilusIconContainer *container,
for (p = line_start; p != line_end; p = p->next) {
icon = p->data;
eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item), &bounds);
nautilus_icon_canvas_item_get_icon_rectangle (icon->item, &icon_bounds);
bounds = eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item));
icon_bounds = nautilus_icon_canvas_item_get_icon_rectangle (icon->item);
height_above = icon_bounds.y1 - bounds.y0;
height_below = bounds.y1 - icon_bounds.y1;
@ -817,9 +817,9 @@ lay_down_one_line (NautilusIconContainer *container,
for (p = line_start; p != line_end; p = p->next) {
icon = p->data;
eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item), &bounds);
nautilus_icon_canvas_item_get_icon_rectangle (icon->item, &icon_bounds);
bounds = eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item));
icon_bounds = nautilus_icon_canvas_item_get_icon_rectangle (icon->item);
width = get_icon_space_width (container, &bounds);
icon_set_position
@ -857,8 +857,8 @@ lay_down_icons_horizontal (NautilusIconContainer *container,
icon = p->data;
/* Get the width of the icon. */
eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item), &bounds);
bounds = eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item));
space_width = get_icon_space_width (container, &bounds);
/* If this icon doesn't fit, it's time to lay out the line that's queued up. */
@ -1249,8 +1249,8 @@ reload_icon_positions (NautilusIconContainer *container)
&have_stored_position);
if (have_stored_position) {
icon_set_position (icon, position.x, position.y);
eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item), &bounds);
bounds = eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item));
if (bounds.y1 > bottom) {
bottom = bounds.y1;
}
@ -1395,12 +1395,12 @@ rubberband_select (NautilusIconContainer *container,
/* Only do this calculation once, since all the canvas items
* we are interating are in the same coordinate space
*/
eel_gnome_canvas_world_to_canvas_rectangle
(GNOME_CANVAS_ITEM (icon->item)->canvas, current_rect, &canvas_rect);
canvas_rect = eel_gnome_canvas_world_to_canvas_rectangle
(GNOME_CANVAS_ITEM (icon->item)->canvas, *current_rect);
canvas_rect_calculated = TRUE;
}
is_in = nautilus_icon_canvas_item_hit_test_rectangle (icon->item, &canvas_rect);
is_in = nautilus_icon_canvas_item_hit_test_rectangle (icon->item, canvas_rect);
g_assert (icon->was_selected_before_rubberband == FALSE
|| icon->was_selected_before_rubberband == TRUE);
@ -1784,8 +1784,7 @@ compare_with_start_row (NautilusIconContainer *container,
{
ArtIRect bounds;
eel_gnome_canvas_item_get_current_canvas_bounds (GNOME_CANVAS_ITEM (icon->item),
&bounds);
bounds = eel_gnome_canvas_item_get_current_canvas_bounds (GNOME_CANVAS_ITEM (icon->item));
if (container->details->arrow_key_start < bounds.y0) {
return -1;
}
@ -1801,8 +1800,7 @@ compare_with_start_column (NautilusIconContainer *container,
{
ArtIRect bounds;
eel_gnome_canvas_item_get_current_canvas_bounds (GNOME_CANVAS_ITEM (icon->item),
&bounds);
bounds = eel_gnome_canvas_item_get_current_canvas_bounds (GNOME_CANVAS_ITEM (icon->item));
if (container->details->arrow_key_start < bounds.x0) {
return -1;
}
@ -2004,8 +2002,7 @@ record_arrow_key_start (NautilusIconContainer *container,
return;
}
nautilus_icon_canvas_item_get_icon_rectangle
(icon->item, &world_rect);
world_rect = nautilus_icon_canvas_item_get_icon_rectangle (icon->item);
gnome_canvas_w2c
(GNOME_CANVAS (container),
(world_rect.x0 + world_rect.x1) / 2,
@ -2596,7 +2593,7 @@ start_stretching (NautilusIconContainer *container)
world_point.x = details->drag_x;
world_point.y = details->drag_y;
if (!nautilus_icon_canvas_item_hit_test_stretch_handles
(icon->item, &world_point)) {
(icon->item, world_point)) {
return FALSE;
}
@ -4871,7 +4868,7 @@ nautilus_icon_container_start_renaming_selected_item (NautilusIconContainer *con
gnome_canvas_item_show (GNOME_CANVAS_ITEM (details->rename_widget));
}
nautilus_icon_canvas_item_get_icon_rectangle (icon->item, &icon_rect);
icon_rect = nautilus_icon_canvas_item_get_icon_rectangle (icon->item);
gnome_canvas_item_w2i (GNOME_CANVAS_ITEM (details->rename_widget), &icon_rect.x0, &icon_rect.y0);
gnome_canvas_item_w2i (GNOME_CANVAS_ITEM (details->rename_widget), &icon_rect.x1, &icon_rect.y1);

View file

@ -228,10 +228,9 @@ icon_get_data_binder (NautilusIcon *icon, gpointer data)
container = NAUTILUS_ICON_CONTAINER (context->iterator_context);
nautilus_icon_canvas_item_get_icon_rectangle
(icon->item, &world_rect);
eel_gnome_canvas_world_to_window_rectangle
(GNOME_CANVAS (container), &world_rect, &window_rect);
world_rect = nautilus_icon_canvas_item_get_icon_rectangle (icon->item);
window_rect = eel_gnome_canvas_world_to_window_rectangle
(GNOME_CANVAS (container), world_rect);
uri = nautilus_icon_container_get_icon_uri (container, icon);
if (uri == NULL) {
@ -551,9 +550,9 @@ nautilus_icon_container_item_at (NautilusIconContainer *container,
NautilusIcon *icon;
icon = p->data;
eel_gnome_canvas_world_to_canvas_rectangle (GNOME_CANVAS_ITEM (icon->item)->canvas, &point, &canvas_point);
if (nautilus_icon_canvas_item_hit_test_rectangle (icon->item, &canvas_point)) {
canvas_point = eel_gnome_canvas_world_to_canvas_rectangle (GNOME_CANVAS_ITEM (icon->item)->canvas,
point);
if (nautilus_icon_canvas_item_hit_test_rectangle (icon->item, canvas_point)) {
return icon;
}
}
@ -1286,10 +1285,10 @@ nautilus_icon_dnd_begin_drag (NautilusIconContainer *container,
to it, with the hope that we get it back someday as X Windows improves */
/* compute the image's offset */
nautilus_icon_canvas_item_get_icon_rectangle
(container->details->drag_icon->item, &world_rect);
eel_gnome_canvas_world_to_window_rectangle
(canvas, &world_rect, &window_rect);
world_rect = nautilus_icon_canvas_item_get_icon_rectangle (
container->details->drag_icon->item);
window_rect = eel_gnome_canvas_world_to_window_rectangle
(canvas, world_rect);
x_offset = dnd_info->drag_info.start_x - window_rect.x0;
y_offset = dnd_info->drag_info.start_y - window_rect.y0;

View file

@ -2426,15 +2426,15 @@ GdkPixbuf * nautilus_icon_factory_get_pixbuf_from_name (const char *icon_name,
static gboolean
embedded_text_rect_usable (const ArtIRect *embedded_text_rect)
embedded_text_rect_usable (ArtIRect embedded_text_rect)
{
if (art_irect_empty (embedded_text_rect)) {
if (art_irect_empty (&embedded_text_rect)) {
return FALSE;
}
if (embedded_text_rect->x1 - embedded_text_rect->x0
if (embedded_text_rect.x1 - embedded_text_rect.x0
< MINIMUM_EMBEDDED_TEXT_RECT_WIDTH ||
embedded_text_rect->y1 - embedded_text_rect->y0
embedded_text_rect.y1 - embedded_text_rect.y0
< MINIMUM_EMBEDDED_TEXT_RECT_HEIGHT) {
return FALSE;
}
@ -2470,14 +2470,13 @@ embedded_text_font_free (void)
static GdkPixbuf *
embed_text (GdkPixbuf *pixbuf_without_text,
const ArtIRect *embedded_text_rect,
ArtIRect embedded_text_rect,
const char *text)
{
EelSmoothTextLayout *smooth_text_layout;
GdkPixbuf *pixbuf_with_text;
g_return_val_if_fail (pixbuf_without_text != NULL, NULL);
g_return_val_if_fail (embedded_text_rect != NULL, NULL);
/* Quick out for the case where there's no place to embed the
* text or the place is too small or there's no text.
@ -2550,7 +2549,7 @@ load_icon_with_embedded_text (NautilusScalableIcon *scalable_icon,
/* Create a pixbuf with the text in it. */
pixbuf_with_text = embed_text (icon_without_text->pixbuf,
&icon_without_text->details.text_rect,
icon_without_text->details.text_rect,
scalable_icon->embedded_text);
if (pixbuf_with_text == NULL) {
return icon_without_text;

View file

@ -168,8 +168,6 @@ static void nautilus_icon_canvas_item_get_arg (GtkObject
GtkArg *arg,
guint arg_id);
/* GnomeCanvasItem */
static void nautilus_icon_canvas_item_update (GnomeCanvasItem *item,
double *affine,
@ -195,8 +193,6 @@ static void nautilus_icon_canvas_item_bounds (GnomeCanvasItem
double *x2,
double *y2);
/* private */
static void draw_or_measure_label_text (NautilusIconCanvasItem *item,
GdkDrawable *drawable,
@ -215,7 +211,7 @@ static void get_icon_canvas_rectangle (NautilusIconCanvasIt
ArtIRect *rect);
static void emblem_layout_reset (EmblemLayout *layout,
NautilusIconCanvasItem *icon_item,
const ArtIRect *icon_rect);
ArtIRect icon_rect);
static gboolean emblem_layout_next (EmblemLayout *layout,
GdkPixbuf **emblem_pixbuf,
ArtIRect *emblem_rect);
@ -224,11 +220,9 @@ static void draw_pixbuf (GdkPixbuf
int x,
int y);
static gboolean hit_test_stretch_handle (NautilusIconCanvasItem *item,
const ArtIRect *canvas_rect);
ArtIRect canvas_rect);
static gboolean icon_canvas_item_is_smooth (const NautilusIconCanvasItem *icon_item);
EEL_DEFINE_CLASS_BOILERPLATE (NautilusIconCanvasItem, nautilus_icon_canvas_item, GNOME_TYPE_CANVAS_ITEM)
static EelSmoothTextLayoutCache *layout_cache;
@ -638,16 +632,19 @@ recompute_bounding_box (NautilusIconCanvasItem *icon_item)
item->y2 = bottom_right.y;
}
static void
static ArtIRect
compute_text_rectangle (NautilusIconCanvasItem *item,
const ArtIRect *icon_rect,
ArtIRect *text_rect)
ArtIRect icon_rectangle)
{
ArtIRect text_rectangle;
/* Compute text rectangle. */
text_rect->x0 = (icon_rect->x0 + icon_rect->x1) / 2 - item->details->text_width / 2;
text_rect->y0 = icon_rect->y1 + LABEL_OFFSET;
text_rect->x1 = text_rect->x0 + item->details->text_width;
text_rect->y1 = text_rect->y0 + item->details->text_height;
text_rectangle.x0 = (icon_rectangle.x0 + icon_rectangle.x1) / 2 - item->details->text_width / 2;
text_rectangle.y0 = icon_rectangle.y1 + LABEL_OFFSET;
text_rectangle.x1 = text_rectangle.x0 + item->details->text_width;
text_rectangle.y1 = text_rectangle.y0 + item->details->text_height;
return text_rectangle;
}
void
@ -658,34 +655,34 @@ nautilus_icon_canvas_item_update_bounds (NautilusIconCanvasItem *item)
GdkPixbuf *emblem_pixbuf;
/* Compute new bounds. */
eel_gnome_canvas_item_get_current_canvas_bounds
(GNOME_CANVAS_ITEM (item), &before);
before = eel_gnome_canvas_item_get_current_canvas_bounds
(GNOME_CANVAS_ITEM (item));
recompute_bounding_box (item);
eel_gnome_canvas_item_get_current_canvas_bounds
(GNOME_CANVAS_ITEM (item), &after);
after = eel_gnome_canvas_item_get_current_canvas_bounds
(GNOME_CANVAS_ITEM (item));
/* If the bounds didn't change, we are done. */
if (eel_art_irect_equal (&before, &after)) {
if (eel_art_irect_equal (before, after)) {
return;
}
/* Update canvas and text rect cache */
get_icon_canvas_rectangle (item, &item->details->canvas_rect);
compute_text_rectangle (item, &item->details->canvas_rect, &item->details->text_rect);
item->details->text_rect = compute_text_rectangle (item, item->details->canvas_rect);
/* Update emblem rect cache */
item->details->emblem_rect.x0 = 0;
item->details->emblem_rect.x1 = 0;
item->details->emblem_rect.y0 = 0;
item->details->emblem_rect.y1 = 0;
emblem_layout_reset (&emblem_layout, item, &item->details->canvas_rect);
emblem_layout_reset (&emblem_layout, item, item->details->canvas_rect);
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect)) {
art_irect_union (&item->details->emblem_rect, &item->details->emblem_rect, &emblem_rect);
}
/* Send out the bounds_changed signal and queue a redraw. */
eel_gnome_canvas_request_redraw_rectangle
(GNOME_CANVAS_ITEM (item)->canvas, &before);
(GNOME_CANVAS_ITEM (item)->canvas, before);
gtk_signal_emit (GTK_OBJECT (item),
signals[BOUNDS_CHANGED]);
eel_gnome_canvas_item_request_redraw
@ -1107,10 +1104,10 @@ draw_stretch_handles_aa (NautilusIconCanvasItem *item, GnomeCanvasBuf *buf,
}
static void
emblem_layout_reset (EmblemLayout *layout, NautilusIconCanvasItem *icon_item, const ArtIRect *icon_rect)
emblem_layout_reset (EmblemLayout *layout, NautilusIconCanvasItem *icon_item, ArtIRect icon_rect)
{
layout->icon_item = icon_item;
layout->icon_rect = *icon_rect;
layout->icon_rect = icon_rect;
layout->side = RIGHT_SIDE;
layout->position = 0;
layout->index = 0;
@ -1387,7 +1384,7 @@ nautilus_icon_canvas_item_draw (GnomeCanvasItem *item, GdkDrawable *drawable,
gdk_pixbuf_unref (temp_pixbuf);
/* Draw the emblem pixbufs. */
emblem_layout_reset (&emblem_layout, icon_item, &icon_rect);
emblem_layout_reset (&emblem_layout, icon_item, icon_rect);
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect)) {
draw_pixbuf (emblem_pixbuf, drawable, emblem_rect.x0, emblem_rect.y0);
}
@ -1535,7 +1532,7 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
destination_pixbuf,
0,
0,
&destination_area,
destination_area,
GTK_JUSTIFY_CENTER,
underlined,
EEL_RGB_COLOR_BLACK,
@ -1550,7 +1547,7 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
destination_pixbuf,
0,
0,
&destination_area,
destination_area,
GTK_JUSTIFY_CENTER,
underlined,
label_color,
@ -1566,7 +1563,7 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
destination_pixbuf,
0,
0,
&destination_area,
destination_area,
GTK_JUSTIFY_CENTER,
underlined,
label_color,
@ -1750,7 +1747,7 @@ nautilus_icon_canvas_item_render (GnomeCanvasItem *item, GnomeCanvasBuf *buf)
gdk_pixbuf_unref (temp_pixbuf);
/* draw the emblems */
emblem_layout_reset (&emblem_layout, icon_item, &icon_rect);
emblem_layout_reset (&emblem_layout, icon_item, icon_rect);
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect)) {
eel_gnome_canvas_draw_pixbuf (buf, emblem_pixbuf, emblem_rect.x0, emblem_rect.y0);
}
@ -1828,7 +1825,7 @@ nautilus_icon_canvas_item_event (GnomeCanvasItem *item, GdkEvent *event)
}
static gboolean
hit_test_pixbuf (GdkPixbuf *pixbuf, const ArtIRect *pixbuf_location, const ArtIRect *probe_rect)
hit_test_pixbuf (GdkPixbuf *pixbuf, ArtIRect pixbuf_location, ArtIRect probe_rect)
{
ArtIRect relative_rect, pixbuf_rect;
int x, y;
@ -1840,10 +1837,10 @@ hit_test_pixbuf (GdkPixbuf *pixbuf, const ArtIRect *pixbuf_location, const ArtIR
}
/* Check to see if it's within the rectangle at all. */
relative_rect.x0 = probe_rect->x0 - pixbuf_location->x0;
relative_rect.y0 = probe_rect->y0 - pixbuf_location->y0;
relative_rect.x1 = probe_rect->x1 - pixbuf_location->x0;
relative_rect.y1 = probe_rect->y1 - pixbuf_location->y0;
relative_rect.x0 = probe_rect.x0 - pixbuf_location.x0;
relative_rect.y0 = probe_rect.y0 - pixbuf_location.y0;
relative_rect.x1 = probe_rect.x1 - pixbuf_location.x0;
relative_rect.y1 = probe_rect.y1 - pixbuf_location.y0;
pixbuf_rect.x0 = 0;
pixbuf_rect.y0 = 0;
pixbuf_rect.x1 = gdk_pixbuf_get_width (pixbuf);
@ -1874,7 +1871,7 @@ hit_test_pixbuf (GdkPixbuf *pixbuf, const ArtIRect *pixbuf_location, const ArtIR
}
static gboolean
hit_test (NautilusIconCanvasItem *icon_item, const ArtIRect *canvas_rect)
hit_test (NautilusIconCanvasItem *icon_item, ArtIRect canvas_rect)
{
NautilusIconCanvasItemDetails *details;
ArtIRect emblem_rect;
@ -1884,9 +1881,9 @@ hit_test (NautilusIconCanvasItem *icon_item, const ArtIRect *canvas_rect)
details = icon_item->details;
/* Quick check to see if the rect hits the icon, text or emblems at all. */
if (!eel_art_irect_hits_irect (&icon_item->details->canvas_rect, canvas_rect)
&& (!eel_art_irect_hits_irect (&details->text_rect, canvas_rect))
&& (!eel_art_irect_hits_irect (&details->emblem_rect, canvas_rect))) {
if (!eel_art_irect_hits_irect (icon_item->details->canvas_rect, canvas_rect)
&& (!eel_art_irect_hits_irect (details->text_rect, canvas_rect))
&& (!eel_art_irect_hits_irect (details->emblem_rect, canvas_rect))) {
return FALSE;
}
@ -1897,25 +1894,25 @@ hit_test (NautilusIconCanvasItem *icon_item, const ArtIRect *canvas_rect)
/* Check for hit in the icon. If we're highlighted for dropping, anywhere in the rect is OK */
if (icon_item->details->is_highlighted_for_drop) {
if (eel_art_irect_hits_irect (&icon_item->details->canvas_rect, canvas_rect)) {
if (eel_art_irect_hits_irect (icon_item->details->canvas_rect, canvas_rect)) {
return TRUE;
}
} else {
if (hit_test_pixbuf (details->pixbuf, &icon_item->details->canvas_rect, canvas_rect)) {
if (hit_test_pixbuf (details->pixbuf, icon_item->details->canvas_rect, canvas_rect)) {
return TRUE;
}
}
/* Check for hit in the text. */
if (eel_art_irect_hits_irect (&details->text_rect, canvas_rect)
if (eel_art_irect_hits_irect (details->text_rect, canvas_rect)
&& !icon_item->details->is_renaming) {
return TRUE;
}
/* Check for hit in the emblem pixbufs. */
emblem_layout_reset (&emblem_layout, icon_item, &icon_item->details->canvas_rect);
emblem_layout_reset (&emblem_layout, icon_item, icon_item->details->canvas_rect);
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect)) {
if (hit_test_pixbuf (emblem_pixbuf, &emblem_rect, canvas_rect)) {
if (hit_test_pixbuf (emblem_pixbuf, emblem_rect, canvas_rect)) {
return TRUE;
}
}
@ -1935,7 +1932,7 @@ nautilus_icon_canvas_item_point (GnomeCanvasItem *item, double x, double y, int
canvas_rect.y0 = cy;
canvas_rect.x1 = cx + 1;
canvas_rect.y1 = cy + 1;
if (hit_test (NAUTILUS_ICON_CANVAS_ITEM (item), &canvas_rect)) {
if (hit_test (NAUTILUS_ICON_CANVAS_ITEM (item), canvas_rect)) {
return 0.0;
} else {
/* This value means not hit.
@ -1979,11 +1976,11 @@ nautilus_icon_canvas_item_bounds (GnomeCanvasItem *item,
}
/* Compute text rectangle. */
compute_text_rectangle (icon_item, &icon_rect, &text_rect);
text_rect = compute_text_rectangle (icon_item, icon_rect);
/* Compute total rectangle, adding in emblem rectangles. */
art_irect_union (&total_rect, &icon_rect, &text_rect);
emblem_layout_reset (&emblem_layout, icon_item, &icon_rect);
emblem_layout_reset (&emblem_layout, icon_item, icon_rect);
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect)) {
art_irect_union (&total_rect, &total_rect, &emblem_rect);
}
@ -1997,17 +1994,16 @@ nautilus_icon_canvas_item_bounds (GnomeCanvasItem *item,
}
/* Get the rectangle of the icon only, in world coordinates. */
void
nautilus_icon_canvas_item_get_icon_rectangle (NautilusIconCanvasItem *item,
ArtDRect *rect)
ArtDRect
nautilus_icon_canvas_item_get_icon_rectangle (const NautilusIconCanvasItem *item)
{
ArtDRect rectangle;
double i2w[6];
ArtPoint art_point;
double pixels_per_unit;
GdkPixbuf *pixbuf;
g_return_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item));
g_return_if_fail (rect != NULL);
g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item), eel_art_drect_empty);
gnome_canvas_item_i2w_affine (GNOME_CANVAS_ITEM (item), i2w);
@ -2015,14 +2011,16 @@ nautilus_icon_canvas_item_get_icon_rectangle (NautilusIconCanvasItem *item,
art_point.y = 0;
art_affine_point (&art_point, &art_point, i2w);
rect->x0 = art_point.x;
rect->y0 = art_point.y;
rectangle.x0 = art_point.x;
rectangle.y0 = art_point.y;
pixbuf = item->details->pixbuf;
pixels_per_unit = GNOME_CANVAS_ITEM (item)->canvas->pixels_per_unit;
rect->x1 = rect->x0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_width (pixbuf)) / pixels_per_unit;
rect->y1 = rect->y0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_height (pixbuf)) / pixels_per_unit;
rectangle.x1 = rectangle.x0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_width (pixbuf)) / pixels_per_unit;
rectangle.y1 = rectangle.y0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_height (pixbuf)) / pixels_per_unit;
return rectangle;
}
/* Get the rectangle of the icon only, in canvas coordinates. */
@ -2083,7 +2081,7 @@ icon_canvas_item_is_smooth (const NautilusIconCanvasItem *icon_item)
/* Check if one of the stretch handles was hit. */
static gboolean
hit_test_stretch_handle (NautilusIconCanvasItem *item,
const ArtIRect *probe_canvas_rect)
ArtIRect probe_canvas_rect)
{
ArtIRect icon_rect;
char *knob_filename;
@ -2099,7 +2097,7 @@ hit_test_stretch_handle (NautilusIconCanvasItem *item,
/* Quick check to see if the rect hits the icon at all. */
icon_rect = item->details->canvas_rect;
if (!eel_art_irect_hits_irect (probe_canvas_rect, &icon_rect)) {
if (!eel_art_irect_hits_irect (probe_canvas_rect, icon_rect)) {
return FALSE;
}
@ -2112,29 +2110,28 @@ hit_test_stretch_handle (NautilusIconCanvasItem *item,
gdk_pixbuf_unref(knob_pixbuf);
/* Check for hits in the stretch handles. */
return (probe_canvas_rect->x0 < icon_rect.x0 + knob_width
|| probe_canvas_rect->x1 >= icon_rect.x1 - knob_width)
&& (probe_canvas_rect->y0 < icon_rect.y0 + knob_height
|| probe_canvas_rect->y1 >= icon_rect.y1 - knob_height);
return (probe_canvas_rect.x0 < icon_rect.x0 + knob_width
|| probe_canvas_rect.x1 >= icon_rect.x1 - knob_width)
&& (probe_canvas_rect.y0 < icon_rect.y0 + knob_height
|| probe_canvas_rect.y1 >= icon_rect.y1 - knob_height);
}
gboolean
nautilus_icon_canvas_item_hit_test_stretch_handles (NautilusIconCanvasItem *item,
const ArtPoint *world_point)
ArtPoint world_point)
{
ArtIRect canvas_rect;
g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item), FALSE);
g_return_val_if_fail (world_point != NULL, FALSE);
gnome_canvas_w2c (GNOME_CANVAS_ITEM (item)->canvas,
world_point->x,
world_point->y,
world_point.x,
world_point.y,
&canvas_rect.x0,
&canvas_rect.y0);
canvas_rect.x1 = canvas_rect.x0 + 1;
canvas_rect.y1 = canvas_rect.y0 + 1;
return hit_test_stretch_handle (item, &canvas_rect);
return hit_test_stretch_handle (item, canvas_rect);
}
/* nautilus_icon_canvas_item_hit_test_rectangle
@ -2143,10 +2140,9 @@ nautilus_icon_canvas_item_hit_test_stretch_handles (NautilusIconCanvasItem *item
* canvas rect.
*/
gboolean
nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item, const ArtIRect *canvas_rect)
nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item, ArtIRect canvas_rect)
{
g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item), FALSE);
g_return_val_if_fail (canvas_rect != NULL, FALSE);
return hit_test (item, canvas_rect);
}

View file

@ -64,7 +64,6 @@ struct NautilusIconCanvasItemClass {
/* GtkObject */
GtkType nautilus_icon_canvas_item_get_type (void);
/* attributes */
void nautilus_icon_canvas_item_set_image (NautilusIconCanvasItem *item,
GdkPixbuf *image);
@ -83,12 +82,11 @@ void nautilus_icon_canvas_item_set_renaming (NautilusIconCanv
/* geometry and hit testing */
gboolean nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item,
const ArtIRect *canvas_rect);
ArtIRect canvas_rect);
gboolean nautilus_icon_canvas_item_hit_test_stretch_handles (NautilusIconCanvasItem *item,
const ArtPoint *world_point);
ArtPoint world_point);
void nautilus_icon_canvas_item_invalidate_label_size (NautilusIconCanvasItem *item);
void nautilus_icon_canvas_item_get_icon_rectangle (NautilusIconCanvasItem *item,
ArtDRect *world_rectangle);
ArtDRect nautilus_icon_canvas_item_get_icon_rectangle (const NautilusIconCanvasItem *item);
void nautilus_icon_canvas_item_update_bounds (NautilusIconCanvasItem *item);
void nautilus_icon_canvas_item_set_smooth_font (NautilusIconCanvasItem *item,
EelScalableFont *font);

View file

@ -476,8 +476,8 @@ reveal_icon (NautilusIconContainer *container,
hadj = gtk_layout_get_hadjustment (GTK_LAYOUT (container));
vadj = gtk_layout_get_vadjustment (GTK_LAYOUT (container));
eel_gnome_canvas_item_get_canvas_bounds
(GNOME_CANVAS_ITEM (icon->item), &bounds);
bounds = eel_gnome_canvas_item_get_canvas_bounds
(GNOME_CANVAS_ITEM (icon->item));
if (bounds.y0 < vadj->value) {
eel_gtk_adjustment_set_value (vadj, bounds.y0);
@ -795,9 +795,9 @@ lay_down_one_line (NautilusIconContainer *container,
for (p = line_start; p != line_end; p = p->next) {
icon = p->data;
eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item), &bounds);
nautilus_icon_canvas_item_get_icon_rectangle (icon->item, &icon_bounds);
bounds = eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item));
icon_bounds = nautilus_icon_canvas_item_get_icon_rectangle (icon->item);
height_above = icon_bounds.y1 - bounds.y0;
height_below = bounds.y1 - icon_bounds.y1;
@ -817,9 +817,9 @@ lay_down_one_line (NautilusIconContainer *container,
for (p = line_start; p != line_end; p = p->next) {
icon = p->data;
eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item), &bounds);
nautilus_icon_canvas_item_get_icon_rectangle (icon->item, &icon_bounds);
bounds = eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item));
icon_bounds = nautilus_icon_canvas_item_get_icon_rectangle (icon->item);
width = get_icon_space_width (container, &bounds);
icon_set_position
@ -857,8 +857,8 @@ lay_down_icons_horizontal (NautilusIconContainer *container,
icon = p->data;
/* Get the width of the icon. */
eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item), &bounds);
bounds = eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item));
space_width = get_icon_space_width (container, &bounds);
/* If this icon doesn't fit, it's time to lay out the line that's queued up. */
@ -1249,8 +1249,8 @@ reload_icon_positions (NautilusIconContainer *container)
&have_stored_position);
if (have_stored_position) {
icon_set_position (icon, position.x, position.y);
eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item), &bounds);
bounds = eel_gnome_canvas_item_get_world_bounds
(GNOME_CANVAS_ITEM (icon->item));
if (bounds.y1 > bottom) {
bottom = bounds.y1;
}
@ -1395,12 +1395,12 @@ rubberband_select (NautilusIconContainer *container,
/* Only do this calculation once, since all the canvas items
* we are interating are in the same coordinate space
*/
eel_gnome_canvas_world_to_canvas_rectangle
(GNOME_CANVAS_ITEM (icon->item)->canvas, current_rect, &canvas_rect);
canvas_rect = eel_gnome_canvas_world_to_canvas_rectangle
(GNOME_CANVAS_ITEM (icon->item)->canvas, *current_rect);
canvas_rect_calculated = TRUE;
}
is_in = nautilus_icon_canvas_item_hit_test_rectangle (icon->item, &canvas_rect);
is_in = nautilus_icon_canvas_item_hit_test_rectangle (icon->item, canvas_rect);
g_assert (icon->was_selected_before_rubberband == FALSE
|| icon->was_selected_before_rubberband == TRUE);
@ -1784,8 +1784,7 @@ compare_with_start_row (NautilusIconContainer *container,
{
ArtIRect bounds;
eel_gnome_canvas_item_get_current_canvas_bounds (GNOME_CANVAS_ITEM (icon->item),
&bounds);
bounds = eel_gnome_canvas_item_get_current_canvas_bounds (GNOME_CANVAS_ITEM (icon->item));
if (container->details->arrow_key_start < bounds.y0) {
return -1;
}
@ -1801,8 +1800,7 @@ compare_with_start_column (NautilusIconContainer *container,
{
ArtIRect bounds;
eel_gnome_canvas_item_get_current_canvas_bounds (GNOME_CANVAS_ITEM (icon->item),
&bounds);
bounds = eel_gnome_canvas_item_get_current_canvas_bounds (GNOME_CANVAS_ITEM (icon->item));
if (container->details->arrow_key_start < bounds.x0) {
return -1;
}
@ -2004,8 +2002,7 @@ record_arrow_key_start (NautilusIconContainer *container,
return;
}
nautilus_icon_canvas_item_get_icon_rectangle
(icon->item, &world_rect);
world_rect = nautilus_icon_canvas_item_get_icon_rectangle (icon->item);
gnome_canvas_w2c
(GNOME_CANVAS (container),
(world_rect.x0 + world_rect.x1) / 2,
@ -2596,7 +2593,7 @@ start_stretching (NautilusIconContainer *container)
world_point.x = details->drag_x;
world_point.y = details->drag_y;
if (!nautilus_icon_canvas_item_hit_test_stretch_handles
(icon->item, &world_point)) {
(icon->item, world_point)) {
return FALSE;
}
@ -4871,7 +4868,7 @@ nautilus_icon_container_start_renaming_selected_item (NautilusIconContainer *con
gnome_canvas_item_show (GNOME_CANVAS_ITEM (details->rename_widget));
}
nautilus_icon_canvas_item_get_icon_rectangle (icon->item, &icon_rect);
icon_rect = nautilus_icon_canvas_item_get_icon_rectangle (icon->item);
gnome_canvas_item_w2i (GNOME_CANVAS_ITEM (details->rename_widget), &icon_rect.x0, &icon_rect.y0);
gnome_canvas_item_w2i (GNOME_CANVAS_ITEM (details->rename_widget), &icon_rect.x1, &icon_rect.y1);

View file

@ -228,10 +228,9 @@ icon_get_data_binder (NautilusIcon *icon, gpointer data)
container = NAUTILUS_ICON_CONTAINER (context->iterator_context);
nautilus_icon_canvas_item_get_icon_rectangle
(icon->item, &world_rect);
eel_gnome_canvas_world_to_window_rectangle
(GNOME_CANVAS (container), &world_rect, &window_rect);
world_rect = nautilus_icon_canvas_item_get_icon_rectangle (icon->item);
window_rect = eel_gnome_canvas_world_to_window_rectangle
(GNOME_CANVAS (container), world_rect);
uri = nautilus_icon_container_get_icon_uri (container, icon);
if (uri == NULL) {
@ -551,9 +550,9 @@ nautilus_icon_container_item_at (NautilusIconContainer *container,
NautilusIcon *icon;
icon = p->data;
eel_gnome_canvas_world_to_canvas_rectangle (GNOME_CANVAS_ITEM (icon->item)->canvas, &point, &canvas_point);
if (nautilus_icon_canvas_item_hit_test_rectangle (icon->item, &canvas_point)) {
canvas_point = eel_gnome_canvas_world_to_canvas_rectangle (GNOME_CANVAS_ITEM (icon->item)->canvas,
point);
if (nautilus_icon_canvas_item_hit_test_rectangle (icon->item, canvas_point)) {
return icon;
}
}
@ -1286,10 +1285,10 @@ nautilus_icon_dnd_begin_drag (NautilusIconContainer *container,
to it, with the hope that we get it back someday as X Windows improves */
/* compute the image's offset */
nautilus_icon_canvas_item_get_icon_rectangle
(container->details->drag_icon->item, &world_rect);
eel_gnome_canvas_world_to_window_rectangle
(canvas, &world_rect, &window_rect);
world_rect = nautilus_icon_canvas_item_get_icon_rectangle (
container->details->drag_icon->item);
window_rect = eel_gnome_canvas_world_to_window_rectangle
(canvas, world_rect);
x_offset = dnd_info->drag_info.start_x - window_rect.x0;
y_offset = dnd_info->drag_info.start_y - window_rect.y0;

View file

@ -2426,15 +2426,15 @@ GdkPixbuf * nautilus_icon_factory_get_pixbuf_from_name (const char *icon_name,
static gboolean
embedded_text_rect_usable (const ArtIRect *embedded_text_rect)
embedded_text_rect_usable (ArtIRect embedded_text_rect)
{
if (art_irect_empty (embedded_text_rect)) {
if (art_irect_empty (&embedded_text_rect)) {
return FALSE;
}
if (embedded_text_rect->x1 - embedded_text_rect->x0
if (embedded_text_rect.x1 - embedded_text_rect.x0
< MINIMUM_EMBEDDED_TEXT_RECT_WIDTH ||
embedded_text_rect->y1 - embedded_text_rect->y0
embedded_text_rect.y1 - embedded_text_rect.y0
< MINIMUM_EMBEDDED_TEXT_RECT_HEIGHT) {
return FALSE;
}
@ -2470,14 +2470,13 @@ embedded_text_font_free (void)
static GdkPixbuf *
embed_text (GdkPixbuf *pixbuf_without_text,
const ArtIRect *embedded_text_rect,
ArtIRect embedded_text_rect,
const char *text)
{
EelSmoothTextLayout *smooth_text_layout;
GdkPixbuf *pixbuf_with_text;
g_return_val_if_fail (pixbuf_without_text != NULL, NULL);
g_return_val_if_fail (embedded_text_rect != NULL, NULL);
/* Quick out for the case where there's no place to embed the
* text or the place is too small or there's no text.
@ -2550,7 +2549,7 @@ load_icon_with_embedded_text (NautilusScalableIcon *scalable_icon,
/* Create a pixbuf with the text in it. */
pixbuf_with_text = embed_text (icon_without_text->pixbuf,
&icon_without_text->details.text_rect,
icon_without_text->details.text_rect,
scalable_icon->embedded_text);
if (pixbuf_with_text == NULL) {
return icon_without_text;

View file

@ -887,7 +887,7 @@ row_get_data_binder (EelCListRow *row, int row_index, gpointer data)
eel_list_get_initial_drag_offset (context->list, &drag_offset_x, &drag_offset_y);
/* adjust the icons to be vertically relative to the initial mouse click position */
icon_rect = eel_art_irect_offset_by (eel_gdk_rectangle_to_art_irect (&cell_rectangle),
icon_rect = eel_art_irect_offset_by (eel_gdk_rectangle_to_art_irect (cell_rectangle),
0, -drag_offset_y);
/* horizontally just center the outline rectangles -- this will make the outlines align with

View file

@ -419,8 +419,7 @@ nautilus_about_update_authors (NautilusAbout *about)
EelScalableFont *plain_font;
/* clear the author area */
eel_art_irect_assign (&author_area,
AUTHOR_LEFT_POS - 24,
author_area = eel_art_irect_assign (AUTHOR_LEFT_POS - 24,
AUTHOR_TOP_POS,
2 * AUTHOR_COLUMN_WIDTH,
AUTHOR_LINE_HEIGHT * ITEMS_PER_COLUMN);

View file

@ -340,7 +340,7 @@ test_pixbuf_draw_rectangle_tiled (GdkPixbuf *pixbuf,
if (x0 == -1 && y0 == -1 && x1 == -1 && y1 == -1) {
EelDimensions dimensions;
dimensions = eel_gdk_pixbuf_get_dimensions (pixbuf);
area = eel_art_irect_assign_dimensions (0, 0, &dimensions);
area = eel_art_irect_assign_dimensions (0, 0, dimensions);
} else {
g_return_if_fail (x0 >= 0);
g_return_if_fail (y0 >= 0);
@ -355,7 +355,7 @@ test_pixbuf_draw_rectangle_tiled (GdkPixbuf *pixbuf,
eel_gdk_pixbuf_draw_to_pixbuf_tiled (tile_pixbuf,
pixbuf,
&area,
area,
gdk_pixbuf_get_width (tile_pixbuf),
gdk_pixbuf_get_height (tile_pixbuf),
0,