[gtk+/treeview-style: 1/8] Make GtkCellArea use GtkStyleContext
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/treeview-style: 1/8] Make GtkCellArea use GtkStyleContext
- Date: Mon, 17 Jan 2011 11:20:27 +0000 (UTC)
commit 9b2e297977f982cb3e3ced105e77e8b8d1446e19
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed Jan 12 21:07:05 2011 +0100
Make GtkCellArea use GtkStyleContext
gtk_cell_area_[gs]et_style_detail() is no longer needed, as
the passed widget's context would already have all necessary
info.
docs/reference/gtk/gtk3-sections.txt | 2 -
gtk/gtk.symbols | 2 -
gtk/gtkcellarea.c | 84 ++++++++-------------------------
gtk/gtkcellarea.h | 4 --
gtk/gtkiconview.c | 2 -
gtk/gtktreeviewcolumn.c | 2 -
6 files changed, 21 insertions(+), 75 deletions(-)
---
diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt
index 8134a01..ee210c2 100644
--- a/docs/reference/gtk/gtk3-sections.txt
+++ b/docs/reference/gtk/gtk3-sections.txt
@@ -4425,8 +4425,6 @@ gtk_cell_area_foreach
gtk_cell_area_foreach_alloc
gtk_cell_area_event
gtk_cell_area_render
-gtk_cell_area_set_style_detail
-gtk_cell_area_get_style_detail
gtk_cell_area_get_cell_allocation
gtk_cell_area_get_cell_at_position
gtk_cell_area_create_context
diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols
index 8aefc9b..59a1e59 100644
--- a/gtk/gtk.symbols
+++ b/gtk/gtk.symbols
@@ -413,7 +413,6 @@ gtk_cell_area_get_preferred_height_for_width
gtk_cell_area_get_preferred_width
gtk_cell_area_get_preferred_width_for_height
gtk_cell_area_get_request_mode
-gtk_cell_area_get_style_detail
gtk_cell_area_get_type G_GNUC_CONST
gtk_cell_area_has_renderer
gtk_cell_area_inner_cell_area
@@ -424,7 +423,6 @@ gtk_cell_area_remove_focus_sibling
gtk_cell_area_render
gtk_cell_area_request_renderer
gtk_cell_area_set_focus_cell
-gtk_cell_area_set_style_detail
gtk_cell_area_stop_editing
gtk_cell_editable_editing_done
gtk_cell_editable_get_type G_GNUC_CONST
diff --git a/gtk/gtkcellarea.c b/gtk/gtkcellarea.c
index 2175f50..ab9362d 100644
--- a/gtk/gtkcellarea.c
+++ b/gtk/gtkcellarea.c
@@ -560,9 +560,6 @@ struct _GtkCellAreaPrivate
/* Tracking which cells are focus siblings of focusable cells */
GHashTable *focus_siblings;
-
- /* Detail string to pass to gtk_paint_*() functions */
- gchar *style_detail;
};
enum {
@@ -905,7 +902,6 @@ gtk_cell_area_finalize (GObject *object)
g_hash_table_destroy (priv->focus_siblings);
g_free (priv->current_path);
- g_free (priv->style_detail);
G_OBJECT_CLASS (gtk_cell_area_parent_class)->finalize (object);
}
@@ -1152,21 +1148,33 @@ gtk_cell_area_real_render (GtkCellArea *area,
render_data.focus_rect.width != 0 &&
render_data.focus_rect.height != 0)
{
- GtkStateType renderer_state =
- flags & GTK_CELL_RENDERER_SELECTED ? GTK_STATE_SELECTED :
- (flags & GTK_CELL_RENDERER_PRELIT ? GTK_STATE_PRELIGHT :
- (flags & GTK_CELL_RENDERER_INSENSITIVE ? GTK_STATE_INSENSITIVE : GTK_STATE_NORMAL));
+ GtkStyleContext *style_context;
+ GtkStateFlags renderer_state = 0;
+
+ style_context = gtk_widget_get_style_context (widget);
+ gtk_style_context_save (style_context);
+
+ if (flags & GTK_CELL_RENDERER_INSENSITIVE)
+ renderer_state |= GTK_STATE_FLAG_INSENSITIVE;
+ else
+ {
+ if (flags & GTK_CELL_RENDERER_SELECTED)
+ renderer_state |= GTK_STATE_FLAG_SELECTED;
+
+ if (flags & GTK_CELL_RENDERER_PRELIT)
+ renderer_state |= GTK_STATE_FLAG_PRELIGHT;
+ }
+
+ gtk_style_context_set_state (style_context, renderer_state);
cairo_save (cr);
gdk_cairo_rectangle (cr, background_area);
cairo_clip (cr);
- gtk_paint_focus (gtk_widget_get_style (widget), cr,
- renderer_state, widget,
- gtk_cell_area_get_style_detail (area),
- render_data.focus_rect.x, render_data.focus_rect.y,
- render_data.focus_rect.width, render_data.focus_rect.height);
+ gtk_render_focus (style_context, cr,
+ render_data.focus_rect.x, render_data.focus_rect.y,
+ render_data.focus_rect.width, render_data.focus_rect.height);
cairo_restore (cr);
}
@@ -1776,56 +1784,6 @@ gtk_cell_area_render (GtkCellArea *area,
g_type_name (G_TYPE_FROM_INSTANCE (area)));
}
-/**
- * gtk_cell_area_set_style_detail:
- * @area: a #GtkCellArea
- * @detail: the #GtkStyle detail string to set
- *
- * Sets the detail string used in any gtk_paint_*() functions
- * used by @area.
- *
- * Since: 3.0
- */
-void
-gtk_cell_area_set_style_detail (GtkCellArea *area,
- const gchar *detail)
-{
- GtkCellAreaPrivate *priv;
-
- g_return_if_fail (GTK_IS_CELL_AREA (area));
-
- priv = area->priv;
-
- if (g_strcmp0 (priv->style_detail, detail) != 0)
- {
- g_free (priv->style_detail);
- priv->style_detail = g_strdup (detail);
- }
-}
-
-/**
- * gtk_cell_area_get_style_detail:
- * @area: a #GtkCellArea
- *
- * Gets the detail string used in any gtk_paint_*() functions
- * used by @area.
- *
- * Return value: the detail string, the string belongs to the area and should not be freed.
- *
- * Since: 3.0
- */
-G_CONST_RETURN gchar *
-gtk_cell_area_get_style_detail (GtkCellArea *area)
-{
- GtkCellAreaPrivate *priv;
-
- g_return_val_if_fail (GTK_IS_CELL_AREA (area), NULL);
-
- priv = area->priv;
-
- return priv->style_detail;
-}
-
static gboolean
get_cell_allocation (GtkCellRenderer *renderer,
const GdkRectangle *cell_area,
diff --git a/gtk/gtkcellarea.h b/gtk/gtkcellarea.h
index 78d5e95..52abe23 100644
--- a/gtk/gtkcellarea.h
+++ b/gtk/gtkcellarea.h
@@ -311,10 +311,6 @@ void gtk_cell_area_render (GtkCellArea
const GdkRectangle *cell_area,
GtkCellRendererState flags,
gboolean paint_focus);
-void gtk_cell_area_set_style_detail (GtkCellArea *area,
- const gchar *detail);
-G_CONST_RETURN gchar *gtk_cell_area_get_style_detail (GtkCellArea *area);
-
void gtk_cell_area_get_cell_allocation (GtkCellArea *area,
GtkCellAreaContext *context,
diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c
index 47dc4c7..686eb9c 100644
--- a/gtk/gtkiconview.c
+++ b/gtk/gtkiconview.c
@@ -1119,8 +1119,6 @@ gtk_icon_view_constructor (GType type,
if (GTK_IS_ORIENTABLE (priv->cell_area))
gtk_orientable_set_orientation (GTK_ORIENTABLE (priv->cell_area), priv->item_orientation);
- gtk_cell_area_set_style_detail (priv->cell_area, "icon_view");
-
priv->cell_area_context = gtk_cell_area_create_context (priv->cell_area);
priv->add_editable_id =
diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c
index eebcf5e..98a7746 100644
--- a/gtk/gtktreeviewcolumn.c
+++ b/gtk/gtktreeviewcolumn.c
@@ -496,8 +496,6 @@ gtk_tree_view_column_constructor (GType type,
g_object_ref_sink (priv->cell_area);
}
- gtk_cell_area_set_style_detail (priv->cell_area, "treeview");
-
priv->add_editable_signal =
g_signal_connect (priv->cell_area, "add-editable",
G_CALLBACK (gtk_tree_view_column_add_editable_callback),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]