#include "gtkwindow.h"
#include "gtktextbuffer.h"
+#define DEBUG_ICON_VIEW
+
#define ICON_TEXT_PADDING 3
#define GTK_ICON_VIEW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_ICON_VIEW, GtkIconViewPrivate))
if (gdk_region_rect_in (expose->region, &item_rectangle) == GDK_OVERLAP_RECTANGLE_OUT)
continue;
-#if 0
+#ifdef DEBUG_ICON_VIEW
gdk_draw_rectangle (icon_view->priv->bin_window,
GTK_WIDGET (icon_view)->style->black_gc,
FALSE,
gtk_icon_view_calculate_item_size (icon_view, item, item_width);
-
colspan = 1 + (item->width - 1) / (item_width + icon_view->priv->column_spacing);
current_width += colspan * (item_width + icon_view->priv->column_spacing);
if (rtl)
{
item->layout_x = item->x + ICON_TEXT_PADDING + focus_width + focus_pad;
- item->pixbuf_x = item->x + 2 * (ICON_TEXT_PADDING + focus_width + focus_pad) + icon_view->priv->spacing + item->layout_width;
+ if (icon_view->priv->text_column != -1 ||
+ icon_view->priv->markup_column != -1)
+ item->pixbuf_x = item->x + 2 * (ICON_TEXT_PADDING + focus_width + focus_pad) + icon_view->priv->spacing + item->layout_width;
+ else
+ item->pixbuf_x = item->x;
}
else
{
item->pixbuf_x = item->x;
- item->layout_x = item->x + item->pixbuf_width + icon_view->priv->spacing + ICON_TEXT_PADDING + focus_width + focus_pad;
+ if (icon_view->priv->pixbuf_column != -1)
+ item->layout_x = item->x + item->pixbuf_width + icon_view->priv->spacing + ICON_TEXT_PADDING + focus_width + focus_pad;
+ else
+ item->layout_x = item->x + ICON_TEXT_PADDING + focus_width + focus_pad;
}
}
else
else
{
item->pixbuf_y = item->y + (max_pixbuf_height - item->pixbuf_height);
- item->layout_y = item->pixbuf_y + item->pixbuf_height + icon_view->priv->spacing + ICON_TEXT_PADDING + focus_width + focus_pad;
+ if (icon_view->priv->pixbuf_column != -1)
+ item->layout_y = item->pixbuf_y + item->pixbuf_height + icon_view->priv->spacing + ICON_TEXT_PADDING + focus_width + focus_pad;
+ else
+ item->layout_y = item->y + ICON_TEXT_PADDING + focus_width + focus_pad;
}
/* Update the bounding box */
item->y = item->pixbuf_y;
gint focus_width, focus_pad;
gint layout_width, layout_height;
gint maximum_layout_width;
+ gint spacing, padding;
gint colspan;
GdkPixbuf *pixbuf;
"focus-padding", &focus_pad,
NULL);
+ spacing = icon_view->priv->spacing;
+
if (icon_view->priv->pixbuf_column != -1)
{
pixbuf = gtk_icon_view_get_item_icon (icon_view, item);
{
item->pixbuf_width = 0;
item->pixbuf_height = 0;
+ spacing = 0;
}
if (icon_view->priv->orientation == GTK_ORIENTATION_HORIZONTAL &&
else
maximum_layout_width = MAX (item_width, item->pixbuf_width);
- if (icon_view->priv->markup_column != 1 ||
+ if (icon_view->priv->markup_column != -1 ||
icon_view->priv->text_column != -1)
{
gtk_icon_view_update_item_text (icon_view, item);
item->layout_width = layout_width;
item->layout_height = layout_height;
+ padding = 2 * (ICON_TEXT_PADDING + focus_width + focus_pad);
}
else
{
item->layout_width = 0;
item->layout_height = 0;
+ spacing = 0;
+ padding = 0;
}
if (icon_view->priv->orientation == GTK_ORIENTATION_HORIZONTAL)
{
- item->width = layout_width + 2 * (ICON_TEXT_PADDING + focus_width + focus_pad) + icon_view->priv->spacing + item->pixbuf_width;
- item->height = MAX (layout_height + 2 * (ICON_TEXT_PADDING + focus_width + focus_pad), item->pixbuf_height);
+ item->width = item->layout_width + padding + spacing + item->pixbuf_width;
+ item->height = MAX (item->layout_height + padding, item->pixbuf_height);
}
else
{
- item->width = MAX (layout_width + 2 * (ICON_TEXT_PADDING + focus_width + focus_pad), item->pixbuf_width);
- item->height = layout_height + 2 * (ICON_TEXT_PADDING + focus_width + focus_pad) + icon_view->priv->spacing + item->pixbuf_height;
+ item->width = MAX (item->layout_width + padding, item->pixbuf_width);
+ item->height = item->layout_height + padding + spacing + item->pixbuf_height;
}
}
g_object_unref (pixbuf);
}
- if (icon_view->priv->text_column != -1)
+ if (icon_view->priv->text_column != -1 ||
+ icon_view->priv->markup_column != -1)
{
if (item->selected)
{
icon_view->priv->markup_column, &text,
-1);
pango_layout_set_markup (icon_view->priv->layout, text, -1);
+ g_free (text);
}
- else
+ else if (icon_view->priv->text_column != -1)
{
gtk_tree_model_get (icon_view->priv->model, &iter,
icon_view->priv->text_column, &text,
-1);
pango_layout_set_text (icon_view->priv->layout, text, -1);
+ g_free (text);
}
-
- g_free (text);
+ else
+ pango_layout_set_text (icon_view->priv->layout, "", -1);
}
static GdkPixbuf *