[gtk+] image: Fix up draw function



commit 18e489fedd6b225e4dedece3c71059f4119acf17
Author: Benjamin Otte <otte redhat com>
Date:   Sun Sep 26 17:50:03 2010 +0200

    image: Fix up draw function
    
    The previous port to the draw function was a tiny bit incomplete. This
    patch should fix the remaining issues and remove unused variables.

 gtk/gtkimage.c |   37 +++----------------------------------
 1 files changed, 3 insertions(+), 34 deletions(-)
---
diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c
index 94206e3..0d8b1b9 100644
--- a/gtk/gtkimage.c
+++ b/gtk/gtkimage.c
@@ -1582,9 +1582,7 @@ gtk_image_draw (GtkWidget *widget,
   
   if (priv->storage_type != GTK_IMAGE_EMPTY)
     {
-      GtkAllocation allocation;
       GtkMisc *misc;
-      GdkRectangle image_bound;
       gint x, y;
       gint xpad, ypad;
       gfloat xalign, yalign;
@@ -1602,31 +1600,21 @@ gtk_image_draw (GtkWidget *widget,
       if (priv->need_calc_size)
 	gtk_image_calc_size (image);
 
-      gtk_widget_get_allocation (widget, &allocation);
-
       gtk_misc_get_alignment (misc, &xalign, &yalign);
       gtk_misc_get_padding (misc, &xpad, &ypad);
 
       if (gtk_widget_get_direction (widget) != GTK_TEXT_DIR_LTR)
 	xalign = 1.0 - xalign;
 
-      x = floor (allocation.x + xpad + ((allocation.width - priv->required_width) * xalign));
-      y = floor (allocation.y + ypad + ((allocation.height - priv->required_height) * yalign));
+      x = floor (xpad + ((gtk_widget_get_allocated_width (widget) - priv->required_width) * xalign));
+      y = floor (ypad + ((gtk_widget_get_allocated_height (widget) - priv->required_height) * yalign));
       
-      image_bound.x = x;
-      image_bound.y = y;      
-      image_bound.width = 0;
-      image_bound.height = 0;      
-
       needs_state_transform = gtk_widget_get_state (widget) != GTK_STATE_NORMAL;
       
       switch (priv->storage_type)
         {
 
         case GTK_IMAGE_PIXBUF:
-          image_bound.width = gdk_pixbuf_get_width (priv->data.pixbuf.pixbuf);
-          image_bound.height = gdk_pixbuf_get_height (priv->data.pixbuf.pixbuf);
-
           pixbuf = priv->data.pixbuf.pixbuf;
           g_object_ref (pixbuf);
           break;
@@ -1636,11 +1624,6 @@ gtk_image_draw (GtkWidget *widget,
                                            priv->data.stock.stock_id,
                                            priv->icon_size,
                                            NULL);
-          if (pixbuf)
-            {              
-              image_bound.width = gdk_pixbuf_get_width (pixbuf);
-              image_bound.height = gdk_pixbuf_get_height (pixbuf);
-            }
 
           /* already done */
           needs_state_transform = FALSE;
@@ -1656,12 +1639,6 @@ gtk_image_draw (GtkWidget *widget,
                                       widget,
                                       NULL);
 
-          if (pixbuf)
-            {
-              image_bound.width = gdk_pixbuf_get_width (pixbuf);
-              image_bound.height = gdk_pixbuf_get_height (pixbuf);
-            }
-
           /* already done */
           needs_state_transform = FALSE;
           break;
@@ -1679,9 +1656,6 @@ gtk_image_draw (GtkWidget *widget,
                                    image);
               }
 
-            image_bound.width = gdk_pixbuf_animation_get_width (priv->data.anim.anim);
-            image_bound.height = gdk_pixbuf_animation_get_height (priv->data.anim.anim);
-                  
             /* don't advance the anim iter here, or we could get frame changes between two
              * exposes of different areas.
              */
@@ -1708,8 +1682,6 @@ gtk_image_draw (GtkWidget *widget,
 	  if (pixbuf)
 	    {
 	      g_object_ref (pixbuf);
-	      image_bound.width = gdk_pixbuf_get_width (pixbuf);
-	      image_bound.height = gdk_pixbuf_get_height (pixbuf);
 	    }
 	  break;
 
@@ -1730,8 +1702,6 @@ gtk_image_draw (GtkWidget *widget,
 	  if (pixbuf)
 	    {
 	      g_object_ref (pixbuf);
-	      image_bound.width = gdk_pixbuf_get_width (pixbuf);
-	      image_bound.height = gdk_pixbuf_get_height (pixbuf);
 	    }
 	  break;
 	  
@@ -1775,8 +1745,7 @@ gtk_image_draw (GtkWidget *widget,
             }
 
           gdk_cairo_set_source_pixbuf (cr, pixbuf, x, y);
-          gdk_cairo_rectangle (cr, &image_bound);
-          cairo_fill (cr);
+          cairo_paint (cr);
 
           g_object_unref (pixbuf);
         }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]