[Xfce4-commits] <exo:stephan/gtk3> Port exo-cell-renderer-ellipsized-text

Stephan Arts noreply at xfce.org
Sat May 5 14:54:01 CEST 2012


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

commit f7cc8b5f39b6f9c936e81ee3f2553669f027a3a0
Author: Stephan Arts <stephan at xfce.org>
Date:   Sat May 5 14:52:42 2012 +0200

    Port exo-cell-renderer-ellipsized-text

 exo/exo-cell-renderer-ellipsized-text.c |   63 +++++++++++++++++-------------
 exo/exo-gtk-extensions.c                |    8 ++--
 exo/exo-gtk-extensions.h                |    2 +-
 exo/exo-icon-bar.c                      |   10 ++--
 exo/exo-icon-view.c                     |   26 ++++++------
 exo/exo-icon-view.h                     |    2 +-
 exo/exo-toolbars-view.c                 |    2 +-
 7 files changed, 61 insertions(+), 52 deletions(-)

diff --git a/exo/exo-cell-renderer-ellipsized-text.c b/exo/exo-cell-renderer-ellipsized-text.c
index 5836221..4da148f 100644
--- a/exo/exo-cell-renderer-ellipsized-text.c
+++ b/exo/exo-cell-renderer-ellipsized-text.c
@@ -70,17 +70,16 @@ static void exo_cell_renderer_ellipsized_text_set_property  (GObject
                                                              GParamSpec                         *pspec);
 static void exo_cell_renderer_ellipsized_text_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_ellipsized_text_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);
 
 
