theme: Fix icon scaling
When painting the titlebar, button icons that aren't available in the desired size need to be scaled. However the current code inverses the scale factor, with the result that the adjusted icons are much worse than the original icons, whoops. This went unnoticed for a long time given that most icons are availa- ble in the desired 16x16 size, and the most likely exceptions - window icons - are not shown by default. https://gitlab.gnome.org/GNOME/mutter/issues/23
This commit is contained in:
parent
15b7b40ea8
commit
67bf936ef8
@ -446,12 +446,12 @@ meta_window_class_init (MetaWindowClass *klass)
|
||||
obj_props[PROP_ICON] =
|
||||
g_param_spec_pointer ("icon",
|
||||
"Icon",
|
||||
"96 pixel sized icon",
|
||||
"Normal icon, usually 96x96 pixels",
|
||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||
obj_props[PROP_MINI_ICON] =
|
||||
g_param_spec_pointer ("mini-icon",
|
||||
"Mini Icon",
|
||||
"16 pixel sized icon",
|
||||
"Mini icon, usually 16x16 pixels",
|
||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||
obj_props[PROP_DECORATED] =
|
||||
g_param_spec_boolean ("decorated",
|
||||
|
@ -885,13 +885,13 @@ meta_frame_layout_draw_with_style (MetaFrameLayout *layout,
|
||||
|
||||
width = cairo_image_surface_get_width (surface) / scale;
|
||||
height = cairo_image_surface_get_height (surface) / scale;
|
||||
x = button_rect.x + (button_rect.width - width) / 2;
|
||||
y = button_rect.y + (button_rect.height - height) / 2;
|
||||
x = button_rect.x + (button_rect.width - layout->icon_size) / 2;
|
||||
y = button_rect.y + (button_rect.height - layout->icon_size) / 2;
|
||||
|
||||
cairo_translate (cr, x, y);
|
||||
cairo_scale (cr,
|
||||
width / layout->icon_size,
|
||||
height / layout->icon_size);
|
||||
layout->icon_size / width,
|
||||
layout->icon_size / height);
|
||||
cairo_set_source_surface (cr, surface, 0, 0);
|
||||
cairo_paint (cr);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user