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,9 +597,9 @@ 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,
TRUE, text_color,
EEL_OPACITY_FULLY_OPAQUE);
0, 0, dest_bounds, GTK_JUSTIFY_LEFT,
TRUE, text_color,
EEL_OPACITY_FULLY_OPAQUE);
/* draw the bullet */
if (bullet != NULL) {

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;
@ -565,7 +559,7 @@ nautilus_icon_canvas_item_set_image (NautilusIconCanvasItem *item,
void
nautilus_icon_canvas_item_set_emblems (NautilusIconCanvasItem *item,
GList *emblem_pixbufs)
GList *emblem_pixbufs)
{
GList *p;
@ -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
@ -695,14 +692,14 @@ nautilus_icon_canvas_item_update_bounds (NautilusIconCanvasItem *item)
/* Update handler for the icon canvas item. */
static void
nautilus_icon_canvas_item_update (GnomeCanvasItem *item,
double *affine,
ArtSVP *clip_path,
int flags)
double *affine,
ArtSVP *clip_path,
int flags)
{
nautilus_icon_canvas_item_update_bounds (NAUTILUS_ICON_CANVAS_ITEM (item));
eel_gnome_canvas_item_request_redraw (item);
EEL_CALL_PARENT (GNOME_CANVAS_ITEM_CLASS, update,
(item, affine, clip_path, flags));
(item, affine, clip_path, flags));
}
/* Rendering */
@ -744,8 +741,8 @@ in_single_click_mode ()
/* Keep these for a bit while we work on performance of draw_or_measure_label_text. */
/*
#define PERFORMANCE_TEST_DRAW_DISABLE
#define PERFORMANCE_TEST_MEASURE_DISABLE
#define PERFORMANCE_TEST_DRAW_DISABLE
#define PERFORMANCE_TEST_MEASURE_DISABLE
*/
/* Draw the text in a box, using gnomelib routines. */
@ -836,7 +833,7 @@ draw_or_measure_label_text (NautilusIconCanvasItem *item,
gdk_draw_rectangle
(drawable, gc, TRUE,
icon_left + (icon_width - details->text_width) / 2,
icon_left + (icon_width - details->text_width) / 2,
icon_bottom,
details->text_width, details->text_height);
@ -1073,7 +1070,7 @@ draw_outline_rectangle_aa (GnomeCanvasBuf *buf, int x0, int y0, int x1, int y1,
/* draw the stretch handles in the anti-aliased canvas */
static void
draw_stretch_handles_aa (NautilusIconCanvasItem *item, GnomeCanvasBuf *buf,
const ArtIRect *rect)
const ArtIRect *rect)
{
int knob_width, knob_height;
GnomeCanvasItem *canvas_item;
@ -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);
}
@ -1505,12 +1502,12 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
}
smooth_text_layout = eel_smooth_text_layout_cache_render (layout_cache,
text_piece,
strlen (text_piece),
details->smooth_font,
details->smooth_font_size,
TRUE, LABEL_LINE_SPACING,
max_text_width);
text_piece,
strlen (text_piece),
details->smooth_font,
details->smooth_font_size,
TRUE, LABEL_LINE_SPACING,
max_text_width);
/* Draw text if we are not in user rename mode */
if (destination_pixbuf != NULL && !details->is_renaming) {
@ -1532,14 +1529,14 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
destination_area.x1 = destination_area.x0 + eel_smooth_text_layout_get_width (smooth_text_layout);
destination_area.y1 = destination_area.y0 + eel_smooth_text_layout_get_height (smooth_text_layout);
eel_smooth_text_layout_draw_to_pixbuf (smooth_text_layout,
destination_pixbuf,
0,
0,
&destination_area,
GTK_JUSTIFY_CENTER,
underlined,
EEL_RGB_COLOR_BLACK,
0xff);
destination_pixbuf,
0,
0,
destination_area,
GTK_JUSTIFY_CENTER,
underlined,
EEL_RGB_COLOR_BLACK,
0xff);
}
destination_area.x0 = text_left;
@ -1547,14 +1544,14 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
destination_area.x1 = destination_area.x0 + eel_smooth_text_layout_get_width (smooth_text_layout);
destination_area.y1 = destination_area.y0 + eel_smooth_text_layout_get_height (smooth_text_layout);
eel_smooth_text_layout_draw_to_pixbuf (smooth_text_layout,
destination_pixbuf,
0,
0,
&destination_area,
GTK_JUSTIFY_CENTER,
underlined,
label_color,
0xff);
destination_pixbuf,
0,
0,
destination_area,
GTK_JUSTIFY_CENTER,
underlined,
label_color,
0xff);
/* if it's highlighted, embolden by drawing twice */
if (needs_highlight) {
@ -1563,14 +1560,14 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
destination_area.x1 = destination_area.x0 + eel_smooth_text_layout_get_width (smooth_text_layout);
destination_area.y1 = destination_area.y0 + eel_smooth_text_layout_get_height (smooth_text_layout);
eel_smooth_text_layout_draw_to_pixbuf (smooth_text_layout,
destination_pixbuf,
0,
0,
&destination_area,
GTK_JUSTIFY_CENTER,
underlined,
label_color,
0xff);
destination_pixbuf,
0,
0,
destination_area,
GTK_JUSTIFY_CENTER,
underlined,
label_color,
0xff);
}
}
@ -1622,31 +1619,31 @@ clear_rounded_corners (GdkPixbuf *destination_pixbuf, GdkPixbuf *corner_pixbuf,
/* draw top left corner */
gdk_pixbuf_copy_area (corner_pixbuf,
0, 0,
corner_size, corner_size,
destination_pixbuf,
0, 0);
0, 0,
corner_size, corner_size,
destination_pixbuf,
0, 0);
/* draw top right corner */
gdk_pixbuf_copy_area (corner_pixbuf,
src_width - corner_size, 0,
corner_size, corner_size,
destination_pixbuf,
dest_width - corner_size, 0);
src_width - corner_size, 0,
corner_size, corner_size,
destination_pixbuf,
dest_width - corner_size, 0);
/* draw bottom left corner */
gdk_pixbuf_copy_area (corner_pixbuf,
0, src_height - corner_size,
corner_size, corner_size,
destination_pixbuf,
0, dest_height - corner_size);
0, src_height - corner_size,
corner_size, corner_size,
destination_pixbuf,
0, dest_height - corner_size);
/* draw bottom right corner */
gdk_pixbuf_copy_area (corner_pixbuf,
src_width - corner_size, src_height - corner_size,
corner_size, corner_size,
destination_pixbuf,
dest_width - corner_size, dest_height - corner_size);
src_width - corner_size, src_height - corner_size,
corner_size, corner_size,
destination_pixbuf,
dest_width - corner_size, dest_height - corner_size);
}
static void
@ -1675,9 +1672,9 @@ draw_label_text_aa (NautilusIconCanvasItem *icon_item, GnomeCanvasBuf *buf, int
if (icon_item->details->is_renaming) {
/* Exit if we are renaming. We don't need to set the text
* width and height to 0 because there is text, it just is not
* drawn to the canvas while the renaming widget is dispalyed.
*/
* width and height to 0 because there is text, it just is not
* drawn to the canvas while the renaming widget is dispalyed.
*/
return;
}
@ -1697,12 +1694,12 @@ draw_label_text_aa (NautilusIconCanvasItem *icon_item, GnomeCanvasBuf *buf, int
if (needs_highlight) {
container = NAUTILUS_ICON_CONTAINER (GNOME_CANVAS_ITEM (icon_item)->canvas);
eel_gdk_pixbuf_fill_rectangle_with_color (text_pixbuf, NULL,
container->details->highlight_color);
container->details->highlight_color);
clear_rounded_corners (text_pixbuf, container->details->highlight_frame, 5);
} else {
eel_gdk_pixbuf_fill_rectangle_with_color (text_pixbuf, NULL,
EEL_RGBA_COLOR_PACK (0, 0, 0, 0));
EEL_RGBA_COLOR_PACK (0, 0, 0, 0));
}
draw_or_measure_label_text_aa (icon_item, text_pixbuf, x_delta, 0);
@ -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,36 +64,34 @@ struct NautilusIconCanvasItemClass {
/* GtkObject */
GtkType nautilus_icon_canvas_item_get_type (void);
/* attributes */
void nautilus_icon_canvas_item_set_image (NautilusIconCanvasItem *item,
GdkPixbuf *image);
GdkPixbuf * nautilus_icon_canvas_item_get_image (NautilusIconCanvasItem *item);
void nautilus_icon_canvas_item_set_emblems (NautilusIconCanvasItem *item,
GList *emblem_pixbufs);
void nautilus_icon_canvas_item_set_show_stretch_handles (NautilusIconCanvasItem *item,
gboolean show_stretch_handles);
void nautilus_icon_canvas_item_set_attach_points (NautilusIconCanvasItem *item,
NautilusEmblemAttachPoints *attach_points);
double nautilus_icon_canvas_item_get_max_text_width (NautilusIconCanvasItem *item);
const char *nautilus_icon_canvas_item_get_editable_text (NautilusIconCanvasItem *icon_item);
void nautilus_icon_canvas_item_set_renaming (NautilusIconCanvasItem *icon_item,
gboolean state);
void nautilus_icon_canvas_item_set_image (NautilusIconCanvasItem *item,
GdkPixbuf *image);
GdkPixbuf * nautilus_icon_canvas_item_get_image (NautilusIconCanvasItem *item);
void nautilus_icon_canvas_item_set_emblems (NautilusIconCanvasItem *item,
GList *emblem_pixbufs);
void nautilus_icon_canvas_item_set_show_stretch_handles (NautilusIconCanvasItem *item,
gboolean show_stretch_handles);
void nautilus_icon_canvas_item_set_attach_points (NautilusIconCanvasItem *item,
NautilusEmblemAttachPoints *attach_points);
double nautilus_icon_canvas_item_get_max_text_width (NautilusIconCanvasItem *item);
const char *nautilus_icon_canvas_item_get_editable_text (NautilusIconCanvasItem *icon_item);
void nautilus_icon_canvas_item_set_renaming (NautilusIconCanvasItem *icon_item,
gboolean state);
/* geometry and hit testing */
gboolean nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item,
const ArtIRect *canvas_rect);
gboolean nautilus_icon_canvas_item_hit_test_stretch_handles (NautilusIconCanvasItem *item,
const 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);
void nautilus_icon_canvas_item_update_bounds (NautilusIconCanvasItem *item);
void nautilus_icon_canvas_item_set_smooth_font (NautilusIconCanvasItem *item,
EelScalableFont *font);
void nautilus_icon_canvas_item_set_smooth_font_size (NautilusIconCanvasItem *item,
int font_size);
gboolean nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item,
ArtIRect canvas_rect);
gboolean nautilus_icon_canvas_item_hit_test_stretch_handles (NautilusIconCanvasItem *item,
ArtPoint world_point);
void nautilus_icon_canvas_item_invalidate_label_size (NautilusIconCanvasItem *item);
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);
void nautilus_icon_canvas_item_set_smooth_font_size (NautilusIconCanvasItem *item,
int font_size);
END_GNOME_DECLS

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);
@ -643,8 +643,8 @@ nautilus_icon_container_update_scroll_region (NautilusIconContainer *container)
get_all_icon_bounds (container, &x1, &y1, &x2, &y2);
reset_scroll_region = container->details->reset_scroll_region_trigger
|| nautilus_icon_container_is_empty (container)
|| nautilus_icon_container_is_auto_layout (container);
|| nautilus_icon_container_is_empty (container)
|| nautilus_icon_container_is_auto_layout (container);
/* The trigger is only cleared when container is non-empty, so
* callers can reliably reset the scroll region when an item
@ -741,7 +741,7 @@ compare_icons_by_name (gconstpointer a, gconstpointer b)
static void
sort_icons_by_name (NautilusIconContainer *container,
GList **icons)
GList **icons)
{
sort_hack_container = container;
*icons = g_list_sort (*icons, compare_icons_by_name);
@ -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
@ -849,7 +849,7 @@ lay_down_icons_horizontal (NautilusIconContainer *container,
canvas_width = (GTK_WIDGET (container)->allocation.width
- container->details->left_margin
- container->details->right_margin)
/ GNOME_CANVAS (container)->pixels_per_unit;
/ GNOME_CANVAS (container)->pixels_per_unit;
line_width = 0;
line_start = icons;
y = start_y;
@ -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;
}
@ -1907,10 +1905,10 @@ same_column_above_lowest (NautilusIconContainer *container,
static gboolean
same_column_below_highest (NautilusIconContainer *container,
NautilusIcon *start_icon,
NautilusIcon *best_so_far,
NautilusIcon *candidate,
void *data)
NautilusIcon *start_icon,
NautilusIcon *best_so_far,
NautilusIcon *candidate,
void *data)
{
/* Candidates not on the start column do not qualify. */
if (compare_with_start_column (container, candidate) != 0) {
@ -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,
@ -2165,7 +2162,7 @@ match_best_name (NautilusIconContainer *container,
for (match_length = 0; ; match_length++) {
if (name[match_length] == '\0'
|| match_state->name[match_length] == '\0') {
|| match_state->name[match_length] == '\0') {
break;
}
@ -2573,12 +2570,12 @@ nautilus_icon_container_did_not_drag (NautilusIconContainer *container,
static void
clear_drag_state (NautilusIconContainer *container)
{
container->details->drag_icon = NULL;
container->details->drag_state = DRAG_STATE_INITIAL;
if (container->details->context_menu_timeout_id != 0) {
gtk_timeout_remove (container->details->context_menu_timeout_id);
container->details->context_menu_timeout_id = 0;
}
container->details->drag_icon = NULL;
container->details->drag_state = DRAG_STATE_INITIAL;
if (container->details->context_menu_timeout_id != 0) {
gtk_timeout_remove (container->details->context_menu_timeout_id);
container->details->context_menu_timeout_id = 0;
}
}
static gboolean
@ -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;
}
@ -2841,14 +2838,14 @@ motion_notify_event (GtkWidget *widget,
event->y = details->drag_y;
nautilus_icon_dnd_begin_drag (container,
details->drag_state == DRAG_STATE_MOVE_OR_COPY
? (GDK_ACTION_MOVE
| GDK_ACTION_COPY
| GDK_ACTION_LINK
| GDK_ACTION_ASK)
: GDK_ACTION_ASK,
details->drag_button,
event);
details->drag_state == DRAG_STATE_MOVE_OR_COPY
? (GDK_ACTION_MOVE
| GDK_ACTION_COPY
| GDK_ACTION_LINK
| GDK_ACTION_ASK)
: GDK_ACTION_ASK,
details->drag_button,
event);
details->drag_state = DRAG_STATE_MOVE_OR_COPY;
}
break;
@ -3469,7 +3466,7 @@ handle_icon_button_press (NautilusIconContainer *container,
details = container->details;
if (event->button == DRAG_BUTTON
|| event->button == CONTEXTUAL_MENU_BUTTON) {
|| event->button == CONTEXTUAL_MENU_BUTTON) {
details->drag_button = event->button;
details->drag_icon = icon;
details->drag_x = event->x;
@ -3810,7 +3807,7 @@ nautilus_icon_container_update_icon (NautilusIconContainer *container,
*/
if (icon == get_icon_being_renamed (container) &&
eel_strcmp (editable_text,
nautilus_icon_canvas_item_get_editable_text (icon->item)) != 0) {
nautilus_icon_canvas_item_get_editable_text (icon->item)) != 0) {
end_renaming_mode (container, FALSE);
}
@ -4361,7 +4358,7 @@ nautilus_icon_container_unselect_all (NautilusIconContainer *container)
**/
NautilusIcon *
nautilus_icon_container_get_icon_by_uri (NautilusIconContainer *container,
const char *uri)
const char *uri)
{
NautilusIconContainerDetails *details;
GList *p;
@ -4573,7 +4570,7 @@ compute_stretch (StretchState *start,
char *
nautilus_icon_container_get_icon_uri (NautilusIconContainer *container,
NautilusIcon *icon)
NautilusIcon *icon)
{
char *uri;
@ -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);
@ -5139,11 +5136,11 @@ nautilus_icon_container_theme_changed (gpointer user_data)
highlight_color_str = nautilus_theme_get_theme_data ("directory", "highlight_color_rgba");
if (highlight_color_str == NULL) {
container->details->highlight_color = EEL_RGBA_COLOR_PACK (0, 0, 0, 102);
} else {
container->details->highlight_color = strtoul (highlight_color_str, NULL, 0);
g_free (highlight_color_str);
}
container->details->highlight_color = EEL_RGBA_COLOR_PACK (0, 0, 0, 102);
} else {
container->details->highlight_color = strtoul (highlight_color_str, NULL, 0);
g_free (highlight_color_str);
}
}
void

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

@ -276,10 +276,10 @@ EEL_DEFINE_CLASS_BOILERPLATE (NautilusIconFactory,
nautilus_icon_factory,
GTK_TYPE_OBJECT)
static NautilusIconFactory *global_icon_factory = NULL;
static NautilusIconFactory *global_icon_factory = NULL;
static void
destroy_icon_factory (void)
static void
destroy_icon_factory (void)
{
nautilus_preferences_remove_callback (NAUTILUS_PREFERENCES_THEME,
icon_theme_changed_callback,
@ -590,8 +590,8 @@ nautilus_icon_factory_destroy (GtkObject *object)
static gboolean
nautilus_icon_factory_possibly_free_cached_icon (gpointer key,
gpointer value,
gpointer user_data)
gpointer value,
gpointer user_data)
{
CacheIcon *icon;
@ -1466,15 +1466,15 @@ nautilus_icon_factory_get_icon_for_file (NautilusFile *file, const char *modifie
image_uri = nautilus_link_local_get_image_uri (file_path);
if (image_uri != NULL) {
/* FIXME bugzilla.eazel.com 2564: Lame hack. We only support file:// URIs? */
if (eel_istr_has_prefix (image_uri, "file://")) {
if (uri == NULL) {
uri = image_uri;
} else {
g_free (image_uri);
}
} else {
icon_name = image_uri;
}
if (eel_istr_has_prefix (image_uri, "file://")) {
if (uri == NULL) {
uri = image_uri;
} else {
g_free (image_uri);
}
} else {
icon_name = image_uri;
}
}
g_free (file_path);
}
@ -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.
@ -2512,14 +2511,14 @@ embed_text (GdkPixbuf *pixbuf_without_text,
pixbuf_with_text = gdk_pixbuf_copy (pixbuf_without_text);
eel_smooth_text_layout_draw_to_pixbuf (smooth_text_layout,
pixbuf_with_text,
0,
0,
embedded_text_rect,
GTK_JUSTIFY_LEFT,
FALSE,
EEL_RGB_COLOR_BLACK,
EEL_OPACITY_FULLY_OPAQUE);
pixbuf_with_text,
0,
0,
embedded_text_rect,
GTK_JUSTIFY_LEFT,
FALSE,
EEL_RGB_COLOR_BLACK,
EEL_OPACITY_FULLY_OPAQUE);
gtk_object_unref (GTK_OBJECT (smooth_text_layout));
@ -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;
@ -565,7 +559,7 @@ nautilus_icon_canvas_item_set_image (NautilusIconCanvasItem *item,
void
nautilus_icon_canvas_item_set_emblems (NautilusIconCanvasItem *item,
GList *emblem_pixbufs)
GList *emblem_pixbufs)
{
GList *p;
@ -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
@ -695,14 +692,14 @@ nautilus_icon_canvas_item_update_bounds (NautilusIconCanvasItem *item)
/* Update handler for the icon canvas item. */
static void
nautilus_icon_canvas_item_update (GnomeCanvasItem *item,
double *affine,
ArtSVP *clip_path,
int flags)
double *affine,
ArtSVP *clip_path,
int flags)
{
nautilus_icon_canvas_item_update_bounds (NAUTILUS_ICON_CANVAS_ITEM (item));
eel_gnome_canvas_item_request_redraw (item);
EEL_CALL_PARENT (GNOME_CANVAS_ITEM_CLASS, update,
(item, affine, clip_path, flags));
(item, affine, clip_path, flags));
}
/* Rendering */
@ -744,8 +741,8 @@ in_single_click_mode ()
/* Keep these for a bit while we work on performance of draw_or_measure_label_text. */
/*
#define PERFORMANCE_TEST_DRAW_DISABLE
#define PERFORMANCE_TEST_MEASURE_DISABLE
#define PERFORMANCE_TEST_DRAW_DISABLE
#define PERFORMANCE_TEST_MEASURE_DISABLE
*/
/* Draw the text in a box, using gnomelib routines. */
@ -836,7 +833,7 @@ draw_or_measure_label_text (NautilusIconCanvasItem *item,
gdk_draw_rectangle
(drawable, gc, TRUE,
icon_left + (icon_width - details->text_width) / 2,
icon_left + (icon_width - details->text_width) / 2,
icon_bottom,
details->text_width, details->text_height);
@ -1073,7 +1070,7 @@ draw_outline_rectangle_aa (GnomeCanvasBuf *buf, int x0, int y0, int x1, int y1,
/* draw the stretch handles in the anti-aliased canvas */
static void
draw_stretch_handles_aa (NautilusIconCanvasItem *item, GnomeCanvasBuf *buf,
const ArtIRect *rect)
const ArtIRect *rect)
{
int knob_width, knob_height;
GnomeCanvasItem *canvas_item;
@ -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);
}
@ -1505,12 +1502,12 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
}
smooth_text_layout = eel_smooth_text_layout_cache_render (layout_cache,
text_piece,
strlen (text_piece),
details->smooth_font,
details->smooth_font_size,
TRUE, LABEL_LINE_SPACING,
max_text_width);
text_piece,
strlen (text_piece),
details->smooth_font,
details->smooth_font_size,
TRUE, LABEL_LINE_SPACING,
max_text_width);
/* Draw text if we are not in user rename mode */
if (destination_pixbuf != NULL && !details->is_renaming) {
@ -1532,14 +1529,14 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
destination_area.x1 = destination_area.x0 + eel_smooth_text_layout_get_width (smooth_text_layout);
destination_area.y1 = destination_area.y0 + eel_smooth_text_layout_get_height (smooth_text_layout);
eel_smooth_text_layout_draw_to_pixbuf (smooth_text_layout,
destination_pixbuf,
0,
0,
&destination_area,
GTK_JUSTIFY_CENTER,
underlined,
EEL_RGB_COLOR_BLACK,
0xff);
destination_pixbuf,
0,
0,
destination_area,
GTK_JUSTIFY_CENTER,
underlined,
EEL_RGB_COLOR_BLACK,
0xff);
}
destination_area.x0 = text_left;
@ -1547,14 +1544,14 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
destination_area.x1 = destination_area.x0 + eel_smooth_text_layout_get_width (smooth_text_layout);
destination_area.y1 = destination_area.y0 + eel_smooth_text_layout_get_height (smooth_text_layout);
eel_smooth_text_layout_draw_to_pixbuf (smooth_text_layout,
destination_pixbuf,
0,
0,
&destination_area,
GTK_JUSTIFY_CENTER,
underlined,
label_color,
0xff);
destination_pixbuf,
0,
0,
destination_area,
GTK_JUSTIFY_CENTER,
underlined,
label_color,
0xff);
/* if it's highlighted, embolden by drawing twice */
if (needs_highlight) {
@ -1563,14 +1560,14 @@ draw_or_measure_label_text_aa (NautilusIconCanvasItem *item,
destination_area.x1 = destination_area.x0 + eel_smooth_text_layout_get_width (smooth_text_layout);
destination_area.y1 = destination_area.y0 + eel_smooth_text_layout_get_height (smooth_text_layout);
eel_smooth_text_layout_draw_to_pixbuf (smooth_text_layout,
destination_pixbuf,
0,
0,
&destination_area,
GTK_JUSTIFY_CENTER,
underlined,
label_color,
0xff);
destination_pixbuf,
0,
0,
destination_area,
GTK_JUSTIFY_CENTER,
underlined,
label_color,
0xff);
}
}
@ -1622,31 +1619,31 @@ clear_rounded_corners (GdkPixbuf *destination_pixbuf, GdkPixbuf *corner_pixbuf,
/* draw top left corner */
gdk_pixbuf_copy_area (corner_pixbuf,
0, 0,
corner_size, corner_size,
destination_pixbuf,
0, 0);
0, 0,
corner_size, corner_size,
destination_pixbuf,
0, 0);
/* draw top right corner */
gdk_pixbuf_copy_area (corner_pixbuf,
src_width - corner_size, 0,
corner_size, corner_size,
destination_pixbuf,
dest_width - corner_size, 0);
src_width - corner_size, 0,
corner_size, corner_size,
destination_pixbuf,
dest_width - corner_size, 0);
/* draw bottom left corner */
gdk_pixbuf_copy_area (corner_pixbuf,
0, src_height - corner_size,
corner_size, corner_size,
destination_pixbuf,
0, dest_height - corner_size);
0, src_height - corner_size,
corner_size, corner_size,
destination_pixbuf,
0, dest_height - corner_size);
/* draw bottom right corner */
gdk_pixbuf_copy_area (corner_pixbuf,
src_width - corner_size, src_height - corner_size,
corner_size, corner_size,
destination_pixbuf,
dest_width - corner_size, dest_height - corner_size);
src_width - corner_size, src_height - corner_size,
corner_size, corner_size,
destination_pixbuf,
dest_width - corner_size, dest_height - corner_size);
}
static void
@ -1675,9 +1672,9 @@ draw_label_text_aa (NautilusIconCanvasItem *icon_item, GnomeCanvasBuf *buf, int
if (icon_item->details->is_renaming) {
/* Exit if we are renaming. We don't need to set the text
* width and height to 0 because there is text, it just is not
* drawn to the canvas while the renaming widget is dispalyed.
*/
* width and height to 0 because there is text, it just is not
* drawn to the canvas while the renaming widget is dispalyed.
*/
return;
}
@ -1697,12 +1694,12 @@ draw_label_text_aa (NautilusIconCanvasItem *icon_item, GnomeCanvasBuf *buf, int
if (needs_highlight) {
container = NAUTILUS_ICON_CONTAINER (GNOME_CANVAS_ITEM (icon_item)->canvas);
eel_gdk_pixbuf_fill_rectangle_with_color (text_pixbuf, NULL,
container->details->highlight_color);
container->details->highlight_color);
clear_rounded_corners (text_pixbuf, container->details->highlight_frame, 5);
} else {
eel_gdk_pixbuf_fill_rectangle_with_color (text_pixbuf, NULL,
EEL_RGBA_COLOR_PACK (0, 0, 0, 0));
EEL_RGBA_COLOR_PACK (0, 0, 0, 0));
}
draw_or_measure_label_text_aa (icon_item, text_pixbuf, x_delta, 0);
@ -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,36 +64,34 @@ struct NautilusIconCanvasItemClass {
/* GtkObject */
GtkType nautilus_icon_canvas_item_get_type (void);
/* attributes */
void nautilus_icon_canvas_item_set_image (NautilusIconCanvasItem *item,
GdkPixbuf *image);
GdkPixbuf * nautilus_icon_canvas_item_get_image (NautilusIconCanvasItem *item);
void nautilus_icon_canvas_item_set_emblems (NautilusIconCanvasItem *item,
GList *emblem_pixbufs);
void nautilus_icon_canvas_item_set_show_stretch_handles (NautilusIconCanvasItem *item,
gboolean show_stretch_handles);
void nautilus_icon_canvas_item_set_attach_points (NautilusIconCanvasItem *item,
NautilusEmblemAttachPoints *attach_points);
double nautilus_icon_canvas_item_get_max_text_width (NautilusIconCanvasItem *item);
const char *nautilus_icon_canvas_item_get_editable_text (NautilusIconCanvasItem *icon_item);
void nautilus_icon_canvas_item_set_renaming (NautilusIconCanvasItem *icon_item,
gboolean state);
void nautilus_icon_canvas_item_set_image (NautilusIconCanvasItem *item,
GdkPixbuf *image);
GdkPixbuf * nautilus_icon_canvas_item_get_image (NautilusIconCanvasItem *item);
void nautilus_icon_canvas_item_set_emblems (NautilusIconCanvasItem *item,
GList *emblem_pixbufs);
void nautilus_icon_canvas_item_set_show_stretch_handles (NautilusIconCanvasItem *item,
gboolean show_stretch_handles);
void nautilus_icon_canvas_item_set_attach_points (NautilusIconCanvasItem *item,
NautilusEmblemAttachPoints *attach_points);
double nautilus_icon_canvas_item_get_max_text_width (NautilusIconCanvasItem *item);
const char *nautilus_icon_canvas_item_get_editable_text (NautilusIconCanvasItem *icon_item);
void nautilus_icon_canvas_item_set_renaming (NautilusIconCanvasItem *icon_item,
gboolean state);
/* geometry and hit testing */
gboolean nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item,
const ArtIRect *canvas_rect);
gboolean nautilus_icon_canvas_item_hit_test_stretch_handles (NautilusIconCanvasItem *item,
const 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);
void nautilus_icon_canvas_item_update_bounds (NautilusIconCanvasItem *item);
void nautilus_icon_canvas_item_set_smooth_font (NautilusIconCanvasItem *item,
EelScalableFont *font);
void nautilus_icon_canvas_item_set_smooth_font_size (NautilusIconCanvasItem *item,
int font_size);
gboolean nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item,
ArtIRect canvas_rect);
gboolean nautilus_icon_canvas_item_hit_test_stretch_handles (NautilusIconCanvasItem *item,
ArtPoint world_point);
void nautilus_icon_canvas_item_invalidate_label_size (NautilusIconCanvasItem *item);
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);
void nautilus_icon_canvas_item_set_smooth_font_size (NautilusIconCanvasItem *item,
int font_size);
END_GNOME_DECLS

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);
@ -643,8 +643,8 @@ nautilus_icon_container_update_scroll_region (NautilusIconContainer *container)
get_all_icon_bounds (container, &x1, &y1, &x2, &y2);
reset_scroll_region = container->details->reset_scroll_region_trigger
|| nautilus_icon_container_is_empty (container)
|| nautilus_icon_container_is_auto_layout (container);
|| nautilus_icon_container_is_empty (container)
|| nautilus_icon_container_is_auto_layout (container);
/* The trigger is only cleared when container is non-empty, so
* callers can reliably reset the scroll region when an item
@ -741,7 +741,7 @@ compare_icons_by_name (gconstpointer a, gconstpointer b)
static void
sort_icons_by_name (NautilusIconContainer *container,
GList **icons)
GList **icons)
{
sort_hack_container = container;
*icons = g_list_sort (*icons, compare_icons_by_name);
@ -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
@ -849,7 +849,7 @@ lay_down_icons_horizontal (NautilusIconContainer *container,
canvas_width = (GTK_WIDGET (container)->allocation.width
- container->details->left_margin
- container->details->right_margin)
/ GNOME_CANVAS (container)->pixels_per_unit;
/ GNOME_CANVAS (container)->pixels_per_unit;
line_width = 0;
line_start = icons;
y = start_y;
@ -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;
}
@ -1907,10 +1905,10 @@ same_column_above_lowest (NautilusIconContainer *container,
static gboolean
same_column_below_highest (NautilusIconContainer *container,
NautilusIcon *start_icon,
NautilusIcon *best_so_far,
NautilusIcon *candidate,
void *data)
NautilusIcon *start_icon,
NautilusIcon *best_so_far,
NautilusIcon *candidate,
void *data)
{
/* Candidates not on the start column do not qualify. */
if (compare_with_start_column (container, candidate) != 0) {
@ -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,
@ -2165,7 +2162,7 @@ match_best_name (NautilusIconContainer *container,
for (match_length = 0; ; match_length++) {
if (name[match_length] == '\0'
|| match_state->name[match_length] == '\0') {
|| match_state->name[match_length] == '\0') {
break;
}
@ -2573,12 +2570,12 @@ nautilus_icon_container_did_not_drag (NautilusIconContainer *container,
static void
clear_drag_state (NautilusIconContainer *container)
{
container->details->drag_icon = NULL;
container->details->drag_state = DRAG_STATE_INITIAL;
if (container->details->context_menu_timeout_id != 0) {
gtk_timeout_remove (container->details->context_menu_timeout_id);
container->details->context_menu_timeout_id = 0;
}
container->details->drag_icon = NULL;
container->details->drag_state = DRAG_STATE_INITIAL;
if (container->details->context_menu_timeout_id != 0) {
gtk_timeout_remove (container->details->context_menu_timeout_id);
container->details->context_menu_timeout_id = 0;
}
}
static gboolean
@ -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;
}
@ -2841,14 +2838,14 @@ motion_notify_event (GtkWidget *widget,
event->y = details->drag_y;
nautilus_icon_dnd_begin_drag (container,
details->drag_state == DRAG_STATE_MOVE_OR_COPY
? (GDK_ACTION_MOVE
| GDK_ACTION_COPY
| GDK_ACTION_LINK
| GDK_ACTION_ASK)
: GDK_ACTION_ASK,
details->drag_button,
event);
details->drag_state == DRAG_STATE_MOVE_OR_COPY
? (GDK_ACTION_MOVE
| GDK_ACTION_COPY
| GDK_ACTION_LINK
| GDK_ACTION_ASK)
: GDK_ACTION_ASK,
details->drag_button,
event);
details->drag_state = DRAG_STATE_MOVE_OR_COPY;
}
break;
@ -3469,7 +3466,7 @@ handle_icon_button_press (NautilusIconContainer *container,
details = container->details;
if (event->button == DRAG_BUTTON
|| event->button == CONTEXTUAL_MENU_BUTTON) {
|| event->button == CONTEXTUAL_MENU_BUTTON) {
details->drag_button = event->button;
details->drag_icon = icon;
details->drag_x = event->x;
@ -3810,7 +3807,7 @@ nautilus_icon_container_update_icon (NautilusIconContainer *container,
*/
if (icon == get_icon_being_renamed (container) &&
eel_strcmp (editable_text,
nautilus_icon_canvas_item_get_editable_text (icon->item)) != 0) {
nautilus_icon_canvas_item_get_editable_text (icon->item)) != 0) {
end_renaming_mode (container, FALSE);
}
@ -4361,7 +4358,7 @@ nautilus_icon_container_unselect_all (NautilusIconContainer *container)
**/
NautilusIcon *
nautilus_icon_container_get_icon_by_uri (NautilusIconContainer *container,
const char *uri)
const char *uri)
{
NautilusIconContainerDetails *details;
GList *p;
@ -4573,7 +4570,7 @@ compute_stretch (StretchState *start,
char *
nautilus_icon_container_get_icon_uri (NautilusIconContainer *container,
NautilusIcon *icon)
NautilusIcon *icon)
{
char *uri;
@ -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);
@ -5139,11 +5136,11 @@ nautilus_icon_container_theme_changed (gpointer user_data)
highlight_color_str = nautilus_theme_get_theme_data ("directory", "highlight_color_rgba");
if (highlight_color_str == NULL) {
container->details->highlight_color = EEL_RGBA_COLOR_PACK (0, 0, 0, 102);
} else {
container->details->highlight_color = strtoul (highlight_color_str, NULL, 0);
g_free (highlight_color_str);
}
container->details->highlight_color = EEL_RGBA_COLOR_PACK (0, 0, 0, 102);
} else {
container->details->highlight_color = strtoul (highlight_color_str, NULL, 0);
g_free (highlight_color_str);
}
}
void

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

@ -276,10 +276,10 @@ EEL_DEFINE_CLASS_BOILERPLATE (NautilusIconFactory,
nautilus_icon_factory,
GTK_TYPE_OBJECT)
static NautilusIconFactory *global_icon_factory = NULL;
static NautilusIconFactory *global_icon_factory = NULL;
static void
destroy_icon_factory (void)
static void
destroy_icon_factory (void)
{
nautilus_preferences_remove_callback (NAUTILUS_PREFERENCES_THEME,
icon_theme_changed_callback,
@ -590,8 +590,8 @@ nautilus_icon_factory_destroy (GtkObject *object)
static gboolean
nautilus_icon_factory_possibly_free_cached_icon (gpointer key,
gpointer value,
gpointer user_data)
gpointer value,
gpointer user_data)
{
CacheIcon *icon;
@ -1466,15 +1466,15 @@ nautilus_icon_factory_get_icon_for_file (NautilusFile *file, const char *modifie
image_uri = nautilus_link_local_get_image_uri (file_path);
if (image_uri != NULL) {
/* FIXME bugzilla.eazel.com 2564: Lame hack. We only support file:// URIs? */
if (eel_istr_has_prefix (image_uri, "file://")) {
if (uri == NULL) {
uri = image_uri;
} else {
g_free (image_uri);
}
} else {
icon_name = image_uri;
}
if (eel_istr_has_prefix (image_uri, "file://")) {
if (uri == NULL) {
uri = image_uri;
} else {
g_free (image_uri);
}
} else {
icon_name = image_uri;
}
}
g_free (file_path);
}
@ -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.
@ -2512,14 +2511,14 @@ embed_text (GdkPixbuf *pixbuf_without_text,
pixbuf_with_text = gdk_pixbuf_copy (pixbuf_without_text);
eel_smooth_text_layout_draw_to_pixbuf (smooth_text_layout,
pixbuf_with_text,
0,
0,
embedded_text_rect,
GTK_JUSTIFY_LEFT,
FALSE,
EEL_RGB_COLOR_BLACK,
EEL_OPACITY_FULLY_OPAQUE);
pixbuf_with_text,
0,
0,
embedded_text_rect,
GTK_JUSTIFY_LEFT,
FALSE,
EEL_RGB_COLOR_BLACK,
EEL_OPACITY_FULLY_OPAQUE);
gtk_object_unref (GTK_OBJECT (smooth_text_layout));
@ -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,11 +419,10 @@ nautilus_about_update_authors (NautilusAbout *about)
EelScalableFont *plain_font;
/* clear the author area */
eel_art_irect_assign (&author_area,
AUTHOR_LEFT_POS - 24,
AUTHOR_TOP_POS,
2 * AUTHOR_COLUMN_WIDTH,
AUTHOR_LINE_HEIGHT * ITEMS_PER_COLUMN);
author_area = eel_art_irect_assign (AUTHOR_LEFT_POS - 24,
AUTHOR_TOP_POS,
2 * AUTHOR_COLUMN_WIDTH,
AUTHOR_LINE_HEIGHT * ITEMS_PER_COLUMN);
eel_gdk_pixbuf_fill_rectangle_with_color
(about->details->background_pixbuf,

View file

@ -220,7 +220,7 @@ test_label_new (const char *text,
/* Preferences hacks */
void
test_text_caption_set_text_for_int_preferences (EelTextCaption *text_caption,
const char *name)
const char *name)
{
int int_value;
char *text;
@ -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);
@ -354,14 +354,14 @@ test_pixbuf_draw_rectangle_tiled (GdkPixbuf *pixbuf,
}
eel_gdk_pixbuf_draw_to_pixbuf_tiled (tile_pixbuf,
pixbuf,
&area,
gdk_pixbuf_get_width (tile_pixbuf),
gdk_pixbuf_get_height (tile_pixbuf),
0,
0,
opacity,
GDK_INTERP_NEAREST);
pixbuf,
area,
gdk_pixbuf_get_width (tile_pixbuf),
gdk_pixbuf_get_height (tile_pixbuf),
0,
0,
opacity,
GDK_INTERP_NEAREST);
gdk_pixbuf_unref (tile_pixbuf);
}