[gtk+] GtkFrame: Use style classes for shadow
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] GtkFrame: Use style classes for shadow
- Date: Fri, 27 Jun 2014 02:02:56 +0000 (UTC)
commit ec7200797edd93bbb5d397f82206dbaf4126025f
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Jun 25 23:17:26 2014 -0400
GtkFrame: Use style classes for shadow
Use the FLAT style class when shadow is set to none, and
let the theme render the appropriate border.
https://bugzilla.gnome.org/show_bug.cgi?id=732256
gtk/gtkframe.c | 68 ++++++++++++++++++++++++++++----------------------------
1 files changed, 34 insertions(+), 34 deletions(-)
---
diff --git a/gtk/gtkframe.c b/gtk/gtkframe.c
index bd38263..7bb0d18 100644
--- a/gtk/gtkframe.c
+++ b/gtk/gtkframe.c
@@ -597,6 +597,7 @@ gtk_frame_set_shadow_type (GtkFrame *frame,
{
GtkFramePrivate *priv;
GtkWidget *widget;
+ GtkStyleContext *context;
g_return_if_fail (GTK_IS_FRAME (frame));
@@ -607,6 +608,12 @@ gtk_frame_set_shadow_type (GtkFrame *frame,
widget = GTK_WIDGET (frame);
priv->shadow_type = type;
+ context = gtk_widget_get_style_context (GTK_WIDGET (frame));
+ if (type == GTK_SHADOW_NONE)
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_FLAT);
+ else
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_FLAT);
+
if (gtk_widget_is_drawable (widget))
gtk_widget_queue_draw (widget);
@@ -679,46 +686,39 @@ gtk_frame_draw (GtkWidget *widget,
width = priv->child_allocation.width + padding.left + padding.right;
height = priv->child_allocation.height + padding.top + padding.bottom;
- if (priv->shadow_type != GTK_SHADOW_NONE)
+ if (priv->label_widget)
{
- if (priv->label_widget)
- {
- gfloat xalign;
- gint height_extra;
- gint x2;
-
- if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
- xalign = priv->label_xalign;
- else
- xalign = 1 - priv->label_xalign;
-
- height_extra = MAX (0, priv->label_allocation.height - padding.top)
- - priv->label_yalign * priv->label_allocation.height;
- y -= height_extra;
- height += height_extra;
-
- x2 = padding.left + (priv->child_allocation.width - priv->label_allocation.width - 2 * LABEL_PAD -
2 * LABEL_SIDE_PAD) * xalign + LABEL_SIDE_PAD;
-
- gtk_render_background (context, cr, x, y, width, height);
-
- /* If the label is completely over or under the frame we can omit the gap */
- if (priv->label_yalign == 0.0 || priv->label_yalign == 1.0)
- gtk_render_frame (context, cr, x, y, width, height);
- else
- gtk_render_frame_gap (context, cr,
- x, y, width, height,
- GTK_POS_TOP, x2,
- x2 + priv->label_allocation.width + 2 * LABEL_PAD);
- }
+ gfloat xalign;
+ gint height_extra;
+ gint x2;
+
+ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
+ xalign = priv->label_xalign;
else
- {
- gtk_render_background (context, cr, x, y, width, height);
- gtk_render_frame (context, cr, x, y, width, height);
- }
+ xalign = 1 - priv->label_xalign;
+
+ height_extra = MAX (0, priv->label_allocation.height - padding.top)
+ - priv->label_yalign * priv->label_allocation.height;
+ y -= height_extra;
+ height += height_extra;
+
+ x2 = padding.left + (priv->child_allocation.width - priv->label_allocation.width - 2 * LABEL_PAD - 2 *
LABEL_SIDE_PAD) * xalign + LABEL_SIDE_PAD;
+
+ gtk_render_background (context, cr, x, y, width, height);
+
+ /* If the label is completely over or under the frame we can omit the gap */
+ if (priv->label_yalign == 0.0 || priv->label_yalign == 1.0)
+ gtk_render_frame (context, cr, x, y, width, height);
+ else
+ gtk_render_frame_gap (context, cr,
+ x, y, width, height,
+ GTK_POS_TOP, x2,
+ x2 + priv->label_allocation.width + 2 * LABEL_PAD);
}
else
{
gtk_render_background (context, cr, x, y, width, height);
+ gtk_render_frame (context, cr, x, y, width, height);
}
GTK_WIDGET_CLASS (gtk_frame_parent_class)->draw (widget, cr);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]