@@ -188,19 +187,20 @@ exo_cell_renderer_ellipsized_text_set_property (GObject      *object,
 
 
 static void
-exo_cell_renderer_ellipsized_text_get_size (GtkCellRenderer *renderer,
-                                            GtkWidget       *widget,
-                                            GdkRectangle    *cell_area,
-                                            gint            *x_offset,
-                                            gint            *y_offset,
-                                            gint            *width,
-                                            gint            *height)
+exo_cell_renderer_ellipsized_text_get_size (GtkCellRenderer    *renderer,
+                                            GtkWidget          *widget,
+                                            const GdkRectangle *cell_area,
+                                            gint               *x_offset,
+                                            gint               *y_offset,
+                                            gint               *width,
+                                            gint               *height)
 {
   ExoCellRendererEllipsizedTextPrivate *priv = EXO_CELL_RENDERER_ELLIPSIZED_TEXT_GET_PRIVATE (renderer);
   gint                                  focus_line_width;
   gint                                  focus_padding;
   gint                                  text_height;
   gint                                  text_width;
+  GdkRectangle                          aligned_area;
 
   /* determine the dimensions of the text from the GtkCellRendererText */
   (*GTK_CELL_RENDERER_CLASS (exo_cell_renderer_ellipsized_text_parent_class)->get_size) (renderer, widget, NULL, NULL, NULL, &text_width, &text_height);
@@ -227,16 +227,21 @@ exo_cell_renderer_ellipsized_text_get_size (GtkCellRenderer *renderer,
   /* update the x/y offsets */
   if (G_LIKELY (cell_area != NULL))
     {
+      gtk_cell_renderer_get_aligned_area (renderer,
+                                          widget,
+                                          0,
+                                          cell_area,
+                                          &aligned_area);
       if (G_LIKELY (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 - text_width);
           *x_offset = MAX (*x_offset, 0);
         }
 
       if (G_LIKELY (y_offset != NULL))
         {
-          *y_offset = renderer->yalign * (cell_area->height - text_height);
+          *y_offset = aligned_area.y * (cell_area->height - text_height);
           *y_offset = MAX (*y_offset, 0);
         }
     }
@@ -246,17 +251,17 @@ exo_cell_renderer_ellipsized_text_get_size (GtkCellRenderer *renderer,
 
 static void
 exo_cell_renderer_ellipsized_text_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)
 {
   ExoCellRendererEllipsizedTextPrivate *priv = EXO_CELL_RENDERER_ELLIPSIZED_TEXT_GET_PRIVATE (renderer);
   GdkRectangle                          text_area;
   GtkStateType                          state;
-  cairo_t                              *cr;
+  GtkStyleContext                      *style_context;
+  GdkRGBA                               bg_color;
   gint                                  focus_line_width;
   gint                                  focus_padding;
   gint                                  text_height;
@@ -264,6 +269,8 @@ exo_cell_renderer_ellipsized_text_render (GtkCellRenderer     *renderer,
   gint                                  x0, x1;
   gint                                  y0, y1;
 
+  style_context = gtk_widget_get_style_context (widget);
+
   /* determine the text cell areas */
   if (G_UNLIKELY (!priv->follow_state))
     {
@@ -275,19 +282,19 @@ exo_cell_renderer_ellipsized_text_render (GtkCellRenderer     *renderer,
       /* determine the widget state */
       if ((flags & GTK_CELL_RENDERER_SELECTED) == GTK_CELL_RENDERER_SELECTED)
         {
-          if (GTK_WIDGET_HAS_FOCUS (widget))
+          if (gtk_widget_has_focus (widget))
             state = GTK_STATE_SELECTED;
           else
             state = GTK_STATE_ACTIVE;
         }
       else if ((flags & GTK_CELL_RENDERER_PRELIT) == GTK_CELL_RENDERER_PRELIT
-            && GTK_WIDGET_STATE (widget) == GTK_STATE_PRELIGHT)
+            && gtk_widget_get_state (widget) == GTK_STATE_PRELIGHT)
         {
           state = GTK_STATE_PRELIGHT;
         }
       else
         {
-          if (GTK_WIDGET_STATE (widget) == GTK_STATE_INSENSITIVE)
+          if (gtk_widget_get_state (widget) == GTK_STATE_INSENSITIVE)
             state = GTK_STATE_INSENSITIVE;
           else
             state = GTK_STATE_NORMAL;
@@ -323,7 +330,6 @@ exo_cell_renderer_ellipsized_text_render (GtkCellRenderer     *renderer,
               /* Cairo produces nicer results than using a polygon
                * and so we use it directly if possible.
                */
-              cr = gdk_cairo_create (window);
               cairo_move_to (cr, x0 + 5, y0);
               cairo_line_to (cr, x1 - 5, y0);
               cairo_curve_to (cr, x1 - 5, y0, x1, y0, x1, y0 + 5);
@@ -333,7 +339,10 @@ exo_cell_renderer_ellipsized_text_render (GtkCellRenderer     *renderer,
               cairo_curve_to (cr, x0 + 5, y1, x0, y1, x0, y1 - 5);
               cairo_line_to (cr, x0, y0 + 5);
               cairo_curve_to (cr, x0, y0 + 5, x0, y0, x0 + 5, y0);
-              gdk_cairo_set_source_color (cr, &widget->style->base[state]);
+              gtk_style_context_get_background_color (style_context,
+                                                      state,
+                                                      &bg_color);
+              gdk_cairo_set_source_rgba (cr, &bg_color);
               cairo_fill (cr);
               cairo_destroy (cr);
             }
@@ -341,15 +350,15 @@ exo_cell_renderer_ellipsized_text_render (GtkCellRenderer     *renderer,
           /* draw the focus indicator */
           if ((flags & GTK_CELL_RENDERER_FOCUSED) != 0)
             {
-              gtk_paint_focus (widget->style, window, GTK_WIDGET_STATE (widget), NULL, widget, "icon_view", x0, y0, text_width, text_height);
+              gtk_render_focus (style_context, cr, x0, y0, text_width, text_height);
               flags &= ~GTK_CELL_RENDERER_FOCUSED;
             }
         }
     }
 
   /* render the text using the GtkCellRendererText */
-  (*GTK_CELL_RENDERER_CLASS (exo_cell_renderer_ellipsized_text_parent_class)->render) (renderer, window, widget, background_area,
-                                                                                       &text_area, expose_area, flags);
+  (*GTK_CELL_RENDERER_CLASS (exo_cell_renderer_ellipsized_text_parent_class)->render) (renderer, cr, widget, background_area,
+                                                                                       &text_area, flags);
 }
 
 
diff --git a/exo/exo-gtk-extensions.c b/exo/exo-gtk-extensions.c
index fc22297..5148b20 100644
--- a/exo/exo-gtk-extensions.c
+++ b/exo/exo-gtk-extensions.c
@@ -52,7 +52,7 @@
 static gboolean
 later_destroy (gpointer object)
 {
-  gtk_object_destroy (GTK_OBJECT (object));
+  gtk_widget_destroy (GTK_OBJECT (object));
   g_object_unref (G_OBJECT (object));
   return FALSE;
 }
@@ -60,14 +60,14 @@ later_destroy (gpointer object)
 
 
 /**
- * exo_gtk_object_destroy_later:
- * @object : a #GtkObject.
+ * exo_gtk_widget_destroy_later:
+ * @object : a #GtkWidget.
  *
  * Schedules an idle function to destroy the specified @object
  * when the application enters the main loop the next time.
  **/
 void
-exo_gtk_object_destroy_later (GtkObject *object)
+exo_gtk_widget_destroy_later (GtkWidget *object)
 {
   g_return_if_fail (GTK_IS_OBJECT (object));
 
diff --git a/exo/exo-gtk-extensions.h b/exo/exo-gtk-extensions.h
index 8ef76d8..dbc3db9 100644
--- a/exo/exo-gtk-extensions.h
+++ b/exo/exo-gtk-extensions.h
@@ -30,7 +30,7 @@
 
 G_BEGIN_DECLS
 
-void      exo_gtk_object_destroy_later                (GtkObject      *object);
+void      exo_gtk_widget_destroy_later                (GtkWidget      *object);
 
 void      exo_gtk_file_chooser_add_thumbnail_preview  (GtkFileChooser *chooser);
 
diff --git a/exo/exo-icon-bar.c b/exo/exo-icon-bar.c
index f3d5c86..2f76198 100644
--- a/exo/exo-icon-bar.c
+++ b/exo/exo-icon-bar.c
@@ -113,7 +113,7 @@ enum
 
 
 
-static void            exo_icon_bar_destroy               (GtkObject        *object);
+static void            exo_icon_bar_destroy               (GtkWidget        *object);
 static void            exo_icon_bar_finalize              (GObject          *object);
 static void            exo_icon_bar_get_property          (GObject          *object,
                                                            guint             prop_id,
@@ -237,7 +237,7 @@ G_DEFINE_TYPE (ExoIconBar, exo_icon_bar, GTK_TYPE_CONTAINER)
 static void
 exo_icon_bar_class_init (ExoIconBarClass *klass)
 {
-  GtkObjectClass *gtkobject_class;
+  GtkWidgetClass *gtkobject_class;
   GtkWidgetClass *gtkwidget_class;
   GObjectClass   *gobject_class;
 
@@ -442,7 +442,7 @@ exo_icon_bar_init (ExoIconBar *icon_bar)
 
 
 static void
-exo_icon_bar_destroy (GtkObject *object)
+exo_icon_bar_destroy (GtkWidget *object)
 {
   ExoIconBar *icon_bar = EXO_ICON_BAR (object);
 
@@ -860,7 +860,7 @@ exo_icon_bar_set_adjustments (ExoIconBar    *icon_bar,
     {
       icon_bar->priv->hadjustment = hadj;
       g_object_ref (icon_bar->priv->hadjustment);
-      gtk_object_sink (GTK_OBJECT (icon_bar->priv->hadjustment));
+      gtk_widget_sink (GTK_OBJECT (icon_bar->priv->hadjustment));
 
       g_signal_connect (icon_bar->priv->hadjustment, "value_changed",
                         G_CALLBACK (exo_icon_bar_adjustment_changed), icon_bar);
@@ -871,7 +871,7 @@ exo_icon_bar_set_adjustments (ExoIconBar    *icon_bar,
     {
       icon_bar->priv->vadjustment = vadj;
       g_object_ref (icon_bar->priv->vadjustment);
-      gtk_object_sink (GTK_OBJECT (icon_bar->priv->vadjustment));
+      gtk_widget_sink (GTK_OBJECT (icon_bar->priv->vadjustment));
 
       g_signal_connect (icon_bar->priv->vadjustment, "value_changed",
                         G_CALLBACK (exo_icon_bar_adjustment_changed), icon_bar);
diff --git a/exo/exo-icon-view.c b/exo/exo-icon-view.c
index 9587596..44e5bde 100644
--- a/exo/exo-icon-view.c
+++ b/exo/exo-icon-view.c
@@ -2786,7 +2786,7 @@ exo_icon_view_set_adjustments (ExoIconView   *icon_view,
     {
       icon_view->priv->hadjustment = hadj;
       g_object_ref (icon_view->priv->hadjustment);
-      gtk_object_sink (GTK_OBJECT (icon_view->priv->hadjustment));
+      gtk_widget_sink (GTK_OBJECT (icon_view->priv->hadjustment));
 
       g_signal_connect (icon_view->priv->hadjustment, "value-changed",
                         G_CALLBACK (exo_icon_view_adjustment_changed),
@@ -2798,7 +2798,7 @@ exo_icon_view_set_adjustments (ExoIconView   *icon_view,
     {
       icon_view->priv->vadjustment = vadj;
       g_object_ref (icon_view->priv->vadjustment);
-      gtk_object_sink (GTK_OBJECT (icon_view->priv->vadjustment));
+      gtk_widget_sink (GTK_OBJECT (icon_view->priv->vadjustment));
 
       g_signal_connect (icon_view->priv->vadjustment, "value-changed",
                         G_CALLBACK (exo_icon_view_adjustment_changed),
@@ -4712,7 +4712,7 @@ exo_icon_view_cell_layout_pack_start (GtkCellLayout   *layout,
   _exo_return_if_fail (exo_icon_view_get_cell_info (icon_view, renderer) == NULL);
 
   g_object_ref (renderer);
-  gtk_object_sink (GTK_OBJECT (renderer));
+  gtk_widget_sink (GTK_OBJECT (renderer));
 
   info = g_slice_new0 (ExoIconViewCellInfo);
   info->cell = renderer;
@@ -4741,7 +4741,7 @@ exo_icon_view_cell_layout_pack_end (GtkCellLayout   *layout,
   _exo_return_if_fail (exo_icon_view_get_cell_info (icon_view, renderer) == NULL);
 
   g_object_ref (renderer);
-  gtk_object_sink (GTK_OBJECT (renderer));
+  gtk_widget_sink (GTK_OBJECT (renderer));
 
   info = g_slice_new0 (ExoIconViewCellInfo);
   info->cell = renderer;
@@ -6765,7 +6765,7 @@ exo_icon_view_drag_begin (GtkWidget      *widget,
 {
   ExoIconView *icon_view;
   ExoIconViewItem *item;
-  GdkPixmap *icon;
+  cairo_surface_t *icon;
   gint x, y;
   GtkTreePath *path;
 
@@ -7388,23 +7388,23 @@ exo_icon_view_get_dest_item_at_pos (ExoIconView              *icon_view,
  * @icon_view : a #ExoIconView
  * @path      : a #GtkTreePath in @icon_view
  *
- * Creates a #GdkPixmap representation of the item at @path.
+ * Creates a #cairo_surface_t representation of the item at @path.
  * This image is used for a drag icon.
  *
  * Returns: a newly-allocated pixmap of the drag icon.
  *
  * Since: 0.3.1
  **/
-GdkPixmap*
+cairo_surface_t *
 exo_icon_view_create_drag_icon (ExoIconView *icon_view,
                                 GtkTreePath *path)
 {
-  GdkRectangle area;
-  GtkWidget   *widget = GTK_WIDGET (icon_view);
-  GdkPixmap   *drawable;
-  GdkGC       *gc;
-  GList       *lp;
-  gint         idx;
+  GdkRectangle     area;
+  GtkWidget       *widget = GTK_WIDGET (icon_view);
+  cairo_surface_t *drawable;
+  GdkGC           *gc;
+  GList           *lp;
+  gint             idx;
 
   g_return_val_if_fail (EXO_IS_ICON_VIEW (icon_view), NULL);
   g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, NULL);
diff --git a/exo/exo-icon-view.h b/exo/exo-icon-view.h
index 0dec327..f5430a3 100644
--- a/exo/exo-icon-view.h
+++ b/exo/exo-icon-view.h
@@ -311,7 +311,7 @@ gboolean              exo_icon_view_get_dest_item_at_pos      (ExoIconView
                                                                gint                      drag_y,
                                                                GtkTreePath             **path,
                                                                ExoIconViewDropPosition  *pos);
-GdkPixmap            *exo_icon_view_create_drag_icon          (ExoIconView              *icon_view,
+cairo_surface_t      *exo_icon_view_create_drag_icon          (ExoIconView              *icon_view,
                                                                GtkTreePath              *path);
 
 
diff --git a/exo/exo-toolbars-view.c b/exo/exo-toolbars-view.c
index aeb5c2d..21410c4 100644
--- a/exo/exo-toolbars-view.c
+++ b/exo/exo-toolbars-view.c
@@ -663,7 +663,7 @@ exo_toolbars_view_drag_data_received (GtkWidget         *toolbar,
                                                                             data_is_separator (id),
                                                                             NULL);
       g_object_ref (G_OBJECT (view->priv->dragged_item));
-      gtk_object_sink (GTK_OBJECT (view->priv->dragged_item));
+      gtk_widget_sink (GTK_OBJECT (view->priv->dragged_item));
     }
   else
     {


More information about the Xfce4-commits mailing list