forked from AuroraMiddleware/gtk
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
This commit is contained in:
parent
24bba4cc56
commit
6c3c26d9c3
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user