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:
		| @ -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; | ||||
| } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Cosimo Cecchi
					Cosimo Cecchi