summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2014-06-03 20:07:15 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2014-06-03 20:07:15 +0300
commitc9099b4a90932a22c86b960c8b4dc7cd1458defe (patch)
treeeae9c854c15358ba4f325990e7be467568cb8e37
parent238e83a98cf014c9b1082d21541e63f102d441d6 (diff)
downloadmetacity-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.c38
-rw-r--r--src/ui/theme-parser.c6
-rw-r--r--src/ui/theme-viewer.c21
-rw-r--r--src/ui/theme.c76
-rw-r--r--src/ui/theme.h51
-rw-r--r--src/ui/ui.c17
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
{