[gtk+/gtk-3-18] switch: Unclip the slider shadow
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-18] switch: Unclip the slider shadow
- Date: Sun, 4 Oct 2015 00:43:28 +0000 (UTC)
commit e1ec1497a871dafab9897ed62453112629f2483c
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Oct 3 16:20:50 2015 -0400
switch: Unclip the slider shadow
This commit arranges things so the shadow of the slider can
extend outside the widget, even if the switch itself has no
shadow.
https://bugzilla.gnome.org/show_bug.cgi?id=755791
gtk/gtkswitch.c | 26 +++++++++++++++++++++++++-
1 files changed, 25 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkswitch.c b/gtk/gtkswitch.c
index 3a2f8e9..103382d 100644
--- a/gtk/gtkswitch.c
+++ b/gtk/gtkswitch.c
@@ -52,6 +52,8 @@
#include "a11y/gtkswitchaccessible.h"
#include "gtkactionhelper.h"
#include "gtkwidgetprivate.h"
+#include "gtkcssshadowsvalueprivate.h"
+#include "gtkstylecontextprivate.h"
#include "fallback-c89.c"
@@ -447,6 +449,9 @@ gtk_switch_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
+ GtkStyleContext *context;
+ GtkBorder extents;
+ GtkAllocation clip;
gtk_widget_set_allocation (widget, allocation);
@@ -457,7 +462,26 @@ gtk_switch_size_allocate (GtkWidget *widget,
allocation->width,
allocation->height);
- _gtk_widget_set_simple_clip (widget, NULL);
+ context = gtk_widget_get_style_context (widget);
+
+ gtk_style_context_save (context);
+
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_TROUGH);
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_SLIDER);
+
+ _gtk_css_shadows_value_get_extents (_gtk_style_context_peek_property (context,
+ GTK_CSS_PROPERTY_BOX_SHADOW),
+ &extents);
+
+ gtk_style_context_restore (context);
+
+ clip = *allocation;
+ clip.x -= extents.left;
+ clip.y -= extents.top;
+ clip.width += extents.left + extents.right;
+ clip.height += extents.top + extents.bottom;
+
+ _gtk_widget_set_simple_clip (widget, &clip);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]