diff options
author | Matthias Clasen <maclas@gmx.de> | 2004-07-18 03:05:24 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2004-07-18 03:05:24 +0000 |
commit | 01d19b81904d703fd74ca651debd4a8c907bbb4e (patch) | |
tree | 7e42897896e7b7a10c947abe5f946e0f8f56541c | |
parent | 601ef659f4c5f471698fc5a2fe7c83c398c39873 (diff) | |
download | gdk-pixbuf-01d19b81904d703fd74ca651debd4a8c907bbb4e.tar.gz |
Draw focus indicator outside the selection, respect focus line width.
Sat Jul 17 23:03:30 2004 Matthias Clasen <maclas@gmx.de>
* gtk/gtkiconview.c (gtk_icon_view_paint_item):
* gtk/gtkiconview.c (gtk_icon_view_calculate_item_size):
* gtk/gtkiconview.c (gtk_icon_view_layout_single_row): Draw
focus indicator outside the selection, respect focus
line width. (#147460)
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 8 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 8 | ||||
-rw-r--r-- | gtk/gtkiconview.c | 39 |
5 files changed, 61 insertions, 10 deletions
@@ -1,3 +1,11 @@ +Sat Jul 17 23:03:30 2004 Matthias Clasen <maclas@gmx.de> + + * gtk/gtkiconview.c (gtk_icon_view_paint_item): + * gtk/gtkiconview.c (gtk_icon_view_calculate_item_size): + * gtk/gtkiconview.c (gtk_icon_view_layout_single_row): Draw + focus indicator outside the selection, respect focus + line width. (#147460) + Sat Jul 17 01:17:33 2004 Matthias Clasen <maclas@gmx.de> * gdk/x11/gdkdnd-x11.c (xdnd_check_dest): Fix a warning diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 029e384c1..50814bf12 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,11 @@ +Sat Jul 17 23:03:30 2004 Matthias Clasen <maclas@gmx.de> + + * gtk/gtkiconview.c (gtk_icon_view_paint_item): + * gtk/gtkiconview.c (gtk_icon_view_calculate_item_size): + * gtk/gtkiconview.c (gtk_icon_view_layout_single_row): Draw + focus indicator outside the selection, respect focus + line width. (#147460) + Sat Jul 17 01:17:33 2004 Matthias Clasen <maclas@gmx.de> * gdk/x11/gdkdnd-x11.c (xdnd_check_dest): Fix a warning diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 029e384c1..50814bf12 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,11 @@ +Sat Jul 17 23:03:30 2004 Matthias Clasen <maclas@gmx.de> + + * gtk/gtkiconview.c (gtk_icon_view_paint_item): + * gtk/gtkiconview.c (gtk_icon_view_calculate_item_size): + * gtk/gtkiconview.c (gtk_icon_view_layout_single_row): Draw + focus indicator outside the selection, respect focus + line width. (#147460) + Sat Jul 17 01:17:33 2004 Matthias Clasen <maclas@gmx.de> * gdk/x11/gdkdnd-x11.c (xdnd_check_dest): Fix a warning diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 029e384c1..50814bf12 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,11 @@ +Sat Jul 17 23:03:30 2004 Matthias Clasen <maclas@gmx.de> + + * gtk/gtkiconview.c (gtk_icon_view_paint_item): + * gtk/gtkiconview.c (gtk_icon_view_calculate_item_size): + * gtk/gtkiconview.c (gtk_icon_view_layout_single_row): Draw + focus indicator outside the selection, respect focus + line width. (#147460) + Sat Jul 17 01:17:33 2004 Matthias Clasen <maclas@gmx.de> * gdk/x11/gdkdnd-x11.c (xdnd_check_dest): Fix a warning diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c index 6d41f8c09..5d6b44986 100644 --- a/gtk/gtkiconview.c +++ b/gtk/gtkiconview.c @@ -1431,6 +1431,7 @@ gtk_icon_view_adjustment_changed (GtkAdjustment *adjustment, static GList * gtk_icon_view_layout_single_row (GtkIconView *icon_view, GList *first_item, gint *y, gint *maximum_width, gint row) { + gint focus_width, focus_pad; gint x, current_width, max_height, max_pixbuf_height; GList *items, *last_item; gint maximum_layout_width; @@ -1444,6 +1445,11 @@ gtk_icon_view_layout_single_row (GtkIconView *icon_view, GList *first_item, gint items = first_item; current_width = 0; + gtk_widget_style_get (GTK_WIDGET (icon_view), + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + NULL); + x += ICON_VIEW_LEFT_MARGIN; current_width += ICON_VIEW_LEFT_MARGIN + ICON_VIEW_RIGHT_MARGIN; items = first_item; @@ -1502,7 +1508,7 @@ gtk_icon_view_layout_single_row (GtkIconView *icon_view, GList *first_item, gint GtkIconViewItem *item = items->data; item->pixbuf_y = item->y + (max_pixbuf_height - item->pixbuf_height); - item->layout_y = item->pixbuf_y + item->pixbuf_height + ICON_TEXT_PADDING; + item->layout_y = item->pixbuf_y + item->pixbuf_height + ICON_TEXT_PADDING + focus_width + focus_pad; /* Update the bounding box */ item->y = item->pixbuf_y; @@ -1600,13 +1606,19 @@ static void gtk_icon_view_calculate_item_size (GtkIconView *icon_view, GtkIconViewItem *item) { - int layout_width, layout_height; - int maximum_layout_width; + gint focus_width, focus_pad; + gint layout_width, layout_height; + gint maximum_layout_width; GdkPixbuf *pixbuf; if (item->width != -1 && item->width != -1) return; + gtk_widget_style_get (GTK_WIDGET (icon_view), + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + NULL); + if (icon_view->priv->pixbuf_column != -1) { pixbuf = gtk_icon_view_get_item_icon (icon_view, item); @@ -1632,8 +1644,9 @@ gtk_icon_view_calculate_item_size (GtkIconView *icon_view, pango_layout_get_pixel_size (icon_view->priv->layout, &layout_width, &layout_height); - item->width = MAX ((layout_width + 2 * ICON_TEXT_PADDING), item->pixbuf_width); - item->height = layout_height + 2 * ICON_TEXT_PADDING + item->pixbuf_height; + 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) + item->pixbuf_height; + item->layout_width = layout_width; item->layout_height = layout_height; } @@ -1708,12 +1721,18 @@ gtk_icon_view_paint_item (GtkIconView *icon_view, GtkIconViewItem *item, GdkRectangle *area) { + gint focus_width, focus_pad; GdkPixbuf *pixbuf, *tmp; GtkStateType state; if (!VALID_MODEL_AND_COLUMNS (icon_view)) return; + gtk_widget_style_get (GTK_WIDGET (icon_view), + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + NULL); + if (GTK_WIDGET_HAS_FOCUS (icon_view)) state = GTK_STATE_SELECTED; else @@ -1766,14 +1785,14 @@ gtk_icon_view_paint_item (GtkIconView *icon_view, item == icon_view->priv->cursor_item) gtk_paint_focus (GTK_WIDGET (icon_view)->style, icon_view->priv->bin_window, - item->selected ? GTK_STATE_SELECTED : GTK_STATE_NORMAL, + GTK_STATE_NORMAL, area, GTK_WIDGET (icon_view), "icon_view", - item->layout_x - ICON_TEXT_PADDING, - item->layout_y - ICON_TEXT_PADDING, - item->layout_width + 2 * ICON_TEXT_PADDING, - item->layout_height + 2 * ICON_TEXT_PADDING); + item->layout_x - ICON_TEXT_PADDING - focus_width - focus_pad, + item->layout_y - ICON_TEXT_PADDING - focus_width - focus_pad, + item->layout_width + 2 * (ICON_TEXT_PADDING + focus_width + focus_pad), + item->layout_height + 2 * (ICON_TEXT_PADDING + focus_width + focus_pad)); } } |