Updating branch refs/heads/stephan/gtk3
         to df1bce813f1c730c27b516d551cd928aa781d903 (commit)
       from f7cc8b5f39b6f9c936e81ee3f2553669f027a3a0 (commit)

commit df1bce813f1c730c27b516d551cd928aa781d903
Author: Stephan Arts <step...@xfce.org>
Date:   Sat May 5 16:13:32 2012 +0200

    Partially port ExoCellRendererIcon

 exo/exo-cell-renderer-icon.c |   58 ++++++++++++++++++++++++------------------
 1 files changed, 33 insertions(+), 25 deletions(-)

diff --git a/exo/exo-cell-renderer-icon.c b/exo/exo-cell-renderer-icon.c
index 0e6ead7..e79da86 100644
--- a/exo/exo-cell-renderer-icon.c
+++ b/exo/exo-cell-renderer-icon.c
@@ -78,17 +78,16 @@ static void exo_cell_renderer_icon_set_property (GObject    
              *objec
                                                  GParamSpec               
*pspec);
 static void exo_cell_renderer_icon_get_size     (GtkCellRenderer          
*renderer,
                                                  GtkWidget                
*widget,
-                                                 GdkRectangle             
*cell_area,
+                                                 const GdkRectangle       
*cell_area,
                                                  gint                     
*x_offset,
                                                  gint                     
*y_offset,
                                                  gint                     
*width,
                                                  gint                     
*height);
 static void exo_cell_renderer_icon_render       (GtkCellRenderer          
*renderer,
-                                                 GdkWindow                
*window,
+                                                 cairo_t                  *cr,
                                                  GtkWidget                
*widget,
-                                                 GdkRectangle             
*background_area,
-                                                 GdkRectangle             
*cell_area,
-                                                 GdkRectangle             
*expose_area,
+                                                 const GdkRectangle       
*background_area,
+                                                 const GdkRectangle       
*cell_area,
                                                  GtkCellRendererState      
flags);
 
 
@@ -316,29 +315,39 @@ exo_cell_renderer_icon_set_property (GObject      *object,
 
 
 static void
-exo_cell_renderer_icon_get_size (GtkCellRenderer *renderer,
-                                 GtkWidget       *widget,
-                                 GdkRectangle    *cell_area,
-                                 gint            *x_offset,
-                                 gint            *y_offset,
-                                 gint            *width,
-                                 gint            *height)
+exo_cell_renderer_icon_get_size (GtkCellRenderer       *renderer,
+                                 GtkWidget             *widget,
+                                 const GdkRectangle    *cell_area,
+                                 gint                  *x_offset,
+                                 gint                  *y_offset,
+                                 gint                  *width,
+                                 gint                  *height)
 {
   const ExoCellRendererIconPrivate *priv = EXO_CELL_RENDERER_ICON_GET_PRIVATE 
(renderer);
+  GdkRectangle                      aligned_area;
+  gint                              xpad;
+  gint                              ypad;
+  
+  gtk_cell_renderer_get_padding (renderer, &xpad, &ypad);
 
   if (cell_area != NULL)
     {
+      gtk_cell_renderer_get_aligned_area (renderer,
+                                          widget,
+                                          0,
+                                          cell_area,
+                                          &aligned_area);
       if (x_offset != NULL)
         {
-          *x_offset = ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) 
? 1.0 - renderer->xalign : renderer->xalign)
+          *x_offset = ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) 
? 1.0 - aligned_area.x: aligned_area.x)
                     * (cell_area->width - priv->size);
-          *x_offset = MAX (*x_offset, 0) + renderer->xpad;
+          *x_offset = MAX (*x_offset, 0) + xpad;
         }
 
       if (y_offset != NULL)
         {
-          *y_offset = renderer->yalign * (cell_area->height - priv->size);
-          *y_offset = MAX (*y_offset, 0) + renderer->ypad;
+          *y_offset = aligned_area.y * (cell_area->height - priv->size);
+          *y_offset = MAX (*y_offset, 0) + ypad;
         }
     }
   else
@@ -351,21 +360,20 @@ exo_cell_renderer_icon_get_size (GtkCellRenderer 
*renderer,
     }
 
   if (G_LIKELY (width != NULL))
-    *width = (gint) renderer->xpad * 2 + priv->size;
+    *width = (gint) xpad * 2 + priv->size;
 
   if (G_LIKELY (height != NULL))
-    *height = (gint) renderer->ypad * 2 + priv->size;
+    *height = (gint) ypad * 2 + priv->size;
 }
 
 
 
 static void
 exo_cell_renderer_icon_render (GtkCellRenderer     *renderer,
-                               GdkWindow           *window,
+                               cairo_t             *cr,
                                GtkWidget           *widget,
-                               GdkRectangle        *background_area,
-                               GdkRectangle        *cell_area,
-                               GdkRectangle        *expose_area,
+                               const GdkRectangle  *background_area,
+                               const GdkRectangle  *cell_area,
                                GtkCellRendererState flags)
 {
   const ExoCellRendererIconPrivate *priv = EXO_CELL_RENDERER_ICON_GET_PRIVATE 
(renderer);
@@ -494,14 +502,14 @@ exo_cell_renderer_icon_render (GtkCellRenderer     
*renderer,
   icon_area.y = cell_area->y + (cell_area->height - icon_area.height) / 2;
 
   /* check whether the icon is affected by the expose event */
-  if (gdk_rectangle_intersect (expose_area, &icon_area, &draw_area))
+  if (gdk_rectangle_intersect (&icon_area, &draw_area, NULL))
     {
       /* colorize the icon if we should follow the selection state */
       if ((flags & (GTK_CELL_RENDERER_SELECTED | GTK_CELL_RENDERER_PRELIT)) != 
0 && priv->follow_state)
         {
           if ((flags & GTK_CELL_RENDERER_SELECTED) != 0)
             {
-              state = GTK_WIDGET_HAS_FOCUS (widget) ? GTK_STATE_SELECTED : 
GTK_STATE_ACTIVE;
+              state = gtk_widget_has_focus (widget) ? GTK_STATE_SELECTED : 
GTK_STATE_ACTIVE;
               temp = exo_gdk_pixbuf_colorize (icon, 
&widget->style->base[state]);
               g_object_unref (G_OBJECT (icon));
               icon = temp;
@@ -516,7 +524,7 @@ exo_cell_renderer_icon_render (GtkCellRenderer     
*renderer,
         }
 
       /* check if we should render an insensitive icon */
-      if (G_UNLIKELY (GTK_WIDGET_STATE (widget) == GTK_STATE_INSENSITIVE || 
!renderer->sensitive))
+      if (G_UNLIKELY (gtk_widget_get_state (widget) == GTK_STATE_INSENSITIVE 
|| !gtk_cell_renderer_get_sensitive (renderer)))
         {
           /* allocate an icon source */
           icon_source = gtk_icon_source_new ();
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to