summaryrefslogtreecommitdiff
path: root/libnautilus
diff options
context:
space:
mode:
authorAndy Hertzfeld <andy@src.gnome.org>2000-01-26 00:29:08 +0000
committerAndy Hertzfeld <andy@src.gnome.org>2000-01-26 00:29:08 +0000
commitebcee7a7785bbd234aa0eae99b55df59fa31144b (patch)
tree08cd44fb30a6ff02bcba907db9d8b77c9c3ec6b3 /libnautilus
parent794baebe625e0504a280beeece7a80e4fa1e3fff (diff)
downloadnautilus-ebcee7a7785bbd234aa0eae99b55df59fa31144b.tar.gz
first cut at making small images (<10K) show as themselves. also, cleaned
first cut at making small images (<10K) show as themselves. also, cleaned up icon item class and added boolean for kbd selection
Diffstat (limited to 'libnautilus')
-rw-r--r--libnautilus/nautilus-icons-view-icon-item.c47
1 files changed, 37 insertions, 10 deletions
diff --git a/libnautilus/nautilus-icons-view-icon-item.c b/libnautilus/nautilus-icons-view-icon-item.c
index 3dcff6079..68f1c0d78 100644
--- a/libnautilus/nautilus-icons-view-icon-item.c
+++ b/libnautilus/nautilus-icons-view-icon-item.c
@@ -60,12 +60,15 @@ typedef struct {
/* height in pixels of the label */
double text_height;
- /* boolean to indicate selection state */
- guint is_selected : 1;
-
- /* boolean to indicate hilite state */
- guint is_hilited : 1;
+ /* boolean to indicate selection state */
+ guint is_selected : 1;
+ /* boolean to indicate keyboard select state */
+ guint is_alt_selected: 1;
+
+ /* boolean to indicate hilite state (for swallow) */
+ guint is_hilited : 1;
+
/* Whether the pixbuf has changed */
guint need_pixbuf_update : 1;
@@ -84,6 +87,7 @@ enum {
ARG_X,
ARG_Y,
ARG_SELECTED,
+ ARG_ALT_SELECTED,
ARG_HILITED
};
@@ -170,6 +174,8 @@ nautilus_icons_view_icon_item_class_init (NautilusIconsViewIconItemClass *class)
GTK_TYPE_DOUBLE, GTK_ARG_READWRITE, ARG_Y);
gtk_object_add_arg_type ("NautilusIconsViewIconItem::selected",
GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_SELECTED);
+ gtk_object_add_arg_type ("NautilusIconsViewIconItem::alt_selected",
+ GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_ALT_SELECTED);
gtk_object_add_arg_type ("NautilusIconsViewIconItem::hilited",
GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_HILITED);
@@ -197,6 +203,16 @@ nautilus_icons_view_icon_item_init (NautilusIconsViewIconItem *icon_view_item)
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;
}
/* Destroy handler for the icon canvas item */
@@ -309,7 +325,12 @@ nautilus_icons_view_icon_item_set_arg (GtkObject *object, GtkArg *arg, guint arg
priv->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);
+ gnome_canvas_item_request_update (item);
+ break;
+
case ARG_HILITED:
priv->is_hilited = GTK_VALUE_BOOL (*arg);
gnome_canvas_item_request_update (item);
@@ -361,6 +382,10 @@ nautilus_icons_view_icon_item_get_arg (GtkObject *object, GtkArg *arg, guint arg
GTK_VALUE_BOOL(*arg) = priv->is_selected;
break;
+ case ARG_ALT_SELECTED:
+ GTK_VALUE_BOOL(*arg) = priv->is_alt_selected;
+ break;
+
case ARG_HILITED:
GTK_VALUE_BOOL(*arg) = priv->is_hilited;
break;
@@ -648,14 +673,14 @@ nautilus_icons_view_draw_text_box (GnomeCanvasItem* item, GdkDrawable *drawable,
else
{
box_left = icon_left;
- icon_text_info = gnome_icon_layout_text(title_font, label, " -_,;:?/&", MAX_LABEL_WIDTH, TRUE);
+ icon_text_info = gnome_icon_layout_text(title_font, label, " -_,;.:?/&", MAX_LABEL_WIDTH, 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)
{
@@ -695,8 +720,9 @@ nautilus_icons_view_icon_item_draw (GnomeCanvasItem *item, GdkDrawable *drawable
{
gint box_width = floor(item->x2 - item->x1);
gint center_offset = (box_width - priv->pixbuf->art_pixbuf->width) >> 1;
- center_offset = 0; /* disabled for now, as it was causing glitches */
+ center_offset = 0; /* FIXME: disabled for now, as it was causing glitches */
+
gnome_canvas_item_i2c_affine (item, i2c);
compute_render_affine (icon_view_item, render_affine, i2c);
@@ -717,7 +743,8 @@ nautilus_icons_view_icon_item_draw (GnomeCanvasItem *item, GdkDrawable *drawable
return;
/* Create a temporary buffer and transform the pixbuf there */
-
+ /* FIXME: only do this if a transform is in effect */
+
w = d_rect.x1 - d_rect.x0;
h = d_rect.y1 - d_rect.y0;