[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