diff options
author | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2014-06-03 20:07:15 +0300 |
---|---|---|
committer | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2014-06-03 20:07:15 +0300 |
commit | c9099b4a90932a22c86b960c8b4dc7cd1458defe (patch) | |
tree | eae9c854c15358ba4f325990e7be467568cb8e37 | |
parent | 238e83a98cf014c9b1082d21541e63f102d441d6 (diff) | |
download | metacity-c9099b4a90932a22c86b960c8b4dc7cd1458defe.tar.gz |
More fixes from mutter
1) https://git.gnome.org/browse/mutter/commit/src/ui/ui.c?id=f1620abfad0caf85b5958e32736accb3fecef7f1
2) https://git.gnome.org/browse/mutter/commit/src/ui/ui.c?id=4e21d5d61010b0aa5ddc3acccd9598384c3e8f01
3) https://git.gnome.org/browse/mutter/commit/?id=28deea44d45808c846fa674d80497ee6408a3e6f
4) https://git.gnome.org/browse/mutter/commit/?id=b4344b5ab5ace489640d8477a07f71574a6dabd6
5) https://git.gnome.org/browse/mutter/commit/?id=d95da2dfbe493e0718644e53789f0f110cc48ed5
6) https://git.gnome.org/browse/mutter/commit/?id=e8209e7b221a4a108c132fa3a8ad27e9a8018a6d
7) https://git.gnome.org/browse/mutter/commit/?id=6900128b2f51e670146107c50abf3ee227123acf
8) https://git.gnome.org/browse/mutter/commit/?id=b58366d3ad380ccf391d4bc6d98e2cbd7830f449
9) https://git.gnome.org/browse/mutter/commit/?id=8b64a951c9c61b2f8b319121c6feaa6d8f3dac26
10) https://git.gnome.org/browse/mutter/commit/?id=b98e4e37addac48e09db817fda2ea0601a8bc54d
11) https://git.gnome.org/browse/mutter/commit/?id=4e21d5d61010b0aa5ddc3acccd9598384c3e8f01
12) https://git.gnome.org/browse/mutter/commit/?id=526bc34bba20b5f8d3055f2fb668a36a21357443
-rw-r--r-- | src/ui/frames.c | 38 | ||||
-rw-r--r-- | src/ui/theme-parser.c | 6 | ||||
-rw-r--r-- | src/ui/theme-viewer.c | 21 | ||||
-rw-r--r-- | src/ui/theme.c | 76 | ||||
-rw-r--r-- | src/ui/theme.h | 51 | ||||
-rw-r--r-- | src/ui/ui.c | 17 |
6 files changed, 77 insertions, 132 deletions
diff --git a/src/ui/frames.c b/src/ui/frames.c index 7ea0ff2b..af0af5cf 100644 --- a/src/ui/frames.c +++ b/src/ui/frames.c @@ -304,7 +304,7 @@ invalidate_cache (MetaFrames *frames, for (i = 0; i < 4; i++) if (pixels->piece[i].pixmap) - g_object_unref (pixels->piece[i].pixmap); + cairo_surface_destroy (pixels->piece[i].pixmap); g_free (pixels); g_hash_table_remove (frames->cache, frame); @@ -1518,7 +1518,6 @@ meta_frames_button_press_event (GtkWidget *widget, control == META_FRAME_CONTROL_RESIZE_W)) { MetaGrabOp op; - gboolean titlebar_is_onscreen; op = META_GRAB_OP_NONE; @@ -1553,28 +1552,16 @@ meta_frames_button_press_event (GtkWidget *widget, break; } - meta_core_get (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), frame->xwindow, - META_CORE_IS_TITLEBAR_ONSCREEN, &titlebar_is_onscreen, - META_CORE_GET_END); - - if (!titlebar_is_onscreen) - meta_core_show_window_menu (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), - frame->xwindow, - event->x_root, - event->y_root, - event->button, - event->time); - else - meta_core_begin_grab_op (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), - frame->xwindow, - op, - TRUE, - TRUE, - event->button, - 0, - event->time, - event->x_root, - event->y_root); + meta_core_begin_grab_op (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), + frame->xwindow, + op, + TRUE, + TRUE, + event->button, + 0, + event->time, + event->x_root, + event->y_root); } else if (control == META_FRAME_CONTROL_TITLE && event->button == 1) @@ -2281,7 +2268,6 @@ meta_frames_paint (MetaFrames *frames, MetaUIFrame *frame, cairo_t *cr) { - GtkWidget *widget; MetaFrameFlags flags; MetaFrameType type; GdkPixbuf *mini_icon; @@ -2294,7 +2280,6 @@ meta_frames_paint (MetaFrames *frames, MetaGrabOp grab_op; Display *display; - widget = GTK_WIDGET (frames); display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()); for (i = 0; i < META_BUTTON_TYPE_LAST; i++) @@ -2393,7 +2378,6 @@ meta_frames_paint (MetaFrames *frames, meta_theme_draw_frame_with_style (meta_theme_get_current (), frame->style, - widget, cr, type, flags, diff --git a/src/ui/theme-parser.c b/src/ui/theme-parser.c index 7e247649..3db225fb 100644 --- a/src/ui/theme-parser.c +++ b/src/ui/theme-parser.c @@ -2245,7 +2245,7 @@ parse_draw_op_element (GMarkupParseContext *context, const char *height; const char *filled; gboolean filled_val; - GtkStateType state_val; + GtkStateFlags state_val; GtkShadowType shadow_val; GtkArrowType arrow_val; @@ -2335,7 +2335,7 @@ parse_draw_op_element (GMarkupParseContext *context, const char *y; const char *width; const char *height; - GtkStateType state_val; + GtkStateFlags state_val; GtkShadowType shadow_val; if (!locate_attributes (context, element_name, attribute_names, attribute_values, @@ -2403,7 +2403,7 @@ parse_draw_op_element (GMarkupParseContext *context, const char *x; const char *y1; const char *y2; - GtkStateType state_val; + GtkStateFlags state_val; if (!locate_attributes (context, element_name, attribute_names, attribute_values, error, diff --git a/src/ui/theme-viewer.c b/src/ui/theme-viewer.c index 47417b2d..1de96a8e 100644 --- a/src/ui/theme-viewer.c +++ b/src/ui/theme-viewer.c @@ -760,7 +760,7 @@ main (int argc, char **argv) GtkWidget *window; GtkWidget *collection; GtkStyleContext *style; - const PangoFontDescription *font_desc; + PangoFontDescription *font_desc; GError *err; clock_t start, end; GtkWidget *notebook; @@ -836,7 +836,7 @@ main (int argc, char **argv) gtk_widget_realize (window); style = gtk_widget_get_style_context (window); - font_desc = gtk_style_context_get_font (style, 0); + gtk_style_context_get (style, GTK_STATE_FLAG_NORMAL, "font", &font_desc, NULL); g_assert (style); g_assert (font_desc); @@ -871,7 +871,9 @@ main (int argc, char **argv) gtk_notebook_append_page (GTK_NOTEBOOK (notebook), collection, gtk_label_new (_("Benchmark"))); - + + pango_font_description_free (font_desc); + i = 0; while (i < (int) G_N_ELEMENTS (previews)) { @@ -908,9 +910,16 @@ get_flags (GtkWidget *widget) static int get_text_height (GtkWidget *widget) { - GtkStyleContext *style = gtk_widget_get_style_context (widget); - return meta_pango_font_desc_get_text_height (gtk_style_context_get_font (style, 0), - gtk_widget_get_pango_context (widget)); + GtkStyleContext *style; + PangoFontDescription *font_desc; + int text_height; + + style = gtk_widget_get_style_context (widget); + gtk_style_context_get (style, GTK_STATE_FLAG_NORMAL, "font", &font_desc, NULL); + text_height = meta_pango_font_desc_get_text_height (font_desc, gtk_widget_get_pango_context (widget)); + pango_font_description_free (font_desc); + + return text_height; } static PangoLayout* diff --git a/src/ui/theme.c b/src/ui/theme.c index 515c049f..eab6c17a 100644 --- a/src/ui/theme.c +++ b/src/ui/theme.c @@ -405,10 +405,7 @@ meta_frame_layout_get_borders (const MetaFrameLayout *layout, { int buttons_height, title_height; - g_return_if_fail (top_height != NULL); - g_return_if_fail (bottom_height != NULL); - g_return_if_fail (left_width != NULL); - g_return_if_fail (right_width != NULL); + g_return_if_fail (layout != NULL); if (!layout->has_title) text_height = 0; @@ -608,7 +605,7 @@ strip_button (MetaButtonSpace *func_rects[MAX_BUTTONS_PER_CORNER], return FALSE; /* did not strip anything */ } -void +static void meta_frame_layout_calc_geometry (const MetaFrameLayout *layout, int text_height, MetaFrameFlags flags, @@ -1165,7 +1162,7 @@ meta_color_spec_new_from_string (const char *str, const char *bracket; const char *end_bracket; char *tmp; - GtkStateType state; + GtkStateFlags state; MetaGtkColorComponent component; bracket = str; @@ -1224,7 +1221,6 @@ meta_color_spec_new_from_string (const char *str, spec = meta_color_spec_new (META_COLOR_SPEC_GTK); spec->data.gtk.state = state; spec->data.gtk.component = component; - g_assert (spec->data.gtk.state < N_GTK_STATES); g_assert (spec->data.gtk.component < META_GTK_COLOR_LAST); } else if (str[0] == 'b' && str[1] == 'l' && str[2] == 'e' && str[3] == 'n' && @@ -1376,7 +1372,7 @@ meta_color_spec_new_from_string (const char *str, MetaColorSpec* meta_color_spec_new_gtk (MetaGtkColorComponent component, - GtkStateType state) + GtkStateFlags state) { MetaColorSpec *spec; @@ -3467,7 +3463,6 @@ fill_env (MetaPositionExprEnv *env, static void meta_draw_op_draw_with_env (const MetaDrawOp *op, GtkStyleContext *style_gtk, - GtkWidget *widget, cairo_t *cr, const MetaDrawInfo *info, MetaRectangle rect, @@ -3849,7 +3844,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, d_rect.height = parse_size_unchecked (op->data.op_list.height, env); meta_draw_op_list_draw_with_style (op->data.op_list.op_list, - style_gtk, widget, cr, info, + style_gtk, cr, info, d_rect); } break; @@ -3887,7 +3882,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, while (tile.y < (ry + rheight)) { meta_draw_op_list_draw_with_style (op->data.tile.op_list, - style_gtk, widget, cr, info, + style_gtk, cr, info, tile); tile.y += tile.height; @@ -3954,7 +3949,6 @@ meta_draw_op_list_unref (MetaDrawOpList *op_list) void meta_draw_op_list_draw_with_style (const MetaDrawOpList *op_list, GtkStyleContext *style_gtk, - GtkWidget *widget, cairo_t *cr, const MetaDrawInfo *info, MetaRectangle rect) @@ -3996,7 +3990,7 @@ meta_draw_op_list_draw_with_style (const MetaDrawOpList *op_list, } else if (gdk_cairo_get_clip_rectangle (cr, NULL)) { - meta_draw_op_draw_with_env (op, style_gtk, widget, cr, info, rect, &env); + meta_draw_op_draw_with_env (op, style_gtk, cr, info, rect, &env); } } @@ -4362,10 +4356,9 @@ button_rect (MetaButtonType type, } } -void +static void meta_frame_style_draw_with_style (MetaFrameStyle *style, GtkStyleContext *style_gtk, - GtkWidget *widget, cairo_t *cr, const MetaFrameGeometry *fgeom, int client_width, @@ -4532,7 +4525,6 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style, m_rect = meta_rect (rect.x, rect.y, rect.width, rect.height); meta_draw_op_list_draw_with_style (op_list, style_gtk, - widget, cr, &draw_info, m_rect); @@ -4571,7 +4563,6 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style, rect.width, rect.height); meta_draw_op_list_draw_with_style (op_list, style_gtk, - widget, cr, &draw_info, m_rect); @@ -4598,25 +4589,6 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style, } } -void -meta_frame_style_draw (MetaFrameStyle *style, - GtkWidget *widget, - cairo_t *cr, - const MetaFrameGeometry *fgeom, - int client_width, - int client_height, - PangoLayout *title_layout, - int text_height, - MetaButtonState button_states[META_BUTTON_TYPE_LAST], - GdkPixbuf *mini_icon, - GdkPixbuf *icon) -{ - meta_frame_style_draw_with_style (style, gtk_widget_get_style_context (widget), widget, - cr, fgeom, client_width, client_height, - title_layout, text_height, - button_states, mini_icon, icon); -} - MetaFrameStyleSet* meta_frame_style_set_new (MetaFrameStyleSet *parent) { @@ -5166,7 +5138,6 @@ meta_theme_get_title_scale (MetaTheme *theme, void meta_theme_draw_frame_with_style (MetaTheme *theme, GtkStyleContext *style_gtk, - GtkWidget *widget, cairo_t *cr, MetaFrameType type, MetaFrameFlags flags, @@ -5200,7 +5171,6 @@ meta_theme_draw_frame_with_style (MetaTheme *theme, meta_frame_style_draw_with_style (style, style_gtk, - widget, cr, &fgeom, client_width, client_height, @@ -5225,7 +5195,7 @@ meta_theme_draw_frame (MetaTheme *theme, GdkPixbuf *mini_icon, GdkPixbuf *icon) { - meta_theme_draw_frame_with_style (theme, gtk_widget_get_style_context (widget), widget, + meta_theme_draw_frame_with_style (theme, gtk_widget_get_style_context (widget), cr, type, flags, client_width, client_height, title_layout, text_height, @@ -5945,19 +5915,25 @@ meta_gradient_type_from_string (const char *str) return META_GRADIENT_LAST; } -GtkStateType +GtkStateFlags meta_gtk_state_from_string (const char *str) { - if (strcmp ("normal", str) == 0 || strcmp ("NORMAL", str) == 0) - return GTK_STATE_NORMAL; - else if (strcmp ("prelight", str) == 0 || strcmp ("PRELIGHT", str) == 0) - return GTK_STATE_PRELIGHT; - else if (strcmp ("active", str) == 0 || strcmp ("ACTIVE", str) == 0) - return GTK_STATE_ACTIVE; - else if (strcmp ("selected", str) == 0 || strcmp ("SELECTED", str) == 0) - return GTK_STATE_SELECTED; - else if (strcmp ("insensitive", str) == 0 || strcmp ("INSENSITIVE", str) == 0) - return GTK_STATE_INSENSITIVE; + if (g_ascii_strcasecmp ("normal", str) == 0) + return GTK_STATE_FLAG_NORMAL; + else if (g_ascii_strcasecmp ("prelight", str) == 0) + return GTK_STATE_FLAG_PRELIGHT; + else if (g_ascii_strcasecmp ("active", str) == 0) + return GTK_STATE_FLAG_ACTIVE; + else if (g_ascii_strcasecmp ("selected", str) == 0) + return GTK_STATE_FLAG_SELECTED; + else if (g_ascii_strcasecmp ("insensitive", str) == 0) + return GTK_STATE_FLAG_INSENSITIVE; + else if (g_ascii_strcasecmp ("inconsistent", str) == 0) + return GTK_STATE_FLAG_INCONSISTENT; + else if (g_ascii_strcasecmp ("focused", str) == 0) + return GTK_STATE_FLAG_FOCUSED; + else if (g_ascii_strcasecmp ("backdrop", str) == 0) + return GTK_STATE_FLAG_BACKDROP; else return -1; /* hack */ } diff --git a/src/ui/theme.h b/src/ui/theme.h index ca8d808f..af50e812 100644 --- a/src/ui/theme.h +++ b/src/ui/theme.h @@ -255,7 +255,7 @@ struct _MetaColorSpec } basic; struct { MetaGtkColorComponent component; - GtkStateType state; + GtkStateFlags state; } gtk; struct { MetaColorSpec *foreground; @@ -497,7 +497,7 @@ struct _MetaDrawOp } image; struct { - GtkStateType state; + GtkStateFlags state; GtkShadowType shadow; GtkArrowType arrow; gboolean filled; @@ -509,7 +509,7 @@ struct _MetaDrawOp } gtk_arrow; struct { - GtkStateType state; + GtkStateFlags state; GtkShadowType shadow; MetaDrawSpec *x; MetaDrawSpec *y; @@ -518,7 +518,7 @@ struct _MetaDrawOp } gtk_box; struct { - GtkStateType state; + GtkStateFlags state; MetaDrawSpec *x; MetaDrawSpec *y1; MetaDrawSpec *y2; @@ -662,8 +662,6 @@ typedef enum META_FRAME_PIECE_LAST } MetaFramePiece; -#define N_GTK_STATES 5 - /** * How to draw a frame in a particular state (say, a focussed, non-maximised, * resizable frame). This corresponds closely to the <frame_style> tag @@ -856,14 +854,6 @@ void meta_frame_layout_get_borders (const MetaFrameLayout *layout, int *bottom_height, int *left_width, int *right_width); -void meta_frame_layout_calc_geometry (const MetaFrameLayout *layout, - int text_height, - MetaFrameFlags flags, - int client_width, - int client_height, - const MetaButtonLayout *button_layout, - MetaFrameGeometry *fgeom, - MetaTheme *theme); gboolean meta_frame_layout_validate (const MetaFrameLayout *layout, GError **error); @@ -887,7 +877,7 @@ MetaColorSpec* meta_color_spec_new (MetaColorSpecType type); MetaColorSpec* meta_color_spec_new_from_string (const char *str, GError **err); MetaColorSpec* meta_color_spec_new_gtk (MetaGtkColorComponent component, - GtkStateType state); + GtkStateFlags state); void meta_color_spec_free (MetaColorSpec *spec); void meta_color_spec_render (MetaColorSpec *spec, GtkStyleContext *style_gtk, @@ -902,7 +892,6 @@ void meta_draw_op_list_ref (MetaDrawOpList *op_list); void meta_draw_op_list_unref (MetaDrawOpList *op_list); void meta_draw_op_list_draw_with_style (const MetaDrawOpList *op_list, GtkStyleContext *style_gtk, - GtkWidget *widget, cairo_t *cr, const MetaDrawInfo *info, MetaRectangle rect); @@ -931,33 +920,6 @@ MetaFrameStyle* meta_frame_style_new (MetaFrameStyle *parent); void meta_frame_style_ref (MetaFrameStyle *style); void meta_frame_style_unref (MetaFrameStyle *style); -void meta_frame_style_draw (MetaFrameStyle *style, - GtkWidget *widget, - cairo_t *cr, - const MetaFrameGeometry *fgeom, - int client_width, - int client_height, - PangoLayout *title_layout, - int text_height, - MetaButtonState button_states[META_BUTTON_TYPE_LAST], - GdkPixbuf *mini_icon, - GdkPixbuf *icon); - - -void meta_frame_style_draw_with_style (MetaFrameStyle *style, - GtkStyleContext *style_gtk, - GtkWidget *widget, - cairo_t *cr, - const MetaFrameGeometry *fgeom, - int client_width, - int client_height, - PangoLayout *title_layout, - int text_height, - MetaButtonState button_states[META_BUTTON_TYPE_LAST], - GdkPixbuf *mini_icon, - GdkPixbuf *icon); - - gboolean meta_frame_style_validate (MetaFrameStyle *style, guint current_theme_version, GError **error); @@ -1006,7 +968,6 @@ void meta_theme_draw_frame (MetaTheme *theme, void meta_theme_draw_frame_with_style (MetaTheme *theme, GtkStyleContext *style_gtk, - GtkWidget *widget, cairo_t *cr, MetaFrameType type, MetaFrameFlags flags, @@ -1110,7 +1071,7 @@ const char* meta_frame_focus_to_string (MetaFrameFocus f MetaFrameType meta_frame_type_from_string (const char *str); const char* meta_frame_type_to_string (MetaFrameType type); MetaGradientType meta_gradient_type_from_string (const char *str); -GtkStateType meta_gtk_state_from_string (const char *str); +GtkStateFlags meta_gtk_state_from_string (const char *str); GtkShadowType meta_gtk_shadow_from_string (const char *str); GtkArrowType meta_gtk_arrow_from_string (const char *str); MetaImageFillType meta_image_fill_type_from_string (const char *str); diff --git a/src/ui/ui.c b/src/ui/ui.c index 29607c16..45d05756 100644 --- a/src/ui/ui.c +++ b/src/ui/ui.c @@ -706,6 +706,7 @@ meta_ui_theme_get_frame_borders (MetaUI *ui, PangoContext *context; const PangoFontDescription *font_desc; GtkStyleContext *style = NULL; + PangoFontDescription *free_font_desc = NULL; if (meta_ui_have_a_theme ()) { @@ -714,8 +715,19 @@ meta_ui_theme_get_frame_borders (MetaUI *ui, if (!font_desc) { + GdkDisplay *display = gdk_x11_lookup_xdisplay (ui->xdisplay); + GdkScreen *screen = gdk_display_get_screen (display, XScreenNumberOfScreen (ui->xscreen)); + GtkWidgetPath *widget_path; + style = gtk_style_context_new (); - gtk_style_context_get (style, GTK_STATE_FLAG_NORMAL, "font", &font_desc, NULL); + gtk_style_context_set_screen (style, screen); + widget_path = gtk_widget_path_new (); + gtk_widget_path_append_type (widget_path, GTK_TYPE_WINDOW); + gtk_style_context_set_path (style, widget_path); + gtk_widget_path_free (widget_path); + + gtk_style_context_get (style, GTK_STATE_FLAG_NORMAL, "font", &free_font_desc, NULL); + font_desc = (const PangoFontDescription *) free_font_desc; } text_height = meta_pango_font_desc_get_text_height (font_desc, context); @@ -724,6 +736,9 @@ meta_ui_theme_get_frame_borders (MetaUI *ui, type, text_height, flags, top_height, bottom_height, left_width, right_width); + + if (free_font_desc) + pango_font_description_free (free_font_desc); } else { |