summaryrefslogtreecommitdiff
path: root/libnautilus
diff options
context:
space:
mode:
authorDarin Adler <darin@src.gnome.org>2000-01-31 01:30:16 +0000
committerDarin Adler <darin@src.gnome.org>2000-01-31 01:30:16 +0000
commit58a9b33c333ce9552b5ed1a9c93cf2695136439f (patch)
tree22b70019de0f335873caee33765b339cde5aab6a /libnautilus
parente250cfd796fe1a2f21549934de911ca8cf7f3ced (diff)
downloadnautilus-58a9b33c333ce9552b5ed1a9c93cf2695136439f.tar.gz
Changed it to not attempt to create a GC just to measure the text. This
* nautilus-icons-view-icon-item.c: (nautilus_icons_view_draw_text_box): Changed it to not attempt to create a GC just to measure the text. This makes it work when the widget is not realized. * nautilus-icons-view-icon-item.h: nautilus-icons-view-icon-item.c: gnome-icon-container-dnd.c: (nautilus_icons_view_icon_item_center_offset): Changed the parameter type to NautilusIconsViewIconItem. * fm-directory-view.c: (stop_load): (fm_directory_view_load_uri): Fixed code so that if you stop loading more than once, or stop before you even start, it won't send extra progress requests to the Nautilus shell or call stop_monitoring extra times on the NautilusDirectory object. * nautilus-icons-view-icon-item.h: nautilus-icons-view-icon-item.c: gnome-icon-container-dnd.c: Quick cleanup of the new NautilusIconsViewIconItem class. * libnautilus/gdk-extensions.c: libnautilus/gnome-icon-container-dnd.c: libnautilus/gnome-icon-container.c: libnautilus/gtkflist.c: libnautilus/nautilus-background-canvas-group.c: libnautilus/nautilus-background.c: libnautilus/nautilus-debug.c: libnautilus/nautilus-default-file-icon.c: libnautilus/nautilus-directory.c: libnautilus/nautilus-icon-factory.c: libnautilus/nautilus-icons-controller.c: libnautilus/nautilus-icons-view-icon-item.c: libnautilus/nautilus-lib-self-check-functions.c: libnautilus/nautilus-self-checks.c: libnautilus/nautilus-string.c: src/explorer-location-bar.c: src/file-manager/dfos-corba.c: src/file-manager/dfos-xfer-progress-dialog.c: src/file-manager/dfos-xfer.c: src/file-manager/dfos.c: src/file-manager/fm-directory-view-icons.c: src/file-manager/fm-directory-view-list.c: src/file-manager/fm-directory-view.c: src/file-manager/fm-icons-controller.c: src/file-manager/fm-main.c: src/nautilus-self-check-functions.c: src/ntl-index-panel.c: Got rid of #ifdef HAVE_CONFIG_H. Elliot says that we must always include <config.h>, but there's no reason to include that ifdef since we don't plan on building without a <config.h> ever.
Diffstat (limited to 'libnautilus')
-rw-r--r--libnautilus/gdk-extensions.c3
-rw-r--r--libnautilus/gnome-icon-container-dnd.c63
-rw-r--r--libnautilus/gnome-icon-container.c3
-rw-r--r--libnautilus/gtkflist.c3
-rw-r--r--libnautilus/nautilus-background-canvas-group.c3
-rw-r--r--libnautilus/nautilus-background.c3
-rw-r--r--libnautilus/nautilus-debug.c3
-rw-r--r--libnautilus/nautilus-default-file-icon.c3
-rw-r--r--libnautilus/nautilus-directory.c3
-rw-r--r--libnautilus/nautilus-icon-factory.c8
-rw-r--r--libnautilus/nautilus-icons-controller.c3
-rw-r--r--libnautilus/nautilus-icons-view-icon-item.c596
-rw-r--r--libnautilus/nautilus-icons-view-icon-item.h29
-rw-r--r--libnautilus/nautilus-lib-self-check-functions.c2
-rw-r--r--libnautilus/nautilus-self-checks.c3
-rw-r--r--libnautilus/nautilus-string.c3
16 files changed, 328 insertions, 403 deletions
diff --git a/libnautilus/gdk-extensions.c b/libnautilus/gdk-extensions.c
index 25c34a505..73731dc41 100644
--- a/libnautilus/gdk-extensions.c
+++ b/libnautilus/gdk-extensions.c
@@ -22,10 +22,7 @@
Authors: Darin Adler <darin@eazel.com>
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-
#include "gdk-extensions.h"
#include "nautilus-lib-self-check-functions.h"
diff --git a/libnautilus/gnome-icon-container-dnd.c b/libnautilus/gnome-icon-container-dnd.c
index 49150b8c2..36b412207 100644
--- a/libnautilus/gnome-icon-container-dnd.c
+++ b/libnautilus/gnome-icon-container-dnd.c
@@ -23,14 +23,11 @@
Author: Ettore Perazzoli <ettore@gnu.org>
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-
#include "gnome-icon-container-dnd.h"
-#include "nautilus-icons-view-icon-item.h"
#include "gnome-icon-container-private.h"
+#include "nautilus-icons-view-icon-item.h"
#include "nautilus-background.h"
#include "nautilus-gtk-extensions.h"
@@ -217,8 +214,8 @@ set_gnome_icon_list_selection (GnomeIconContainer *container,
if (!icon->is_selected)
continue;
-
- center_offset = nautilus_icons_view_icon_item_center_offset(icon->item);
+ center_offset = nautilus_icons_view_icon_item_center_offset
+ (NAUTILUS_ICONS_VIEW_ICON_ITEM (icon->item));
/* Corner of the icon relative to the cursor. */
icon_x = icon->x - details->dnd_info->start_x + floor(center_offset / canvas->pixels_per_unit);
@@ -579,7 +576,8 @@ gnome_icon_container_receive_dropped_icons (GnomeIconContainer *container,
if (item->got_icon_position) {
int icon_x, icon_y;
double scale = icon->item->canvas->pixels_per_unit;
- int center_offset = nautilus_icons_view_icon_item_center_offset(icon->item);
+ int center_offset = nautilus_icons_view_icon_item_center_offset
+ (NAUTILUS_ICONS_VIEW_ICON_ITEM (icon->item));
icon_x = (int) world_x + item->icon_x - (center_offset / scale);
icon_y = (int) world_y + item->icon_y;
@@ -768,14 +766,11 @@ gnome_icon_container_dnd_begin_drag (GnomeIconContainer *container,
dnd_info->start_y = event->y;
/* start the drag */
-
context = gtk_drag_begin (GTK_WIDGET (container),
dnd_info->target_list,
actions,
button,
(GdkEvent *) event);
-
-
/* create a pixmap and mask to drag with */
pixbuf_item = GNOME_CANVAS_ITEM (container->details->drag_icon->item);
@@ -784,40 +779,40 @@ gnome_icon_container_dnd_begin_drag (GnomeIconContainer *container,
temp_pixbuf = (GdkPixbuf *) GTK_VALUE_OBJECT (pixbuf_args[0]);
/* compute the image's offset */
- canvas = GNOME_CANVAS(container);
+ canvas = GNOME_CANVAS (container);
- x_offset = floor(event->x - pixbuf_item->x1 + .5);
- y_offset = floor(event->y - pixbuf_item->y1 + .5);
+ x_offset = floor (event->x - pixbuf_item->x1 + .5);
+ y_offset = floor (event->y - pixbuf_item->y1 + .5);
- center_offset = nautilus_icons_view_icon_item_center_offset(container->details->drag_icon->item);
+ center_offset = nautilus_icons_view_icon_item_center_offset
+ (NAUTILUS_ICONS_VIEW_ICON_ITEM (container->details->drag_icon->item));
x_offset -= center_offset;
/* if the scale factor isn't 1.0, we have to scale the pixmap */
/* FIXME: eventually need to get the size, if any, from the metadata here */
scaled_pixbuf = NULL;
- if (container->details->zoom_level != NAUTILUS_ZOOM_LEVEL_STANDARD)
- {
- gint old_width, old_height;
- gint new_width, new_height;
-
- x_offset = floor(event->x * canvas->pixels_per_unit - center_offset - pixbuf_item->x1 + .5);
- y_offset = floor(event->y * canvas->pixels_per_unit - pixbuf_item->y1 + .5);
-
- old_width = gdk_pixbuf_get_width (temp_pixbuf);
- old_height = gdk_pixbuf_get_height (temp_pixbuf);
-
- new_width = floor((old_width * canvas->pixels_per_unit) + .5);
- new_height = floor((old_height * canvas->pixels_per_unit) + .5);
-
- scaled_pixbuf = gdk_pixbuf_scale_simple (temp_pixbuf, new_width, new_height, ART_FILTER_NEAREST);
- temp_pixbuf = scaled_pixbuf;
- }
-
+ if (container->details->zoom_level != NAUTILUS_ZOOM_LEVEL_STANDARD) {
+ gint old_width, old_height;
+ gint new_width, new_height;
+
+ x_offset = floor (event->x * canvas->pixels_per_unit - center_offset - pixbuf_item->x1 + .5);
+ y_offset = floor (event->y * canvas->pixels_per_unit - pixbuf_item->y1 + .5);
+
+ old_width = gdk_pixbuf_get_width (temp_pixbuf);
+ old_height = gdk_pixbuf_get_height (temp_pixbuf);
+
+ new_width = floor ((old_width * canvas->pixels_per_unit) + .5);
+ new_height = floor ((old_height * canvas->pixels_per_unit) + .5);
+
+ scaled_pixbuf = gdk_pixbuf_scale_simple (temp_pixbuf, new_width, new_height, ART_FILTER_NEAREST);
+ temp_pixbuf = scaled_pixbuf;
+ }
+
gdk_pixbuf_render_pixmap_and_mask (temp_pixbuf, &pixmap_for_dragged_file, &mask_for_dragged_file, 128);
if (scaled_pixbuf)
- gdk_pixbuf_unref(scaled_pixbuf);
-
+ gdk_pixbuf_unref(scaled_pixbuf);
+
/* set the pixmap and mask for dragging */
gtk_drag_set_icon_pixmap (context, gtk_widget_get_colormap (GTK_WIDGET (container)),
pixmap_for_dragged_file, mask_for_dragged_file,
diff --git a/libnautilus/gnome-icon-container.c b/libnautilus/gnome-icon-container.c
index b529eb485..fb7e42f1e 100644
--- a/libnautilus/gnome-icon-container.c
+++ b/libnautilus/gnome-icon-container.c
@@ -22,10 +22,7 @@
Author: Ettore Perazzoli <ettore@gnu.org>
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-
#include "gnome-icon-container.h"
#include <string.h>
diff --git a/libnautilus/gtkflist.c b/libnautilus/gtkflist.c
index eaabc4cfd..33b7a27f5 100644
--- a/libnautilus/gtkflist.c
+++ b/libnautilus/gtkflist.c
@@ -12,10 +12,7 @@
native List widget that uses a simple API similiar to the GnomeIconContainer
one. */
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-
#include "gtkflist.h"
#include <gtk/gtkdnd.h>
diff --git a/libnautilus/nautilus-background-canvas-group.c b/libnautilus/nautilus-background-canvas-group.c
index 4c535ca83..32217ca69 100644
--- a/libnautilus/nautilus-background-canvas-group.c
+++ b/libnautilus/nautilus-background-canvas-group.c
@@ -22,10 +22,7 @@
Author: Darin Adler <darin@eazel.com>
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-
#include "nautilus-background-canvas-group.h"
#include <libgnomeui/gnome-canvas.h>
diff --git a/libnautilus/nautilus-background.c b/libnautilus/nautilus-background.c
index f045bf64c..8491ba340 100644
--- a/libnautilus/nautilus-background.c
+++ b/libnautilus/nautilus-background.c
@@ -22,10 +22,7 @@
Author: Darin Adler <darin@eazel.com>
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-
#include "nautilus-background.h"
#include <gtk/gtksignal.h>
diff --git a/libnautilus/nautilus-debug.c b/libnautilus/nautilus-debug.c
index 50343e12c..042bff7b5 100644
--- a/libnautilus/nautilus-debug.c
+++ b/libnautilus/nautilus-debug.c
@@ -22,10 +22,7 @@
Author: Darin Adler <darin@eazel.com>
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-
#include "nautilus-debug.h"
#include <glib.h>
diff --git a/libnautilus/nautilus-default-file-icon.c b/libnautilus/nautilus-default-file-icon.c
index 504815517..40df42f86 100644
--- a/libnautilus/nautilus-default-file-icon.c
+++ b/libnautilus/nautilus-default-file-icon.c
@@ -22,10 +22,7 @@
Author: Darin Adler <darin@eazel.com>
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-
#include "nautilus-default-file-icon.h"
const int nautilus_default_file_icon_width = 48;
diff --git a/libnautilus/nautilus-directory.c b/libnautilus/nautilus-directory.c
index 6e6a4fa67..60459b72c 100644
--- a/libnautilus/nautilus-directory.c
+++ b/libnautilus/nautilus-directory.c
@@ -22,10 +22,7 @@
Author: Darin Adler <darin@eazel.com>
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-
#include "nautilus-directory.h"
#include <stdlib.h>
diff --git a/libnautilus/nautilus-icon-factory.c b/libnautilus/nautilus-icon-factory.c
index 0b0cb0a2d..aa0984fe3 100644
--- a/libnautilus/nautilus-icon-factory.c
+++ b/libnautilus/nautilus-icon-factory.c
@@ -23,14 +23,12 @@
Author: John Sullivan <sullivan@eazel.com>
*/
-#ifdef HAVE_CONFIG_H
-#include <string.h>
-#include <stdio.h>
#include <config.h>
-#endif
-
#include "nautilus-icon-factory.h"
+#include <string.h>
+#include <stdio.h>
+
#include <libgnome/gnome-defs.h>
#include <libgnome/gnome-mime-info.h>
#include <libgnome/gnome-util.h>
diff --git a/libnautilus/nautilus-icons-controller.c b/libnautilus/nautilus-icons-controller.c
index 4ced00279..acf19c3d9 100644
--- a/libnautilus/nautilus-icons-controller.c
+++ b/libnautilus/nautilus-icons-controller.c
@@ -23,10 +23,7 @@
Author: Darin Adler <darin@eazel.com>
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-
#include "nautilus-icons-controller.h"
#include "nautilus-gtk-macros.h"
diff --git a/libnautilus/nautilus-icons-view-icon-item.c b/libnautilus/nautilus-icons-view-icon-item.c
index 6ecccffcd..f5eb89cb8 100644
--- a/libnautilus/nautilus-icons-view-icon-item.c
+++ b/libnautilus/nautilus-icons-view-icon-item.c
@@ -1,3 +1,5 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+
/* GNOME libraries - Icon Item class for Icon Container
*
* Copyright (C) 2000 Eazel, Inc
@@ -21,21 +23,17 @@
*/
#include <config.h>
-#include <math.h>
-#include <stdio.h>
-
-#include <libgnomeui/gnome-canvas.h>
-#include <libgnomeui/gnome-canvas-util.h>
-#include <libgnomeui/gnome-icon-text.h>
+#include "nautilus-icons-view-icon-item.h"
+#include <math.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <libart_lgpl/art_rgb_pixbuf_affine.h>
-
+#include <libgnomeui/gnome-canvas-util.h>
#include "gnome-icon-container-private.h"
-#include "nautilus-icons-view-icon-item.h"
+#include "nautilus-gtk-macros.h"
/* Private part of the NautilusIconsViewIconItem structure */
-typedef struct {
+struct _NautilusIconsViewIconItemDetails {
/* Our main gdk-pixbuf */
GdkPixbuf *pixbuf;
@@ -74,7 +72,8 @@ typedef struct {
/* Whether the transformation or size have changed */
guint need_xform_update : 1;
-} IconItemPrivate;
+};
+
/* Object argument IDs */
@@ -95,8 +94,8 @@ enum {
#define MAX_LABEL_WIDTH 80
-static void nautilus_icons_view_icon_item_class_init (NautilusIconsViewIconItemClass *class);
-static void nautilus_icons_view_icon_item_init (NautilusIconsViewIconItem *cpb);
+static void nautilus_icons_view_icon_item_initialize_class (NautilusIconsViewIconItemClass *class);
+static void nautilus_icons_view_icon_item_initialize (NautilusIconsViewIconItem *cpb);
static void nautilus_icons_view_icon_item_destroy (GtkObject *object);
static void nautilus_icons_view_icon_item_set_arg (GtkObject *object, GtkArg *arg, guint arg_id);
static void nautilus_icons_view_icon_item_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
@@ -112,53 +111,17 @@ static void nautilus_icons_view_draw_text_box (GnomeCanvasItem* item, GdkDrawabl
static GdkFont* get_font_for_item(GnomeCanvasItem *item);
-static GnomeCanvasItemClass *parent_class;
-
-
-/**
- * nautilus_icons_view_icon_item_get_type:
- * @void:
- *
- * Registers the #NautilusIconsViewIconItem class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #NautilusIconsViewIconItem class.
- **/
-GtkType
-nautilus_icons_view_icon_item_get_type (void)
-{
- static GtkType icon_item_type = 0;
-
- if (!icon_item_type) {
- static const GtkTypeInfo icon_type_info = {
- "NautilusIconsViewIconItem",
- sizeof (NautilusIconsViewIconItem),
- sizeof (NautilusIconsViewIconItemClass),
- (GtkClassInitFunc) nautilus_icons_view_icon_item_class_init,
- (GtkObjectInitFunc) nautilus_icons_view_icon_item_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- icon_item_type = gtk_type_unique (gnome_canvas_item_get_type (),
- &icon_type_info);
- }
-
- return icon_item_type;
-}
+NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusIconsViewIconItem, nautilus_icons_view_icon_item, GNOME_TYPE_CANVAS_ITEM)
/* Class initialization function for the icon canvas item */
static void
-nautilus_icons_view_icon_item_class_init (NautilusIconsViewIconItemClass *class)
+nautilus_icons_view_icon_item_initialize_class (NautilusIconsViewIconItemClass *class)
{
GtkObjectClass *object_class;
GnomeCanvasItemClass *item_class;
- object_class = (GtkObjectClass *) class;
- item_class = (GnomeCanvasItemClass *) class;
-
- parent_class = gtk_type_class (gnome_canvas_item_get_type ());
+ object_class = GTK_OBJECT_CLASS (class);
+ item_class = GNOME_CANVAS_ITEM_CLASS (class);
gtk_object_add_arg_type ("NautilusIconsViewIconItem::pixbuf",
GTK_TYPE_POINTER, GTK_ARG_READWRITE, ARG_PIXBUF);
@@ -193,27 +156,12 @@ nautilus_icons_view_icon_item_class_init (NautilusIconsViewIconItemClass *class)
/* Object initialization function for the icon item */
static void
-nautilus_icons_view_icon_item_init (NautilusIconsViewIconItem *icon_view_item)
+nautilus_icons_view_icon_item_initialize (NautilusIconsViewIconItem *icon_view_item)
{
- IconItemPrivate *priv;
+ NautilusIconsViewIconItemDetails *details;
- priv = g_new0 (IconItemPrivate, 1);
- icon_view_item->priv = priv;
-
- priv->width = 0.0;
- priv->height = 0.0;
- priv->x = 0.0;
- priv->y = 0.0;
-
- priv->text_width = 0.0;
- priv->text_height = 0.0;
-
- priv->is_selected = FALSE;
- priv->is_alt_selected = FALSE;
- priv->is_hilited = FALSE;
-
- priv->need_pixbuf_update = FALSE;
- priv->need_xform_update = FALSE;
+ details = g_new0 (NautilusIconsViewIconItemDetails, 1);
+ icon_view_item->details = details;
}
/* Destroy handler for the icon canvas item */
@@ -222,26 +170,23 @@ nautilus_icons_view_icon_item_destroy (GtkObject *object)
{
GnomeCanvasItem *item;
NautilusIconsViewIconItem *icon_view_item;
- IconItemPrivate *priv;
+ NautilusIconsViewIconItemDetails *details;
- g_return_if_fail (object != NULL);
g_return_if_fail (NAUTILUS_IS_ICONS_VIEW_ICON_ITEM (object));
item = GNOME_CANVAS_ITEM (object);
icon_view_item = (NAUTILUS_ICONS_VIEW_ICON_ITEM (object));
- priv = icon_view_item->priv;
+ details = icon_view_item->details;
gnome_canvas_request_redraw (item->canvas, item->x1, item->y1, item->x2, item->y2);
- if (priv->pixbuf)
- gdk_pixbuf_unref (priv->pixbuf);
- if (priv->label)
- g_free(priv->label);
+ if (details->pixbuf != NULL)
+ gdk_pixbuf_unref (details->pixbuf);
+ g_free(details->label);
- g_free (priv);
+ g_free (details);
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+ NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, (object));
}
/* Set_arg handler for the icon item */
@@ -251,89 +196,89 @@ nautilus_icons_view_icon_item_set_arg (GtkObject *object, GtkArg *arg, guint arg
{
GnomeCanvasItem *item;
NautilusIconsViewIconItem *icon_view_item;
- IconItemPrivate *priv;
+ NautilusIconsViewIconItemDetails *details;
GdkPixbuf *pixbuf;
gchar* new_label;
double val;
item = GNOME_CANVAS_ITEM (object);
icon_view_item = NAUTILUS_ICONS_VIEW_ICON_ITEM (object);
- priv = icon_view_item->priv;
+ details = icon_view_item->details;
switch (arg_id) {
case ARG_PIXBUF:
pixbuf = GTK_VALUE_POINTER (*arg);
- if (pixbuf != priv->pixbuf) {
+ if (pixbuf != details->pixbuf) {
if (pixbuf) {
g_return_if_fail (pixbuf->art_pixbuf->format == ART_PIX_RGB);
g_return_if_fail (pixbuf->art_pixbuf->n_channels == 3
|| pixbuf->art_pixbuf->n_channels == 4);
g_return_if_fail (pixbuf->art_pixbuf->bits_per_sample == 8);
-
+
gdk_pixbuf_ref (pixbuf);
}
+
+ if (details->pixbuf)
+ gdk_pixbuf_unref (details->pixbuf);
- if (priv->pixbuf)
- gdk_pixbuf_unref (priv->pixbuf);
-
- priv->pixbuf = pixbuf;
+ details->pixbuf = pixbuf;
}
- priv->need_pixbuf_update = TRUE;
+ details->need_pixbuf_update = TRUE;
gnome_canvas_item_request_update (item);
break;
case ARG_LABEL:
new_label = GTK_VALUE_STRING (*arg);
- if (priv->label)
- g_free(priv->label);
- priv->label = g_strdup(new_label);
+ if (details->label)
+ g_free(details->label);
+ details->label = g_strdup(new_label);
- priv->need_pixbuf_update = TRUE;
+ details->need_pixbuf_update = TRUE;
gnome_canvas_item_request_update (item);
break;
case ARG_WIDTH:
val = GTK_VALUE_DOUBLE (*arg);
g_return_if_fail (val >= 0.0);
- priv->width = val;
- priv->need_xform_update = TRUE;
+ details->width = val;
+ details->need_xform_update = TRUE;
gnome_canvas_item_request_update (item);
break;
case ARG_HEIGHT:
val = GTK_VALUE_DOUBLE (*arg);
g_return_if_fail (val >= 0.0);
- priv->height = val;
- priv->need_xform_update = TRUE;
+ details->height = val;
+ details->need_xform_update = TRUE;
gnome_canvas_item_request_update (item);
break;
case ARG_X:
- priv->x = GTK_VALUE_DOUBLE (*arg);
- priv->need_xform_update = TRUE;
+ details->x = GTK_VALUE_DOUBLE (*arg);
+ details->need_xform_update = TRUE;
gnome_canvas_item_request_update (item);
break;
case ARG_Y:
- priv->y = GTK_VALUE_DOUBLE (*arg);
- priv->need_xform_update = TRUE;
+ details->y = GTK_VALUE_DOUBLE (*arg);
+ details->need_xform_update = TRUE;
gnome_canvas_item_request_update (item);
break;
case ARG_SELECTED:
- priv->is_selected = GTK_VALUE_BOOL (*arg);
+ details->is_selected = GTK_VALUE_BOOL (*arg);
gnome_canvas_item_request_update (item);
break;
case ARG_ALT_SELECTED:
- priv->is_alt_selected = GTK_VALUE_BOOL (*arg);
+ details->is_alt_selected = GTK_VALUE_BOOL (*arg);
gnome_canvas_item_request_update (item);
break;
case ARG_HILITED:
- priv->is_hilited = GTK_VALUE_BOOL (*arg);
+ details->is_hilited = GTK_VALUE_BOOL (*arg);
gnome_canvas_item_request_update (item);
break;
@@ -348,48 +293,49 @@ static void
nautilus_icons_view_icon_item_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
{
NautilusIconsViewIconItem *icon_view_item;
- IconItemPrivate *priv;
-
+ NautilusIconsViewIconItemDetails *details;
+
icon_view_item = NAUTILUS_ICONS_VIEW_ICON_ITEM (object);
- priv = icon_view_item->priv;
-
- switch (arg_id) {
+ details = icon_view_item->details;
+ switch (arg_id) {
+
case ARG_PIXBUF:
- GTK_VALUE_POINTER (*arg) = priv->pixbuf;
+ GTK_VALUE_POINTER (*arg) = details->pixbuf;
break;
-
+
case ARG_LABEL:
- GTK_VALUE_STRING (*arg) = priv->label;
+ GTK_VALUE_STRING (*arg) = details->label;
break;
-
+
case ARG_WIDTH:
- GTK_VALUE_DOUBLE (*arg) = priv->width;
+ GTK_VALUE_DOUBLE (*arg) = details->width;
break;
case ARG_HEIGHT:
- GTK_VALUE_DOUBLE (*arg) = priv->height;
+ GTK_VALUE_DOUBLE (*arg) = details->height;
break;
-
+
case ARG_X:
- GTK_VALUE_DOUBLE (*arg) = priv->x;
+ GTK_VALUE_DOUBLE (*arg) = details->x;
break;
-
+
case ARG_Y:
- GTK_VALUE_DOUBLE (*arg) = priv->y;
+ GTK_VALUE_DOUBLE (*arg) = details->y;
break;
-
+
case ARG_SELECTED:
- GTK_VALUE_BOOL(*arg) = priv->is_selected;
+ GTK_VALUE_BOOL(*arg) = details->is_selected;
break;
-
+
case ARG_ALT_SELECTED:
- GTK_VALUE_BOOL(*arg) = priv->is_alt_selected;
+ GTK_VALUE_BOOL(*arg) = details->is_alt_selected;
break;
-
+
case ARG_HILITED:
- GTK_VALUE_BOOL(*arg) = priv->is_hilited;
+ GTK_VALUE_BOOL(*arg) = details->is_hilited;
break;
+
default:
arg->type = GTK_TYPE_INVALID;
break;
@@ -407,13 +353,13 @@ compute_xform_scaling (double *affine, ArtPoint *i_c, ArtPoint *j_c)
{
ArtPoint orig, orig_c;
ArtPoint i, j;
-
+
/* Origin */
-
+
orig.x = 0.0;
orig.y = 0.0;
art_affine_point (&orig_c, &orig, affine);
-
+
/* Horizontal and vertical vectors */
i.x = 1.0;
@@ -421,7 +367,7 @@ compute_xform_scaling (double *affine, ArtPoint *i_c, ArtPoint *j_c)
art_affine_point (i_c, &i, affine);
i_c->x -= orig_c.x;
i_c->y -= orig_c.y;
-
+
j.x = 0.0;
j.y = 1.0;
art_affine_point (j_c, &j, affine);
@@ -436,7 +382,7 @@ compute_xform_scaling (double *affine, ArtPoint *i_c, ArtPoint *j_c)
static void
compute_viewport_affine (NautilusIconsViewIconItem *icon_view_item, double *viewport_affine, double *i2c)
{
- IconItemPrivate *priv;
+ NautilusIconsViewIconItemDetails *details;
ArtPoint i_c, j_c;
double i_len, j_len;
double si_len, sj_len;
@@ -445,32 +391,32 @@ compute_viewport_affine (NautilusIconsViewIconItem *icon_view_item, double *view
double w, h;
double x, y;
- priv = icon_view_item->priv;
+ details = icon_view_item->details;
/* Compute scaling vectors and required width/height */
-
+
compute_xform_scaling (i2c, &i_c, &j_c);
-
+
i_len = sqrt (i_c.x * i_c.x + i_c.y * i_c.y);
j_len = sqrt (j_c.x * j_c.x + j_c.y * j_c.y);
-
- w = priv->width;
+
+ w = details->width;
if (!w)
- w = priv->pixbuf->art_pixbuf->width;
-
- h = priv->height;
+ w = details->pixbuf->art_pixbuf->width;
+
+ h = details->height;
if (!h)
- h = priv->pixbuf->art_pixbuf->height;
-
- x = priv->x;
- y = priv->y;
-
- si_len = w / priv->pixbuf->art_pixbuf->width;
- sj_len = h / priv->pixbuf->art_pixbuf->height;
-
+ h = details->pixbuf->art_pixbuf->height;
+
+ x = details->x;
+ y = details->y;
+
+ si_len = w / details->pixbuf->art_pixbuf->width;
+ sj_len = h / details->pixbuf->art_pixbuf->height;
+
ti_len = x;
tj_len = y;
-
+
/* Compute the final affine */
art_affine_scale (scale, si_len, sj_len);
@@ -496,8 +442,8 @@ compute_render_affine (NautilusIconsViewIconItem *icon_view_item, double *render
static GdkFont*
get_font_for_item(GnomeCanvasItem *item)
{
- GnomeIconContainer* container = GNOME_ICON_CONTAINER(item->canvas);
- return container->details->label_font[container->details->zoom_level];
+ GnomeIconContainer* container = GNOME_ICON_CONTAINER (item->canvas);
+ return container->details->label_font[container->details->zoom_level];
}
/* Recomputes the bounding box of a icon canvas item. */
@@ -505,32 +451,32 @@ static void
recompute_bounding_box (NautilusIconsViewIconItem *icon_view_item)
{
GnomeCanvasItem *item;
- IconItemPrivate *priv;
+ NautilusIconsViewIconItemDetails *details;
double i2c[6], render_affine[6];
ArtDRect rect;
item = GNOME_CANVAS_ITEM (icon_view_item);
- priv = icon_view_item->priv;
+ details = icon_view_item->details;
- if (!priv->pixbuf) {
+ if (!details->pixbuf) {
item->x1 = item->y1 = item->x2 = item->y2 = 0.0;
return;
}
/* add 2 pixels slop to each side for hilite margin */
rect.x0 = 0.0;
- rect.x1 = priv->pixbuf->art_pixbuf->width + 4;
- if ((priv->text_width + 4)> rect.x1)
- rect.x1 = priv->text_width + 4;
-
+ rect.x1 = details->pixbuf->art_pixbuf->width + 4;
+ if ((details->text_width + 4)> rect.x1)
+ rect.x1 = details->text_width + 4;
+
rect.y0 = 0.0;
- rect.y1 = priv->pixbuf->art_pixbuf->height;
- rect.y1 += floor(priv->text_height);
+ rect.y1 = details->pixbuf->art_pixbuf->height;
+ rect.y1 += floor(details->text_height);
gnome_canvas_item_i2c_affine (item, i2c);
compute_render_affine (icon_view_item, render_affine, i2c);
art_drect_affine_transform (&rect, &rect, render_affine);
-
+
item->x1 = floor (rect.x0);
item->y1 = floor (rect.y0);
item->x2 = ceil (rect.x1);
@@ -543,36 +489,39 @@ recompute_bounding_box (NautilusIconsViewIconItem *icon_view_item)
static void
nautilus_icons_view_icon_item_update (GnomeCanvasItem *item, double *affine, ArtSVP *clip_path, int flags)
{
- NautilusIconsViewIconItem *icon_view_item = NAUTILUS_ICONS_VIEW_ICON_ITEM (item);
- IconItemPrivate *priv = icon_view_item->priv;
- GdkFont *title_font = get_font_for_item(item);
+ NautilusIconsViewIconItem *icon_view_item;
+ NautilusIconsViewIconItemDetails *details;
+ GdkFont *title_font;
+
+ icon_view_item = NAUTILUS_ICONS_VIEW_ICON_ITEM (item);
+ details = icon_view_item->details;
+ title_font = get_font_for_item(item);
/* make sure the text box measurements are set up before recalculating the bounding box */
- nautilus_icons_view_draw_text_box(item, NULL, title_font, priv->label, 0, 0, priv->is_selected, FALSE);
+ nautilus_icons_view_draw_text_box(item, NULL, title_font, details->label, 0, 0, details->is_selected, FALSE);
recompute_bounding_box(icon_view_item);
- if (parent_class->update)
- (* parent_class->update) (item, affine, clip_path, flags);
-
+ NAUTILUS_CALL_PARENT_CLASS (GNOME_CANVAS_ITEM_CLASS, update, (item, affine, clip_path, flags));
+
if (((flags & GNOME_CANVAS_UPDATE_VISIBILITY)
&& !(GTK_OBJECT_FLAGS (item) & GNOME_CANVAS_ITEM_VISIBLE))
|| (flags & GNOME_CANVAS_UPDATE_AFFINE)
- || priv->need_pixbuf_update
- || priv->need_xform_update)
+ || details->need_pixbuf_update
+ || details->need_xform_update)
gnome_canvas_request_redraw (item->canvas, item->x1, item->y1, item->x2, item->y2);
-
+
/* If we need a pixbuf update, or if the item changed visibility to
* shown, recompute the bounding box.
*/
- if (priv->need_pixbuf_update
- || priv->need_xform_update
+ if (details->need_pixbuf_update
+ || details->need_xform_update
|| ((flags & GNOME_CANVAS_UPDATE_VISIBILITY)
&& (GTK_OBJECT_FLAGS (icon_view_item) & GNOME_CANVAS_ITEM_VISIBLE))
|| (flags & GNOME_CANVAS_UPDATE_AFFINE)) {
recompute_bounding_box (icon_view_item);
gnome_canvas_request_redraw (item->canvas, item->x1, item->y1, item->x2, item->y2);
- priv->need_pixbuf_update = FALSE;
- priv->need_xform_update = FALSE;
+ details->need_pixbuf_update = FALSE;
+ details->need_xform_update = FALSE;
}
}
@@ -580,7 +529,7 @@ nautilus_icons_view_icon_item_update (GnomeCanvasItem *item, double *affine, Art
/* Rendering */
-/* This is private to libart, but we need it. Sigh. */
+/* This is detailsate to libart, but we need it. Sigh. */
extern void art_rgb_affine_run (int *p_x0, int *p_x1, int y, int src_width, int src_height,
const double affine[6]);
@@ -618,12 +567,12 @@ transform_pixbuf (guchar *dest, int x, int y, int width, int height, int rowstri
art_affine_point (&src_p, &dest_p, inv);
src_x = floor (src_p.x);
src_y = floor (src_p.y);
-
+
src = apb->pixels + src_y * apb->rowstride + src_x * apb->n_channels;
-
+
for (i = 0; i < apb->n_channels; i++)
*d++ = *src++;
-
+
if (!apb->has_alpha)
*d++ = 255; /* opaque */
}
@@ -637,45 +586,52 @@ nautilus_icons_view_draw_text_box (GnomeCanvasItem* item, GdkDrawable *drawable,
{
GnomeIconTextInfo *icon_text_info;
gint box_left;
- GdkGC* temp_gc = gdk_gc_new(item->canvas->layout.bin_window);
- NautilusIconsViewIconItem *icon_view_item = NAUTILUS_ICONS_VIEW_ICON_ITEM (item);
- IconItemPrivate *priv = icon_view_item->priv;
- gint line_width = gdk_string_width(title_font, label);
- gint line_height = gdk_string_height(title_font, label);
-
- if (line_width < floor(MAX_LABEL_WIDTH * item->canvas->pixels_per_unit))
- {
- gint item_width = floor(item->x2 - item->x1);
- box_left = icon_left + ((item_width - line_width) >> 1);
- if (real_draw)
- gdk_draw_string (drawable, title_font, temp_gc, box_left, icon_bottom + line_height, label);
- line_height += 4; /* extra slop for nicer hilite */
- }
- else
- {
- box_left = icon_left;
- icon_text_info = gnome_icon_layout_text(title_font, label, " -_,;.:?/&",
- floor(MAX_LABEL_WIDTH * item->canvas->pixels_per_unit),
- TRUE);
- if (real_draw)
- gnome_icon_paint_text(icon_text_info, drawable, temp_gc, box_left, icon_bottom, GTK_JUSTIFY_CENTER);
- line_width = icon_text_info->width;
- line_height = icon_text_info->height;
- gnome_icon_text_info_free(icon_text_info);
- }
+ GdkGC* temp_gc;
+ NautilusIconsViewIconItem *icon_view_item;
+ NautilusIconsViewIconItemDetails *details;
+ gint line_width;
+ gint line_height;
+
+ icon_view_item = NAUTILUS_ICONS_VIEW_ICON_ITEM (item);
+
+ details = icon_view_item->details;
+ line_width = gdk_string_width(title_font, label);
+ line_height = gdk_string_height(title_font, label);
+
+ if (real_draw)
+ temp_gc = gdk_gc_new(item->canvas->layout.bin_window);
+
+ if (line_width < floor(MAX_LABEL_WIDTH * item->canvas->pixels_per_unit)) {
+ gint item_width = floor(item->x2 - item->x1);
+ box_left = icon_left + ((item_width - line_width) >> 1);
+ if (real_draw)
+ gdk_draw_string (drawable, title_font, temp_gc, box_left, icon_bottom + line_height, label);
+ line_height += 4; /* extra slop for nicer hilite */
+ } else {
+ box_left = icon_left;
+ icon_text_info = gnome_icon_layout_text(title_font, label, " -_,;.:?/&",
+ floor(MAX_LABEL_WIDTH * item->canvas->pixels_per_unit),
+ TRUE);
+ if (real_draw)
+ gnome_icon_paint_text(icon_text_info, drawable, temp_gc, box_left, icon_bottom, GTK_JUSTIFY_CENTER);
+ line_width = icon_text_info->width;
+ line_height = icon_text_info->height;
+ gnome_icon_text_info_free(icon_text_info);
+ }
/* invert to indicate selection if necessary */
if (is_selected && real_draw)
- {
- gdk_gc_set_function(temp_gc, GDK_INVERT);
- gdk_draw_rectangle(drawable, temp_gc, TRUE, box_left, icon_bottom - 2, line_width, line_height);
- gdk_gc_set_function(temp_gc, GDK_COPY);
- }
-
- gdk_gc_unref(temp_gc);
-
- priv->text_width = (double) line_width;
- priv->text_height = (double) line_height;
+ {
+ gdk_gc_set_function (temp_gc, GDK_INVERT);
+ gdk_draw_rectangle (drawable, temp_gc, TRUE, box_left, icon_bottom - 2, line_width, line_height);
+ gdk_gc_set_function (temp_gc, GDK_COPY);
+ }
+
+ if (real_draw)
+ gdk_gc_unref (temp_gc);
+
+ details->text_width = (double) line_width;
+ details->text_height = (double) line_height;
}
/* draw the icon item */
@@ -685,7 +641,7 @@ nautilus_icons_view_icon_item_draw (GnomeCanvasItem *item, GdkDrawable *drawable
int x, int y, int width, int height)
{
NautilusIconsViewIconItem *icon_view_item;
- IconItemPrivate *priv;
+ NautilusIconsViewIconItemDetails *details;
double i2c[6], render_affine[6];
guchar *buf;
GdkPixbuf *pixbuf;
@@ -696,78 +652,84 @@ nautilus_icons_view_icon_item_draw (GnomeCanvasItem *item, GdkDrawable *drawable
GdkFont *title_font = get_font_for_item(item);
icon_view_item = NAUTILUS_ICONS_VIEW_ICON_ITEM (item);
- priv = icon_view_item->priv;
+ details = icon_view_item->details;
/* handle drawing the pixbuf */
- if (priv->pixbuf)
- {
- center_offset = nautilus_icons_view_icon_item_center_offset(item);
-
- gnome_canvas_item_i2c_affine (item, i2c);
- compute_render_affine (icon_view_item, render_affine, i2c);
-
- /* Compute the area we need to repaint */
-
- p_rect.x0 = item->x1;
- p_rect.y0 = item->y1;
- p_rect.x1 = item->x2;
- p_rect.y1 = item->y2;
-
- a_rect.x0 = x - center_offset;
- a_rect.y0 = y;
- a_rect.x1 = x + width - center_offset;
- a_rect.y1 = y + height;
-
- art_irect_intersect (&d_rect, &p_rect, &a_rect);
- if (art_irect_empty (&d_rect))
- return;
-
- /* Create a temporary buffer and transform the pixbuf there */
- /* FIXME: only do this if really necessary */
-
- w = d_rect.x1 - d_rect.x0;
- h = d_rect.y1 - d_rect.y0;
-
- buf = g_new0 (guchar, w * h * 4);
- transform_pixbuf (buf,
- d_rect.x0, d_rect.y0,
- w, h,
- w * 4,
- priv->pixbuf, render_affine);
-
- pixbuf = gdk_pixbuf_new_from_data (buf, ART_PIX_RGB, TRUE, w, h, w * 4, NULL, NULL);
-
- gdk_pixbuf_render_to_drawable_alpha (pixbuf, drawable,
- 0, 0,
- d_rect.x0 - x + center_offset, d_rect.y0 - y,
- w, h,
- GDK_PIXBUF_ALPHA_BILEVEL,
- 128,
- GDK_RGB_DITHER_MAX,
- d_rect.x0, d_rect.y0);
- gdk_pixbuf_unref (pixbuf);
- g_free (buf);
- }
-
- /* now compute the position of the label and draw it */
- if (container->details->zoom_level != NAUTILUS_ZOOM_LEVEL_SMALLEST)
- {
- icon_height = priv->pixbuf->art_pixbuf->height * item->canvas->pixels_per_unit;
- nautilus_icons_view_draw_text_box(item, drawable, title_font, priv->label, item->x1 - x,
- item->y1 - y + icon_height, priv->is_selected, TRUE);
- }
- }
+ if (details->pixbuf) {
+ center_offset = nautilus_icons_view_icon_item_center_offset (icon_view_item);
+
+ gnome_canvas_item_i2c_affine (item, i2c);
+ compute_render_affine (icon_view_item, render_affine, i2c);
+
+ /* Compute the area we need to repaint */
+
+ p_rect.x0 = item->x1;
+ p_rect.y0 = item->y1;
+ p_rect.x1 = item->x2;
+ p_rect.y1 = item->y2;
+
+ a_rect.x0 = x - center_offset;
+ a_rect.y0 = y;
+ a_rect.x1 = x + width - center_offset;
+ a_rect.y1 = y + height;
+
+ art_irect_intersect (&d_rect, &p_rect, &a_rect);
+ if (art_irect_empty (&d_rect))
+ return;
+
+ /* Create a temporary buffer and transform the pixbuf there */
+ /* FIXME: only do this if really necessary */
+
+ w = d_rect.x1 - d_rect.x0;
+ h = d_rect.y1 - d_rect.y0;
+
+ buf = g_new0 (guchar, w * h * 4);
+ transform_pixbuf (buf,
+ d_rect.x0, d_rect.y0,
+ w, h,
+ w * 4,
+ details->pixbuf, render_affine);
+
+ pixbuf = gdk_pixbuf_new_from_data (buf, ART_PIX_RGB, TRUE, w, h, w * 4, NULL, NULL);
+
+ gdk_pixbuf_render_to_drawable_alpha (pixbuf, drawable,
+ 0, 0,
+ d_rect.x0 - x + center_offset, d_rect.y0 - y,
+ w, h,
+ GDK_PIXBUF_ALPHA_BILEVEL,
+ 128,
+ GDK_RGB_DITHER_MAX,
+ d_rect.x0, d_rect.y0);
+ gdk_pixbuf_unref (pixbuf);
+ g_free (buf);
+ }
+
+ /* now compute the position of the label and draw it */
+ if (container->details->zoom_level != NAUTILUS_ZOOM_LEVEL_SMALLEST) {
+ icon_height = details->pixbuf->art_pixbuf->height * item->canvas->pixels_per_unit;
+ nautilus_icons_view_draw_text_box(item, drawable, title_font, details->label, item->x1 - x,
+ item->y1 - y + icon_height, details->is_selected, TRUE);
+ }
+}
/* return the center offset for this icon */
gint
-nautilus_icons_view_icon_item_center_offset(GnomeCanvasItem *item)
+nautilus_icons_view_icon_item_center_offset(NautilusIconsViewIconItem *icon_view_item)
{
- NautilusIconsViewIconItem *icon_view_item = NAUTILUS_ICONS_VIEW_ICON_ITEM (item);
- IconItemPrivate *priv = icon_view_item->priv;
- gint box_width = floor(item->x2 - item->x1);
- gint center_offset = (box_width - floor(priv->pixbuf->art_pixbuf->width * item->canvas->pixels_per_unit)) / 2;
- return center_offset;
+ GnomeCanvasItem *item;
+ NautilusIconsViewIconItemDetails *details;
+ int box_width;
+ int center_offset;
+
+ g_return_val_if_fail (NAUTILUS_IS_ICONS_VIEW_ICON_ITEM (icon_view_item), 0);
+
+ item = GNOME_CANVAS_ITEM (icon_view_item);
+ details = icon_view_item->details;
+
+ box_width = floor (item->x2 - item->x1);
+ center_offset = (box_width - floor (details->pixbuf->art_pixbuf->width * item->canvas->pixels_per_unit)) / 2;
+ return center_offset;
}
/* Render handler for the icon canvas item */
@@ -775,23 +737,23 @@ static void
nautilus_icons_view_icon_item_render (GnomeCanvasItem *item, GnomeCanvasBuf *buf)
{
NautilusIconsViewIconItem *icon_view_item;
- IconItemPrivate *priv;
+ NautilusIconsViewIconItemDetails *details;
double i2c[6], render_affine[6];
-
+
icon_view_item = NAUTILUS_ICONS_VIEW_ICON_ITEM (item);
- priv = icon_view_item->priv;
-
- if (!priv->pixbuf)
+ details = icon_view_item->details;
+
+ if (!details->pixbuf)
return;
-
+
gnome_canvas_item_i2c_affine (item, i2c);
compute_render_affine (icon_view_item, render_affine, i2c);
gnome_canvas_buf_ensure_buf (buf);
-
+
art_rgb_pixbuf_affine (buf->buf,
buf->rect.x0, buf->rect.y0, buf->rect.x1, buf->rect.y1,
buf->buf_rowstride,
- priv->pixbuf->art_pixbuf,
+ details->pixbuf->art_pixbuf,
render_affine,
ART_FILTER_NEAREST, NULL);
buf->is_bg = 0;
@@ -805,7 +767,7 @@ nautilus_icons_view_icon_item_point (GnomeCanvasItem *item, double x, double y,
GnomeCanvasItem **actual_item)
{
NautilusIconsViewIconItem *icon_view_item;
- IconItemPrivate *priv;
+ NautilusIconsViewIconItemDetails *details;
double i2c[6], render_affine[6], inv[6];
ArtPoint c, p;
gint px, py;
@@ -813,38 +775,38 @@ nautilus_icons_view_icon_item_point (GnomeCanvasItem *item, double x, double y,
double no_hit;
ArtPixBuf *apb;
guchar *src;
-
+
icon_view_item = NAUTILUS_ICONS_VIEW_ICON_ITEM (item);
- priv = icon_view_item->priv;
- center_offset = nautilus_icons_view_icon_item_center_offset(item);
-
+ details = icon_view_item->details;
+ center_offset = nautilus_icons_view_icon_item_center_offset (icon_view_item);
+
*actual_item = item;
-
+
no_hit = item->canvas->pixels_per_unit * 2 + 10;
-
- if (!priv->pixbuf)
+
+ if (!details->pixbuf)
return no_hit;
-
- apb = priv->pixbuf->art_pixbuf;
-
+
+ apb = details->pixbuf->art_pixbuf;
+
gnome_canvas_item_i2c_affine (item, i2c);
compute_render_affine (icon_view_item, render_affine, i2c);
art_affine_invert (inv, render_affine);
-
+
c.x = cx - center_offset;
c.y = cy;
art_affine_point (&p, &c, inv);
px = p.x;
py = p.y;
-
+
if (px < 0 || px >= apb->width || py < 0 || py >= apb->height)
return no_hit;
-
+
if (!apb->has_alpha)
return 0.0;
-
+
src = apb->pixels + py * apb->rowstride + px * apb->n_channels;
-
+
if (src[3] < 128)
return no_hit;
else
@@ -857,32 +819,32 @@ static void
nautilus_icons_view_icon_item_bounds (GnomeCanvasItem *item, double *x1, double *y1, double *x2, double *y2)
{
NautilusIconsViewIconItem *icon_view_item;
- IconItemPrivate *priv;
+ NautilusIconsViewIconItemDetails *details;
double i2c[6], viewport_affine[6];
ArtDRect rect;
-
+
icon_view_item = NAUTILUS_ICONS_VIEW_ICON_ITEM (item);
- priv = icon_view_item->priv;
-
- if (!priv->pixbuf) {
+ details = icon_view_item->details;
+
+ if (!details->pixbuf) {
*x1 = *y1 = *x2 = *y2 = 0.0;
return;
}
-
+
/* add 2 pixels slop to each side for hilite margin */
rect.x0 = 0.0;
- rect.x1 = priv->pixbuf->art_pixbuf->width + 4;
- if ((priv->text_width + 4) > rect.x1)
- rect.x1 = priv->text_width + 4;
-
+ rect.x1 = details->pixbuf->art_pixbuf->width + 4;
+ if ((details->text_width + 4) > rect.x1)
+ rect.x1 = details->text_width + 4;
+
rect.y0 = 0.0;
- rect.y1 = priv->pixbuf->art_pixbuf->height;
- rect.y1 += floor(priv->text_height);
+ rect.y1 = details->pixbuf->art_pixbuf->height;
+ rect.y1 += floor(details->text_height);
gnome_canvas_item_i2c_affine (item, i2c);
compute_viewport_affine (icon_view_item, viewport_affine, i2c);
art_drect_affine_transform (&rect, &rect, viewport_affine);
-
+
*x1 = rect.x0;
*y1 = rect.y0;
*x2 = rect.x1;
diff --git a/libnautilus/nautilus-icons-view-icon-item.h b/libnautilus/nautilus-icons-view-icon-item.h
index f0b764474..4e95dcefb 100644
--- a/libnautilus/nautilus-icons-view-icon-item.h
+++ b/libnautilus/nautilus-icons-view-icon-item.h
@@ -1,3 +1,5 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+
/* GNOME libraries - Icon Item class for Icon View
*
* Copyright (C) 2000 Eazel, Inc.
@@ -28,32 +30,33 @@
BEGIN_GNOME_DECLS
-#define NAUTILUS_TYPE_ICONS_VIEW_ICON_ITEM (nautilus_icons_view_icon_item_get_type ())
-#define NAUTILUS_ICONS_VIEW_ICON_ITEM(obj) (GTK_CHECK_CAST ((obj), \
- NAUTILUS_TYPE_ICONS_VIEW_ICON_ITEM, NautilusIconsViewIconItem))
-#define NAUTILUS_ICONS_VIEW_ICON_ITEM_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), \
- NAUTILUS_TYPE_ICONS_VIEW_ICON_ITEM, NautilusIconsViewIconItemClass))
-#define NAUTILUS_IS_ICONS_VIEW_ICON_ITEM(obj) (GTK_CHECK_TYPE ((obj), NAUTILUS_TYPE_ICONS_VIEW_ICON_ITEM))
-#define NAUTILUS_IS_ICONS_VIEW_ICON_ITEM_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), \
- NAUTILUS_TYPE_ICONS_VIEW_ICON_ITEM))
+#define NAUTILUS_TYPE_ICONS_VIEW_ICON_ITEM \
+ (nautilus_icons_view_icon_item_get_type ())
+#define NAUTILUS_ICONS_VIEW_ICON_ITEM(obj) \
+ (GTK_CHECK_CAST ((obj), NAUTILUS_TYPE_ICONS_VIEW_ICON_ITEM, NautilusIconsViewIconItem))
+#define NAUTILUS_ICONS_VIEW_ICON_ITEM_CLASS(klass) \
+ (GTK_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_ICONS_VIEW_ICON_ITEM, NautilusIconsViewIconItemClass))
+#define NAUTILUS_IS_ICONS_VIEW_ICON_ITEM(obj) \
+ (GTK_CHECK_TYPE ((obj), NAUTILUS_TYPE_ICONS_VIEW_ICON_ITEM))
+#define NAUTILUS_IS_ICONS_VIEW_ICON_ITEM_CLASS(klass) \
+ (GTK_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_ICONS_VIEW_ICON_ITEM))
typedef struct _NautilusIconsViewIconItem NautilusIconsViewIconItem;
typedef struct _NautilusIconsViewIconItemClass NautilusIconsViewIconItemClass;
+typedef struct _NautilusIconsViewIconItemDetails NautilusIconsViewIconItemDetails;
struct _NautilusIconsViewIconItem {
GnomeCanvasItem item;
-
- /* Private data */
- gpointer priv;
+ NautilusIconsViewIconItemDetails *details;
};
struct _NautilusIconsViewIconItemClass {
GnomeCanvasItemClass parent_class;
};
-GtkType nautilus_icons_view_icon_item_get_type (void);
-gint nautilus_icons_view_icon_item_center_offset(GnomeCanvasItem *item);
+GtkType nautilus_icons_view_icon_item_get_type (void);
+int nautilus_icons_view_icon_item_center_offset (NautilusIconsViewIconItem *item);
END_GNOME_DECLS
diff --git a/libnautilus/nautilus-lib-self-check-functions.c b/libnautilus/nautilus-lib-self-check-functions.c
index 76f06a41e..e75c7e905 100644
--- a/libnautilus/nautilus-lib-self-check-functions.c
+++ b/libnautilus/nautilus-lib-self-check-functions.c
@@ -23,9 +23,7 @@
Author: Darin Adler <darin@eazel.com>
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
#if ! defined (NAUTILUS_OMIT_SELF_CHECK)
diff --git a/libnautilus/nautilus-self-checks.c b/libnautilus/nautilus-self-checks.c
index ebf1a2bf4..9c70f8031 100644
--- a/libnautilus/nautilus-self-checks.c
+++ b/libnautilus/nautilus-self-checks.c
@@ -22,13 +22,12 @@
Author: Darin Adler <darin@eazel.com>
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
#if ! defined (NAUTILUS_OMIT_SELF_CHECK)
#include "nautilus-self-checks.h"
+
#include <stdio.h>
#include <stdlib.h>
diff --git a/libnautilus/nautilus-string.c b/libnautilus/nautilus-string.c
index 1b797e0d4..cccec2f5d 100644
--- a/libnautilus/nautilus-string.c
+++ b/libnautilus/nautilus-string.c
@@ -22,10 +22,7 @@
Authors: Darin Adler <darin@eazel.com>
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-
#include "nautilus-string.h"
#include <ctype.h>