[Xfce4-commits] <ristretto:stephan/icon-bar> Correctly position icon and show tooltip-text.
Stephan Arts
noreply at xfce.org
Sat Feb 4 12:32:01 CET 2012
Updating branch refs/heads/stephan/icon-bar
to 5de0b9aa7a91a26fec4d9d59490d0a7a6c6645e9 (commit)
from ab008e3447cfdfe52ef3d05f79ed0217daf3a002 (commit)
commit 5de0b9aa7a91a26fec4d9d59490d0a7a6c6645e9
Author: Stephan Arts <stephan at xfce.org>
Date: Sat Feb 4 02:48:15 2012 +0100
Correctly position icon and show tooltip-text.
src/icon_bar.c | 52 ++++++++++++++++++++++++++++++++--------------------
1 files changed, 32 insertions(+), 20 deletions(-)
diff --git a/src/icon_bar.c b/src/icon_bar.c
index 5e5410d..a9dba5c 100644
--- a/src/icon_bar.c
+++ b/src/icon_bar.c
@@ -187,8 +187,6 @@ static void rstto_icon_bar_rows_reordered (GtkTreeModel *m
gint *new_order,
RsttoIconBar *icon_bar);
-
-
struct _RsttoIconBarItem
{
GtkTreeIter iter;
@@ -868,14 +866,30 @@ rstto_icon_bar_motion (GtkWidget *widget,
{
RsttoIconBarItem *item;
RsttoIconBar *icon_bar = RSTTO_ICON_BAR (widget);
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ gchar *text;
item = rstto_icon_bar_get_item_at_pos (icon_bar, event->x, event->y);
if (item != NULL && icon_bar->priv->cursor_item != item)
- {
+ {
if (icon_bar->priv->cursor_item != NULL)
rstto_icon_bar_queue_draw_item (icon_bar, icon_bar->priv->cursor_item);
icon_bar->priv->cursor_item = item;
rstto_icon_bar_queue_draw_item (icon_bar, item);
+
+ iter = item->iter;
+ gtk_tree_model_get (icon_bar->priv->model, &iter,
+ icon_bar->priv->text_column, &text,
+ -1);
+
+ gtk_widget_set_tooltip_text (widget, text);
+
+ if (text)
+ {
+ g_free (text);
+ }
+ gtk_widget_trigger_tooltip_query (widget);
}
else if (icon_bar->priv->cursor_item != NULL
&& icon_bar->priv->cursor_item != item)
@@ -1139,16 +1153,16 @@ rstto_icon_bar_paint_item (RsttoIconBar *icon_bar,
x = 0;
y = icon_bar->priv->item_height * item->index;
- px = (icon_bar->priv->item_width - item->pixbuf_width) / 2 + focus_pad + focus_width;
+ px = (icon_bar->priv->item_width - item->pixbuf_width) / 2;
if (icon_bar->priv->text_column != -1 && icon_bar->priv->show_text == TRUE)
{
py = (icon_bar->priv->item_height - (item->pixbuf_height + item->layout_height + ICON_TEXT_PADDING)) / 2
- + icon_bar->priv->item_height * item->index + focus_pad + focus_width;
+ + icon_bar->priv->item_height * item->index;
}
else
{
py = (icon_bar->priv->item_height - (item->pixbuf_height)) / 2
- + icon_bar->priv->item_height * item->index + focus_pad + focus_width;
+ + icon_bar->priv->item_height * item->index;
}
lx = (icon_bar->priv->item_width - (item->layout_width + ICON_TEXT_PADDING)) / 2 + focus_pad;
ly = py + item->pixbuf_height + ICON_TEXT_PADDING;
@@ -1158,17 +1172,15 @@ rstto_icon_bar_paint_item (RsttoIconBar *icon_bar,
x = icon_bar->priv->item_width * item->index;
y = 0;
- px = (icon_bar->priv->item_width - item->pixbuf_width) / 2 + focus_pad + focus_width
+ px = (icon_bar->priv->item_width - item->pixbuf_width) / 2;
+ icon_bar->priv->item_width * item->index;
if (icon_bar->priv->text_column != -1 && icon_bar->priv->show_text == TRUE)
{
- py = (icon_bar->priv->item_height - (item->pixbuf_height + item->layout_height)) / 2
- + focus_pad + focus_width;
+ py = (icon_bar->priv->item_height - (item->pixbuf_height + item->layout_height)) / 2;
}
else
{
- py = (icon_bar->priv->item_height - (item->pixbuf_height)) / 2
- + focus_pad + focus_width;
+ py = (icon_bar->priv->item_height - (item->pixbuf_height)) / 2;
}
lx = (icon_bar->priv->item_width - (item->layout_width)) / 2 + x;
ly = py + item->pixbuf_height + ICON_TEXT_PADDING;
@@ -1199,15 +1211,15 @@ rstto_icon_bar_paint_item (RsttoIconBar *icon_bar,
gdk_draw_rectangle (icon_bar->priv->bin_window, gc, TRUE,
x + focus_pad + focus_width,
y + focus_pad + focus_width,
- icon_bar->priv->item_width - 2 * (focus_width + focus_pad) + 1,
- icon_bar->priv->item_height - 2 * (focus_width + focus_pad) + 1);
+ icon_bar->priv->item_width - 2 * (focus_width + focus_pad),
+ icon_bar->priv->item_height - 2 * (focus_width + focus_pad));
gdk_gc_set_rgb_fg_color (gc, border_color);
gdk_gc_set_line_attributes (gc, focus_width, GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER);
gdk_draw_rectangle (icon_bar->priv->bin_window, gc, FALSE,
x + focus_pad + focus_width / 2,
y + focus_pad + focus_width / 2,
- icon_bar->priv->item_width - (2 * focus_pad + focus_width) + 1,
- icon_bar->priv->item_height - (2 * focus_pad + focus_width) + 1);
+ icon_bar->priv->item_width - (2 * focus_pad + focus_width),
+ icon_bar->priv->item_height - (2 * focus_pad + focus_width));
gdk_color_free (border_color);
gdk_color_free (fill_color);
g_object_unref (gc);
@@ -1237,15 +1249,15 @@ rstto_icon_bar_paint_item (RsttoIconBar *icon_bar,
gdk_draw_rectangle (icon_bar->priv->bin_window, gc, TRUE,
x + focus_pad + focus_width,
y + focus_pad + focus_width,
- icon_bar->priv->item_width - 2 * (focus_width + focus_pad) + 1,
- icon_bar->priv->item_height - 2 * (focus_width + focus_pad) + 1);
+ icon_bar->priv->item_width - 2 * (focus_width + focus_pad),
+ icon_bar->priv->item_height - 2 * (focus_width + focus_pad));
gdk_gc_set_rgb_fg_color (gc, border_color);
gdk_gc_set_line_attributes (gc, focus_width, GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER);
gdk_draw_rectangle (icon_bar->priv->bin_window, gc, FALSE,
x + focus_pad + focus_width / 2,
y + focus_pad + focus_width / 2,
- icon_bar->priv->item_width - (2 * focus_pad + focus_width) + 1,
- icon_bar->priv->item_height - (2 * focus_pad + focus_width) + 1);
+ icon_bar->priv->item_width - (2 * focus_pad + focus_width),
+ icon_bar->priv->item_height - (2 * focus_pad + focus_width));
gdk_color_free (border_color);
gdk_color_free (fill_color);
g_object_unref (gc);
@@ -1257,7 +1269,7 @@ rstto_icon_bar_paint_item (RsttoIconBar *icon_bar,
if (G_LIKELY (pixbuf != NULL))
{
gdk_draw_pixbuf (icon_bar->priv->bin_window, NULL, pixbuf, 0, 0,
- px-1, py-1, item->pixbuf_width, item->pixbuf_height,
+ px, py, item->pixbuf_width, item->pixbuf_height,
GDK_RGB_DITHER_NORMAL, item->pixbuf_width,
item->pixbuf_height);
g_object_unref (pixbuf);
More information about the Xfce4-commits
mailing list