[gtk+] switch: fetch the padding values from the slider
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] switch: fetch the padding values from the slider
- Date: Thu, 3 Mar 2011 22:49:29 +0000 (UTC)
commit 6abbd68674dc9b1ff53ce2e9d1c6ee0b3310c794
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Tue Mar 1 08:59:02 2011 -0500
switch: fetch the padding values from the slider
It's the slider which acts as a child inside the container through, so
we should fetch the slider padding when computing height/width.
gtk/gtkswitch.c | 36 ++++++++++++++++++++++++++++++++----
1 files changed, 32 insertions(+), 4 deletions(-)
---
diff --git a/gtk/gtkswitch.c b/gtk/gtkswitch.c
index 1a8e427..0ea741b 100644
--- a/gtk/gtkswitch.c
+++ b/gtk/gtkswitch.c
@@ -285,19 +285,30 @@ gtk_switch_get_preferred_width (GtkWidget *widget,
gint *minimum,
gint *natural)
{
+ GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
GtkStyleContext *context;
GtkStateFlags state;
- GtkBorder padding;
+ GtkBorder padding, border;
gint width, slider_width, focus_width, focus_pad;
PangoLayout *layout;
PangoRectangle logical_rect;
context = gtk_widget_get_style_context (widget);
state = gtk_widget_get_state_flags (widget);
+
+ if (priv->is_active)
+ state |= GTK_STATE_FLAG_ACTIVE;
+
+ gtk_style_context_save (context);
+
+ gtk_style_context_set_state (context, state);
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_SLIDER);
gtk_style_context_get_padding (context, state, &padding);
width = padding.left + padding.right;
+ gtk_style_context_restore (context);
+
gtk_widget_style_get (widget,
"slider-width", &slider_width,
"focus-line-width", &focus_width,
@@ -337,6 +348,7 @@ gtk_switch_get_preferred_height (GtkWidget *widget,
gint *minimum,
gint *natural)
{
+ GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
GtkStyleContext *context;
GtkStateFlags state;
GtkBorder padding;
@@ -347,10 +359,20 @@ gtk_switch_get_preferred_height (GtkWidget *widget,
context = gtk_widget_get_style_context (widget);
state = gtk_widget_get_state_flags (widget);
+
+ if (priv->is_active)
+ state |= GTK_STATE_FLAG_ACTIVE;
+
+ gtk_style_context_save (context);
+
+ gtk_style_context_set_state (context, state);
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_SLIDER);
gtk_style_context_get_padding (context, state, &padding);
height = padding.top + padding.bottom;
+ gtk_style_context_restore (context);
+
gtk_widget_style_get (widget,
"focus-line-width", &focus_width,
"focus-padding", &focus_pad,
@@ -520,8 +542,15 @@ gtk_switch_draw (GtkWidget *widget,
if (priv->is_active)
state |= GTK_STATE_FLAG_ACTIVE;
+ gtk_style_context_save (context);
+
+ gtk_style_context_set_state (context, state);
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_SLIDER);
+
gtk_style_context_get_padding (context, state, &padding);
+ gtk_style_context_restore (context);
+
x = 0;
y = 0;
width = gtk_widget_get_allocated_width (widget);
@@ -530,15 +559,14 @@ gtk_switch_draw (GtkWidget *widget,
if (gtk_widget_has_focus (widget))
gtk_render_focus (context, cr, x, y, width, height);
- gtk_style_context_save (context);
- gtk_style_context_set_state (context, state);
-
x += focus_width + focus_pad;
y += focus_width + focus_pad;
width -= 2 * (focus_width + focus_pad);
height -= 2 * (focus_width + focus_pad);
+ gtk_style_context_save (context);
gtk_style_context_add_class (context, GTK_STYLE_CLASS_TROUGH);
+ gtk_style_context_set_state (context, state);
gtk_render_background (context, cr, x, y, width, height);
gtk_render_frame (context, cr, x, y, width, height);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]