[gtk+] Set vertical/horizontal class on all widgets overriding GtkOrientable::orientation
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Set vertical/horizontal class on all widgets overriding GtkOrientable::orientation
- Date: Wed, 12 Jan 2011 21:30:59 +0000 (UTC)
commit efae64be666e7d7489f1a7b8b19d6a9d760a6cda
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed Jan 12 22:28:43 2011 +0100
Set vertical/horizontal class on all widgets overriding GtkOrientable::orientation
This is so g_object_set() on that property leaves widgets' style in
a meaningful state. Fully fixes bug 639157.
gtk/gtkcellareabox.c | 21 +++++++++++++++++++++
gtk/gtkcellview.c | 21 +++++++++++++++++++++
gtk/gtkgrid.c | 13 +++++++++++++
gtk/gtkprogressbar.c | 13 +++++++++++++
gtk/gtkseparator.c | 20 ++++++++++++++++++++
gtk/gtktoolpalette.c | 20 ++++++++++++++++++++
6 files changed, 108 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkcellareabox.c b/gtk/gtkcellareabox.c
index cc9e8f2..ea3a3c8 100644
--- a/gtk/gtkcellareabox.c
+++ b/gtk/gtkcellareabox.c
@@ -1050,6 +1050,25 @@ gtk_cell_area_box_dispose (GObject *object)
}
static void
+reset_orientation_style (GtkCellAreaBox *box)
+{
+ GtkStyleContext *context;
+
+ context = gtk_widget_get_style_context (GTK_WIDGET (box));
+
+ if (box->priv->orientation == GTK_ORIENTATION_VERTICAL)
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_VERTICAL);
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+ }
+ else
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_VERTICAL);
+ }
+}
+
+static void
gtk_cell_area_box_set_property (GObject *object,
guint prop_id,
const GValue *value,
@@ -1064,6 +1083,8 @@ gtk_cell_area_box_set_property (GObject *object,
/* Notify that size needs to be requested again */
reset_contexts (box);
+ reset_orientation_style (box);
+
break;
case PROP_SPACING:
gtk_cell_area_box_set_spacing (box, g_value_get_int (value));
diff --git a/gtk/gtkcellview.c b/gtk/gtkcellview.c
index 168bf04..87c56ed 100644
--- a/gtk/gtkcellview.c
+++ b/gtk/gtkcellview.c
@@ -415,6 +415,25 @@ gtk_cell_view_get_property (GObject *object,
}
static void
+reset_orientation_style (GtkCellView *view)
+{
+ GtkStyleContext *context;
+
+ context = gtk_widget_get_style_context (GTK_WIDGET (view));
+
+ if (view->priv->orientation == GTK_ORIENTATION_VERTICAL)
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_VERTICAL);
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+ }
+ else
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_VERTICAL);
+ }
+}
+
+static void
gtk_cell_view_set_property (GObject *object,
guint param_id,
const GValue *value,
@@ -430,6 +449,8 @@ gtk_cell_view_set_property (GObject *object,
view->priv->orientation = g_value_get_enum (value);
if (view->priv->context)
gtk_cell_area_context_reset (view->priv->context);
+
+ reset_orientation_style (view);
break;
case PROP_BACKGROUND:
{
diff --git a/gtk/gtkgrid.c b/gtk/gtkgrid.c
index 3557c16..525f970 100644
--- a/gtk/gtkgrid.c
+++ b/gtk/gtkgrid.c
@@ -187,10 +187,23 @@ gtk_grid_set_orientation (GtkGrid *grid,
GtkOrientation orientation)
{
GtkGridPrivate *priv = grid->priv;
+ GtkStyleContext *context;
if (priv->orientation != orientation)
{
priv->orientation = orientation;
+ context = gtk_widget_get_style_context (GTK_WIDGET (grid));
+
+ if (grid->priv->orientation == GTK_ORIENTATION_VERTICAL)
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_VERTICAL);
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+ }
+ else
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_VERTICAL);
+ }
g_object_notify (G_OBJECT (grid), "orientation");
}
diff --git a/gtk/gtkprogressbar.c b/gtk/gtkprogressbar.c
index 3cc366c..9c8fd92 100644
--- a/gtk/gtkprogressbar.c
+++ b/gtk/gtkprogressbar.c
@@ -1204,10 +1204,23 @@ gtk_progress_bar_set_orientation (GtkProgressBar *pbar,
GtkOrientation orientation)
{
GtkProgressBarPrivate *priv = pbar->priv;
+ GtkStyleContext *context;
if (priv->orientation != orientation)
{
priv->orientation = orientation;
+ context = gtk_widget_get_style_context (GTK_WIDGET (pbar));
+
+ if (pbar->priv->orientation == GTK_ORIENTATION_VERTICAL)
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_VERTICAL);
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+ }
+ else
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_VERTICAL);
+ }
if (gtk_widget_is_drawable (GTK_WIDGET (pbar)))
gtk_widget_queue_resize (GTK_WIDGET (pbar));
diff --git a/gtk/gtkseparator.c b/gtk/gtkseparator.c
index 1de28a1..b30292f 100644
--- a/gtk/gtkseparator.c
+++ b/gtk/gtkseparator.c
@@ -113,6 +113,25 @@ gtk_separator_init (GtkSeparator *separator)
}
static void
+reset_orientation_style (GtkSeparator *separator)
+{
+ GtkStyleContext *context;
+
+ context = gtk_widget_get_style_context (GTK_WIDGET (separator));
+
+ if (separator->priv->orientation == GTK_ORIENTATION_VERTICAL)
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_VERTICAL);
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+ }
+ else
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_VERTICAL);
+ }
+}
+
+static void
gtk_separator_set_property (GObject *object,
guint prop_id,
const GValue *value,
@@ -125,6 +144,7 @@ gtk_separator_set_property (GObject *object,
{
case PROP_ORIENTATION:
private->orientation = g_value_get_enum (value);
+ reset_orientation_style (separator);
gtk_widget_queue_resize (GTK_WIDGET (object));
break;
default:
diff --git a/gtk/gtktoolpalette.c b/gtk/gtktoolpalette.c
index e35bf81..491cf9e 100644
--- a/gtk/gtktoolpalette.c
+++ b/gtk/gtktoolpalette.c
@@ -234,6 +234,25 @@ gtk_tool_palette_reconfigured (GtkToolPalette *palette)
}
static void
+reset_orientation_style (GtkToolPalette *palette)
+{
+ GtkStyleContext *context;
+
+ context = gtk_widget_get_style_context (GTK_WIDGET (palette));
+
+ if (palette->priv->orientation == GTK_ORIENTATION_VERTICAL)
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_VERTICAL);
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+ }
+ else
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_HORIZONTAL);
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_VERTICAL);
+ }
+}
+
+static void
gtk_tool_palette_set_property (GObject *object,
guint prop_id,
const GValue *value,
@@ -263,6 +282,7 @@ gtk_tool_palette_set_property (GObject *object,
if ((guint) g_value_get_enum (value) != palette->priv->orientation)
{
palette->priv->orientation = g_value_get_enum (value);
+ reset_orientation_style (palette);
gtk_tool_palette_reconfigured (palette);
}
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]