#include "gtkwidget.h"
#include "gtkmarshalers.h"
+#include <math.h>
#define DEFAULT_SLIDER_WIDTH (36)
#define DEFAULT_SLIDER_HEIGHT (22)
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,
* 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);
* 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);
gtk_switch_paint_handle (widget, cr, &handle);
+ pango_font_description_free (desc);
+
return FALSE;
}