[gtk+/gtk-3-0] switch: hardcode a smaller font size for the switch label
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-0] switch: hardcode a smaller font size for the switch label
- Date: Wed, 23 Mar 2011 13:58:52 +0000 (UTC)
commit e30a32cd1c41f85a19e921d37576e4a902df0639
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Tue Mar 22 14:53:21 2011 -0400
switch: hardcode a smaller font size for the switch label
This should not really be done here, but we can't override font size
from the theme just yet.
https://bugzilla.gnome.org/show_bug.cgi?id=645458
gtk/gtkswitch.c | 23 +++++++++++++++++++++++
1 files changed, 23 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkswitch.c b/gtk/gtkswitch.c
index b33a168..9b831c7 100644
--- a/gtk/gtkswitch.c
+++ b/gtk/gtkswitch.c
@@ -49,6 +49,7 @@
#include "gtkwidget.h"
#include "gtkmarshalers.h"
+#include <math.h>
#define DEFAULT_SLIDER_WIDTH (36)
#define DEFAULT_SLIDER_HEIGHT (22)
@@ -537,12 +538,15 @@ gtk_switch_draw (GtkWidget *widget,
GtkStyleContext *context;
GdkRectangle handle;
PangoLayout *layout;
+ PangoFontDescription *desc;
+ const PangoFontDescription *style_desc;
PangoRectangle rect;
gint label_x, label_y;
GtkStateFlags state;
GtkBorder padding;
gint focus_width, focus_pad;
gint x, y, width, height;
+ gint font_size, style_font_size;
gtk_widget_style_get (widget,
"focus-line-width", &focus_width,
@@ -599,6 +603,21 @@ gtk_switch_draw (GtkWidget *widget,
* the state
*/
layout = gtk_widget_create_pango_layout (widget, C_("switch", "ON"));
+
+ /* FIXME: this should be really done in the theme, but overriding font size
+ * from it doesn't currently work. So we have to hardcode this here and
+ * below for the "OFF" label.
+ */
+ desc = pango_font_description_new ();
+
+ style_desc = gtk_style_context_get_font (context, state);
+ style_font_size = pango_font_description_get_size (style_desc);
+ font_size = MAX (style_font_size - 1 * PANGO_SCALE, ceil (style_font_size * PANGO_SCALE_SMALL));
+
+ pango_font_description_set_size (desc, font_size);
+
+ pango_layout_set_font_description (layout, desc);
+
pango_layout_get_extents (layout, NULL, &rect);
pango_extents_to_pixels (&rect, NULL);
@@ -613,6 +632,8 @@ gtk_switch_draw (GtkWidget *widget,
* glyphs then use WHITE CIRCLE (U+25CB) as the text for the state
*/
layout = gtk_widget_create_pango_layout (widget, C_("switch", "OFF"));
+ pango_layout_set_font_description (layout, desc);
+
pango_layout_get_extents (layout, NULL, &rect);
pango_extents_to_pixels (&rect, NULL);
@@ -634,6 +655,8 @@ gtk_switch_draw (GtkWidget *widget,
gtk_switch_paint_handle (widget, cr, &handle);
+ pango_font_description_free (desc);
+
return FALSE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]