From: Tristan Van Berkom Date: Mon, 1 Nov 2010 03:39:00 +0000 (+0900) Subject: Added GtkCellRendererState flags to GtkCellArea->event/render() methods X-Git-Url: http://pileus.org/git/?a=commitdiff_plain;h=54004237be39428743461ce948f23e945ff3c1f7;p=~andy%2Fgtk Added GtkCellRendererState flags to GtkCellArea->event/render() methods --- diff --git a/gtk/gtkcellarea.c b/gtk/gtkcellarea.c index 7bb991f96..cd41fc6cf 100644 --- a/gtk/gtkcellarea.c +++ b/gtk/gtkcellarea.c @@ -628,11 +628,12 @@ gtk_cell_area_forall (GtkCellArea *area, } gint -gtk_cell_area_event (GtkCellArea *area, - GtkCellAreaIter *iter, - GtkWidget *widget, - GdkEvent *event, - const GdkRectangle *cell_area) +gtk_cell_area_event (GtkCellArea *area, + GtkCellAreaIter *iter, + GtkWidget *widget, + GdkEvent *event, + const GdkRectangle *cell_area, + GtkCellRendererState flags) { GtkCellAreaClass *class; @@ -645,7 +646,7 @@ gtk_cell_area_event (GtkCellArea *area, class = GTK_CELL_AREA_GET_CLASS (area); if (class->event) - return class->event (area, iter, widget, event, cell_area); + return class->event (area, iter, widget, event, cell_area, flags); g_warning ("GtkCellAreaClass::event not implemented for `%s'", g_type_name (G_TYPE_FROM_INSTANCE (area))); @@ -653,11 +654,12 @@ gtk_cell_area_event (GtkCellArea *area, } void -gtk_cell_area_render (GtkCellArea *area, - GtkCellAreaIter *iter, - GtkWidget *widget, - cairo_t *cr, - const GdkRectangle *cell_area) +gtk_cell_area_render (GtkCellArea *area, + GtkCellAreaIter *iter, + GtkWidget *widget, + cairo_t *cr, + const GdkRectangle *cell_area, + GtkCellRendererState flags) { GtkCellAreaClass *class; @@ -670,7 +672,7 @@ gtk_cell_area_render (GtkCellArea *area, class = GTK_CELL_AREA_GET_CLASS (area); if (class->render) - class->render (area, iter, widget, cr, cell_area); + class->render (area, iter, widget, cr, cell_area, flags); else g_warning ("GtkCellAreaClass::render not implemented for `%s'", g_type_name (G_TYPE_FROM_INSTANCE (area))); diff --git a/gtk/gtkcellarea.h b/gtk/gtkcellarea.h index 1046469bd..39bf8eb72 100644 --- a/gtk/gtkcellarea.h +++ b/gtk/gtkcellarea.h @@ -83,12 +83,14 @@ struct _GtkCellAreaClass GtkCellAreaIter *iter, GtkWidget *widget, GdkEvent *event, - const GdkRectangle *cell_area); + const GdkRectangle *cell_area, + GtkCellRendererState flags); void (* render) (GtkCellArea *area, GtkCellAreaIter *iter, GtkWidget *widget, cairo_t *cr, - const GdkRectangle *cell_area); + const GdkRectangle *cell_area, + GtkCellRendererState flags); /* Geometry */ GtkCellAreaIter *(* create_iter) (GtkCellArea *area); @@ -142,23 +144,25 @@ struct _GtkCellAreaClass GType gtk_cell_area_get_type (void) G_GNUC_CONST; /* Basic methods */ -void gtk_cell_area_add (GtkCellArea *area, - GtkCellRenderer *renderer); -void gtk_cell_area_remove (GtkCellArea *area, - GtkCellRenderer *renderer); -void gtk_cell_area_forall (GtkCellArea *area, - GtkCellCallback callback, - gpointer callback_data); -gint gtk_cell_area_event (GtkCellArea *area, - GtkCellAreaIter *iter, - GtkWidget *widget, - GdkEvent *event, - const GdkRectangle *cell_area); -void gtk_cell_area_render (GtkCellArea *area, - GtkCellAreaIter *iter, - GtkWidget *widget, - cairo_t *cr, - const GdkRectangle *cell_area); +void gtk_cell_area_add (GtkCellArea *area, + GtkCellRenderer *renderer); +void gtk_cell_area_remove (GtkCellArea *area, + GtkCellRenderer *renderer); +void gtk_cell_area_forall (GtkCellArea *area, + GtkCellCallback callback, + gpointer callback_data); +gint gtk_cell_area_event (GtkCellArea *area, + GtkCellAreaIter *iter, + GtkWidget *widget, + GdkEvent *event, + const GdkRectangle *cell_area, + GtkCellRendererState flags); +void gtk_cell_area_render (GtkCellArea *area, + GtkCellAreaIter *iter, + GtkWidget *widget, + cairo_t *cr, + const GdkRectangle *cell_area, + GtkCellRendererState flags); /* Geometry */ GtkCellAreaIter *gtk_cell_area_create_iter (GtkCellArea *area); diff --git a/gtk/gtkcellareabox.c b/gtk/gtkcellareabox.c index 920bd0774..aa10026d6 100644 --- a/gtk/gtkcellareabox.c +++ b/gtk/gtkcellareabox.c @@ -31,71 +31,73 @@ /* GObjectClass */ -static void gtk_cell_area_box_finalize (GObject *object); -static void gtk_cell_area_box_dispose (GObject *object); -static void gtk_cell_area_box_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void gtk_cell_area_box_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); +static void gtk_cell_area_box_finalize (GObject *object); +static void gtk_cell_area_box_dispose (GObject *object); +static void gtk_cell_area_box_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gtk_cell_area_box_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); /* GtkCellAreaClass */ -static void gtk_cell_area_box_add (GtkCellArea *area, - GtkCellRenderer *renderer); -static void gtk_cell_area_box_remove (GtkCellArea *area, - GtkCellRenderer *renderer); -static void gtk_cell_area_box_forall (GtkCellArea *area, - GtkCellCallback callback, - gpointer callback_data); -static gint gtk_cell_area_box_event (GtkCellArea *area, - GtkCellAreaIter *iter, - GtkWidget *widget, - GdkEvent *event, - const GdkRectangle *cell_area); -static void gtk_cell_area_box_render (GtkCellArea *area, - GtkCellAreaIter *iter, - GtkWidget *widget, - cairo_t *cr, - const GdkRectangle *cell_area); - -static void gtk_cell_area_box_set_cell_property (GtkCellArea *area, - GtkCellRenderer *renderer, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void gtk_cell_area_box_get_cell_property (GtkCellArea *area, - GtkCellRenderer *renderer, - guint prop_id, - GValue *value, - GParamSpec *pspec); - -static GtkCellAreaIter *gtk_cell_area_box_create_iter (GtkCellArea *area); -static GtkSizeRequestMode gtk_cell_area_box_get_request_mode (GtkCellArea *area); -static void gtk_cell_area_box_get_preferred_width (GtkCellArea *area, - GtkCellAreaIter *iter, - GtkWidget *widget, - gint *minimum_width, - gint *natural_width); -static void gtk_cell_area_box_get_preferred_height (GtkCellArea *area, - GtkCellAreaIter *iter, - GtkWidget *widget, - gint *minimum_height, - gint *natural_height); -static void gtk_cell_area_box_get_preferred_height_for_width (GtkCellArea *area, - GtkCellAreaIter *iter, - GtkWidget *widget, - gint width, - gint *minimum_height, - gint *natural_height); -static void gtk_cell_area_box_get_preferred_width_for_height (GtkCellArea *area, - GtkCellAreaIter *iter, - GtkWidget *widget, - gint height, - gint *minimum_width, - gint *natural_width); +static void gtk_cell_area_box_add (GtkCellArea *area, + GtkCellRenderer *renderer); +static void gtk_cell_area_box_remove (GtkCellArea *area, + GtkCellRenderer *renderer); +static void gtk_cell_area_box_forall (GtkCellArea *area, + GtkCellCallback callback, + gpointer callback_data); +static gint gtk_cell_area_box_event (GtkCellArea *area, + GtkCellAreaIter *iter, + GtkWidget *widget, + GdkEvent *event, + const GdkRectangle *cell_area, + GtkCellRendererState flags); +static void gtk_cell_area_box_render (GtkCellArea *area, + GtkCellAreaIter *iter, + GtkWidget *widget, + cairo_t *cr, + const GdkRectangle *cell_area, + GtkCellRendererState flags); + +static void gtk_cell_area_box_set_cell_property (GtkCellArea *area, + GtkCellRenderer *renderer, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gtk_cell_area_box_get_cell_property (GtkCellArea *area, + GtkCellRenderer *renderer, + guint prop_id, + GValue *value, + GParamSpec *pspec); + +static GtkCellAreaIter *gtk_cell_area_box_create_iter (GtkCellArea *area); +static GtkSizeRequestMode gtk_cell_area_box_get_request_mode (GtkCellArea *area); +static void gtk_cell_area_box_get_preferred_width (GtkCellArea *area, + GtkCellAreaIter *iter, + GtkWidget *widget, + gint *minimum_width, + gint *natural_width); +static void gtk_cell_area_box_get_preferred_height (GtkCellArea *area, + GtkCellAreaIter *iter, + GtkWidget *widget, + gint *minimum_height, + gint *natural_height); +static void gtk_cell_area_box_get_preferred_height_for_width (GtkCellArea *area, + GtkCellAreaIter *iter, + GtkWidget *widget, + gint width, + gint *minimum_height, + gint *natural_height); +static void gtk_cell_area_box_get_preferred_width_for_height (GtkCellArea *area, + GtkCellAreaIter *iter, + GtkWidget *widget, + gint height, + gint *minimum_width, + gint *natural_width); /* GtkCellLayoutIface */ static void gtk_cell_area_box_cell_layout_init (GtkCellLayoutIface *iface); @@ -751,11 +753,12 @@ gtk_cell_area_box_forall (GtkCellArea *area, } static gint -gtk_cell_area_box_event (GtkCellArea *area, - GtkCellAreaIter *iter, - GtkWidget *widget, - GdkEvent *event, - const GdkRectangle *cell_area) +gtk_cell_area_box_event (GtkCellArea *area, + GtkCellAreaIter *iter, + GtkWidget *widget, + GdkEvent *event, + const GdkRectangle *cell_area, + GtkCellRendererState flags) { @@ -763,11 +766,12 @@ gtk_cell_area_box_event (GtkCellArea *area, } static void -gtk_cell_area_box_render (GtkCellArea *area, - GtkCellAreaIter *iter, - GtkWidget *widget, - cairo_t *cr, - const GdkRectangle *cell_area) +gtk_cell_area_box_render (GtkCellArea *area, + GtkCellAreaIter *iter, + GtkWidget *widget, + cairo_t *cr, + const GdkRectangle *cell_area, + GtkCellRendererState flags) { GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); GtkCellAreaBoxPrivate *priv = box->priv; @@ -800,9 +804,11 @@ gtk_cell_area_box_render (GtkCellArea *area, */ gtk_cell_area_inner_cell_area (area, &background_area, &inner_area); + /* XXX We have to do some per-cell considerations for the 'flags' + * for focus handling */ gtk_cell_renderer_render (cell->renderer, cr, widget, &background_area, &inner_area, - /* flags */0); + flags); }