[gtk+] switch: hardcode a smaller font size for the switch label



commit 6c3c26d9c3194fa6392a54f6347064d8adeb744c
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]