diff options
author | Jasper St. Pierre <jstpierre@mecheye.net> | 2014-11-24 19:40:25 -0800 |
---|---|---|
committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2014-11-24 19:40:25 -0800 |
commit | cbf6545ef260c104fe3f7569452341cb4b8d0bcf (patch) | |
tree | d8a4cf2d5e8cff80b9798ae29b4538523109273b | |
parent | 8c17c90a827c23c3b75ecef36e64f3f728a0e824 (diff) | |
download | gtk+-wip/style-changes.tar.gz |
wip state changeswip/style-changes
-rw-r--r-- | gtk/deprecated/gtkstyle.c | 57 | ||||
-rw-r--r-- | gtk/gtkcellarea.c | 4 | ||||
-rw-r--r-- | gtk/gtknotebook.c | 17 | ||||
-rw-r--r-- | gtk/gtkstylecontext.c | 2 | ||||
-rw-r--r-- | gtk/gtkwindow.c | 3 |
5 files changed, 45 insertions, 38 deletions
diff --git a/gtk/deprecated/gtkstyle.c b/gtk/deprecated/gtkstyle.c index 2c3bde61a6..c271982e1a 100644 --- a/gtk/deprecated/gtkstyle.c +++ b/gtk/deprecated/gtkstyle.c @@ -616,11 +616,13 @@ static gboolean set_color_from_context (GtkStyle *style, GtkStateType state, GtkStyleContext *context, - GtkStateFlags flags, GtkRcFlags prop) { GdkRGBA *color = NULL; GdkColor *dest = { 0 }; /* Shut up gcc */ + GtkStateFlags flags; + + flags = gtk_style_context_get_state (context); switch (prop) { @@ -674,26 +676,6 @@ set_color (GtkStyle *style, GtkStateType state, GtkRcFlags prop) { - GtkStateFlags flags; - - switch (state) - { - case GTK_STATE_ACTIVE: - flags = GTK_STATE_FLAG_ACTIVE; - break; - case GTK_STATE_PRELIGHT: - flags = GTK_STATE_FLAG_PRELIGHT; - break; - case GTK_STATE_SELECTED: - flags = GTK_STATE_FLAG_SELECTED; - break; - case GTK_STATE_INSENSITIVE: - flags = GTK_STATE_FLAG_INSENSITIVE; - break; - default: - flags = 0; - } - /* Try to fill in the values from the associated GtkStyleContext. * Since fully-transparent black is a very common default (e.g. for * background-color properties), and we must store the result in a GdkColor @@ -701,11 +683,11 @@ set_color (GtkStyle *style, * we give themes a fallback style class they can style, before using the * hardcoded default values. */ - if (!set_color_from_context (style, state, context, flags, prop)) + if (!set_color_from_context (style, state, context, prop)) { gtk_style_context_save (context); gtk_style_context_add_class (context, "gtkstyle-fallback"); - set_color_from_context (style, state, context, flags, prop); + set_color_from_context (style, state, context, prop); gtk_style_context_restore (context); } } @@ -715,6 +697,7 @@ gtk_style_update_from_context (GtkStyle *style) { GtkStylePrivate *priv; GtkStateType state; + GtkStateFlags flags; GtkBorder padding; gint i; @@ -722,6 +705,27 @@ gtk_style_update_from_context (GtkStyle *style) for (state = GTK_STATE_NORMAL; state <= GTK_STATE_INSENSITIVE; state++) { + switch (state) + { + case GTK_STATE_ACTIVE: + flags = GTK_STATE_FLAG_ACTIVE; + break; + case GTK_STATE_PRELIGHT: + flags = GTK_STATE_FLAG_PRELIGHT; + break; + case GTK_STATE_SELECTED: + flags = GTK_STATE_FLAG_SELECTED; + break; + case GTK_STATE_INSENSITIVE: + flags = GTK_STATE_FLAG_INSENSITIVE; + break; + default: + flags = 0; + } + + gtk_style_context_save (priv->context); + gtk_style_context_set_state (priv->context, flags); + if (gtk_style_context_has_class (priv->context, "entry")) { gtk_style_context_save (priv->context); @@ -744,15 +748,18 @@ gtk_style_update_from_context (GtkStyle *style) set_color (style, priv->context, state, GTK_RC_BG); set_color (style, priv->context, state, GTK_RC_FG); } + + gtk_style_context_restore (priv->context); } if (style->font_desc) pango_font_description_free (style->font_desc); - gtk_style_context_get (priv->context, 0, + flags = gtk_style_context_get_state (priv->context); + gtk_style_context_get (priv->context, flags, "font", &style->font_desc, NULL); - gtk_style_context_get_padding (priv->context, 0, &padding); + gtk_style_context_get_padding (priv->context, flags, &padding); style->xthickness = padding.left; style->ythickness = padding.top; diff --git a/gtk/gtkcellarea.c b/gtk/gtkcellarea.c index eb82de3efd..1ce312abf3 100644 --- a/gtk/gtkcellarea.c +++ b/gtk/gtkcellarea.c @@ -3561,7 +3561,7 @@ gtk_cell_area_inner_cell_area (GtkCellArea *area, g_return_if_fail (inner_area != NULL); context = gtk_widget_get_style_context (widget); - state = gtk_widget_get_state_flags (widget); + state = gtk_style_context_get_state (context); gtk_style_context_get_padding (context, state, &border); *inner_area = *cell_area; @@ -3611,7 +3611,7 @@ gtk_cell_area_request_renderer (GtkCellArea *area, g_return_if_fail (natural_size != NULL); context = gtk_widget_get_style_context (widget); - state = gtk_widget_get_state_flags (widget); + state = gtk_style_context_get_state (context); gtk_style_context_get_padding (context, state, &border); if (orientation == GTK_ORIENTATION_HORIZONTAL) diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c index acb90e5f08..916ef585cd 100644 --- a/gtk/gtknotebook.c +++ b/gtk/gtknotebook.c @@ -2240,15 +2240,17 @@ get_padding_and_border (GtkNotebook *notebook, GtkBorder *border) { GtkStyleContext *context; + GtkStateFlags state; context = gtk_widget_get_style_context (GTK_WIDGET (notebook)); - gtk_style_context_get_padding (context, 0, border); + state = gtk_style_context_get_state (context); + gtk_style_context_get_padding (context, state, border); if (notebook->priv->show_border || notebook->priv->show_tabs) { GtkBorder tmp; - gtk_style_context_get_border (context, 0, &tmp); + gtk_style_context_get_border (context, state, &tmp); border->top += tmp.top; border->right += tmp.right; border->bottom += tmp.bottom; @@ -6247,7 +6249,7 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, if (page != priv->cur_page) { - GtkBorder active_padding, normal_padding, padding; + GtkBorder padding = {}; /* The active tab is by definition at least the same height as the inactive one. * The padding we're building is the offset between the two tab states, @@ -6259,16 +6261,11 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, gtk_style_context_save (context); notebook_tab_prepare_style_context (notebook, page, context, TRUE); - gtk_style_context_get_padding (context, GTK_STATE_FLAG_ACTIVE, &active_padding); - gtk_style_context_get_padding (context, GTK_STATE_FLAG_NORMAL, &normal_padding); + /* gtk_style_context_get_padding (context, GTK_STATE_FLAG_ACTIVE, &active_padding); */ + /* gtk_style_context_get_padding (context, GTK_STATE_FLAG_NORMAL, &normal_padding); */ gtk_style_context_restore (context); - padding.top = MAX (0, active_padding.top - normal_padding.top); - padding.right = MAX (0, active_padding.right - normal_padding.right); - padding.bottom = MAX (0, active_padding.bottom - normal_padding.bottom); - padding.left = MAX (0, active_padding.left - normal_padding.left); - switch (tab_pos) { case GTK_POS_TOP: diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c index 37f330d2f0..5b2d8dfc03 100644 --- a/gtk/gtkstylecontext.c +++ b/gtk/gtkstylecontext.c @@ -745,6 +745,8 @@ style_values_lookup_for_state (GtkStyleContext *context, if (gtk_css_node_declaration_get_state (context->priv->info->decl) == state) return g_object_ref (style_values_lookup (context)); + g_warning ("State does not match current state"); + decl = gtk_css_node_declaration_ref (context->priv->info->decl); gtk_css_node_declaration_set_state (&decl, state); values = _gtk_css_computed_values_new (); diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index c01a47ee00..62a7caa4f6 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -6431,13 +6431,14 @@ get_shadow_width (GtkWidget *widget, else s = state | GTK_STATE_FLAG_BACKDROP; + gtk_style_context_set_state (context, s); + /* Always sum border + padding */ gtk_style_context_get_border (context, s, &border); gtk_style_context_get_padding (context, s, &d); sum_borders (&d, &border); /* Calculate the size of the drop shadows ... */ - gtk_style_context_set_state (context, s); shadows = _gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BOX_SHADOW); _gtk_css_shadows_value_get_extents (shadows, &border); |