pidgin/gtkcellrendererexpander.c

branch
cpw.qulogic.gtk3-required
changeset 33170
ce4447562d64
parent 33158
ad941796372e
child 33271
53bf180b9eb1
--- a/pidgin/gtkcellrendererexpander.c	Mon Jul 23 20:18:25 2012 -0400
+++ b/pidgin/gtkcellrendererexpander.c	Mon Jul 23 22:52:00 2012 -0400
@@ -32,6 +32,14 @@
 #include <gtk/gtk.h>
 #include "gtkcellrendererexpander.h"
 
+#include "gtk3compat.h"
+
+#if GTK_CHECK_VERSION(3,0,0)
+#define GTK3_CONST const
+#else
+#define GTK3_CONST
+#endif
+
 static void pidgin_cell_renderer_expander_get_property  (GObject                    *object,
 						      guint                       param_id,
 						      GValue                     *value,
@@ -44,23 +52,30 @@
 static void pidgin_cell_renderer_expander_class_init (PidginCellRendererExpanderClass *class);
 static void pidgin_cell_renderer_expander_get_size   (GtkCellRenderer            *cell,
 						   GtkWidget                  *widget,
-						   const GdkRectangle               *cell_area,
+						   GTK3_CONST GdkRectangle    *cell_area,
 						   gint                       *x_offset,
 						   gint                       *y_offset,
 						   gint                       *width,
 						   gint                       *height);
 static void pidgin_cell_renderer_expander_render     (GtkCellRenderer            *cell,
+#if GTK_CHECK_VERSION(3,0,0)
 						   cairo_t                    *cr,
+#else
+						   GdkWindow                  *window,
+#endif
 						   GtkWidget                  *widget,
-						   const GdkRectangle         *background_area,
-						   const GdkRectangle         *cell_area,
+						   GTK3_CONST GdkRectangle    *background_area,
+						   GTK3_CONST GdkRectangle    *cell_area,
+#if !GTK_CHECK_VERSION(3,0,0)
+                           GdkRectangle               *export_area,
+#endif
 						   GtkCellRendererState        flags);
 static gboolean pidgin_cell_renderer_expander_activate  (GtkCellRenderer            *r,
 						      GdkEvent                   *event,
 						      GtkWidget                  *widget,
 						      const gchar                *p,
-						      const GdkRectangle         *bg,
-						      const GdkRectangle         *cell,
+						      GTK3_CONST GdkRectangle    *bg,
+						      GTK3_CONST GdkRectangle    *cell,
 						      GtkCellRendererState        flags);
 static void  pidgin_cell_renderer_expander_finalize (GObject *gobject);
 
@@ -187,9 +202,10 @@
 	return g_object_new(PIDGIN_TYPE_GTK_CELL_RENDERER_EXPANDER, NULL);
 }
 
-static void pidgin_cell_renderer_expander_get_size (GtkCellRenderer *cell,
+static void
+pidgin_cell_renderer_expander_get_size (GtkCellRenderer *cell,
 						 GtkWidget       *widget,
-						 const GdkRectangle    *cell_area,
+						 GTK3_CONST GdkRectangle *cell_area,
 						 gint            *x_offset,
 						 gint            *y_offset,
 						 gint            *width,
@@ -232,12 +248,20 @@
 }
 
 
-static void pidgin_cell_renderer_expander_render(GtkCellRenderer *cell,
-					       cairo_t              *cr,
-					       GtkWidget            *widget,
-					       const GdkRectangle   *background_area,
-					       const GdkRectangle   *cell_area,
-					       GtkCellRendererState flags)
+static void
+pidgin_cell_renderer_expander_render(GtkCellRenderer *cell,
+#if GTK_CHECK_VERSION(3,0,0)
+					       cairo_t                 *cr,
+#else
+					       GdkWindow               *window,
+#endif
+					       GtkWidget               *widget,
+					       GTK3_CONST GdkRectangle *background_area,
+					       GTK3_CONST GdkRectangle *cell_area,
+#if !GTK_CHECK_VERSION(3,0,0)
+					       GdkRectangle            *expose_area,
+#endif
+					       GtkCellRendererState    flags)
 {
 	PidginCellRendererExpander *cellexpander = (PidginCellRendererExpander *) cell;
 	gboolean set;
@@ -269,28 +293,44 @@
 	width -= xpad*2;
 	height -= ypad*2;
 
+#if GTK_CHECK_VERSION(3,0,0)
 	gtk_paint_expander(gtk_widget_get_style(widget),
 	                   cr, state,
 	                   widget, "treeview",
 	                   cell_area->x + xpad + (width / 2),
 	                   cell_area->y + ypad + (height / 2),
 	                   is_expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED);
+#else
+	gtk_paint_expander(gtk_widget_get_style(widget),
+	                   window, state,
+	                   NULL, widget, "treeview",
+	                   cell_area->x + cell->xpad + (width / 2),
+	                   cell_area->y + cell->ypad + (height / 2),
+	                   is_expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED);
+#endif
 
 	/* only draw the line if the color isn't set - this prevents a bug where the hline appears only under the expander */
 	g_object_get(cellexpander, "cell-background-set", &set, NULL);
 	gtk_widget_get_allocation(widget, &allocation);
 
+#if GTK_CHECK_VERSION(3,0,0)
 	if (is_expanded && !set)
 		gtk_paint_hline(gtk_widget_get_style(widget), cr, state, widget, NULL, 0,
 		                allocation.width, cell_area->y + cell_area->height);
+#else
+	if (is_expanded && !set)
+		gtk_paint_hline(gtk_widget_get_style(widget), window, state, NULL, widget, NULL, 0,
+		                allocation.width, cell_area->y + cell_area->height);
+#endif
 }
 
-static gboolean pidgin_cell_renderer_expander_activate(GtkCellRenderer *r,
+static gboolean
+pidgin_cell_renderer_expander_activate(GtkCellRenderer *r,
 						     GdkEvent *event,
 						     GtkWidget *widget,
 						     const gchar *p,
-						     const GdkRectangle *bg,
-						     const GdkRectangle *cell,
+						     GTK3_CONST GdkRectangle *bg,
+						     GTK3_CONST GdkRectangle *cell,
 						     GtkCellRendererState flags)
 {
 	GtkTreePath *path = gtk_tree_path_new_from_string(p);

mercurial