forked from AuroraMiddleware/gtk
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.
This commit is contained in:
parent
8ad724ebcc
commit
efae64be66
@ -1049,6 +1049,25 @@ gtk_cell_area_box_dispose (GObject *object)
|
||||
G_OBJECT_CLASS (gtk_cell_area_box_parent_class)->dispose (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,
|
||||
@ -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));
|
||||
|
@ -414,6 +414,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,
|
||||
@ -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:
|
||||
{
|
||||
|
@ -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");
|
||||
}
|
||||
|
@ -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));
|
||||
|
@ -112,6 +112,25 @@ gtk_separator_init (GtkSeparator *separator)
|
||||
private->orientation = GTK_ORIENTATION_HORIZONTAL;
|
||||
}
|
||||
|
||||
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,
|
||||
@ -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:
|
||||
|
@ -233,6 +233,25 @@ gtk_tool_palette_reconfigured (GtkToolPalette *palette)
|
||||
gtk_widget_queue_resize_no_redraw (GTK_WIDGET (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,
|
||||
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user