Merge lp:~muktupavels/compiz/require-libmetacity-3-22 into lp:compiz

Proposed by Alberts Muktupāvels on 2017-04-11
Status: Merged
Approved by: Marco Trevisan (Treviño) on 2017-04-20
Approved revision: 4107
Merged at revision: 4110
Proposed branch: lp:~muktupavels/compiz/require-libmetacity-3-22
Merge into: lp:compiz
Prerequisite: lp:~muktupavels/compiz/lp1530277
Diff against target: 373 lines (+7/-238)
4 files modified
debian/control (+1/-1)
gtk/CMakeLists.txt (+1/-3)
gtk/config.h.gtk.in (+0/-3)
gtk/window-decorator/gwd-theme-metacity.c (+5/-231)
To merge this branch: bzr merge lp:~muktupavels/compiz/require-libmetacity-3-22
Reviewer Review Type Date Requested Status
Marco Trevisan (Treviño) 2017-04-11 Approve on 2017-04-20
Review via email: mp+322370@code.launchpad.net

Commit Message

gtk-window-decorator: require libmetacity 3.22.0 or newer.

Description of the Change

Require libmetacity 3.22.0 or newer.

To post a comment you must log in.
Marco Trevisan (Treviño) (3v1n0) wrote :

OK

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/control'
2--- debian/control 2016-11-03 18:29:41 +0000
3+++ debian/control 2017-04-11 14:06:32 +0000
4@@ -22,7 +22,7 @@
5 libglibmm-2.4-dev,
6 libgtk-3-dev,
7 libice-dev (>= 1:1.0.1),
8- libmetacity-dev (>= 1:3.20.0),
9+ libmetacity-dev (>= 1:3.22.0),
10 libpango1.0-dev,
11 libpng-dev,
12 librsvg2-dev,
13
14=== modified file 'gtk/CMakeLists.txt'
15--- gtk/CMakeLists.txt 2016-09-21 17:04:00 +0000
16+++ gtk/CMakeLists.txt 2017-04-11 14:06:32 +0000
17@@ -25,11 +25,9 @@
18 set (CMAKE_REQUIRED_LIBRARIES "")
19
20 if (USE_METACITY)
21- pkg_check_modules (LIBMETACITY libmetacity>=3.20.0)
22+ pkg_check_modules (LIBMETACITY libmetacity>=3.22.0)
23
24 if (LIBMETACITY_FOUND)
25- compiz_pkg_check_modules (HAVE_METACITY_3_22_0 libmetacity>=3.22.0)
26-
27 set (METACITY_INCLUDE_DIRS ${LIBMETACITY_INCLUDE_DIRS})
28 set (METACITY_LIBRARIES ${LIBMETACITY_LIBRARIES})
29 else (LIBMETACITY_FOUND)
30
31=== modified file 'gtk/config.h.gtk.in'
32--- gtk/config.h.gtk.in 2016-08-31 18:16:35 +0000
33+++ gtk/config.h.gtk.in 2017-04-11 14:06:32 +0000
34@@ -1,7 +1,4 @@
35 /* Define to 1 if Metacity support is enabled */
36 #cmakedefine USE_METACITY 1
37
38-/* Define to 1 if Metacity version >= 3.22.0 */
39-#cmakedefine HAVE_METACITY_3_22_0 1
40-
41 #define GETTEXT_PACKAGE "${GETTEXT_PACKAGE}"
42
43=== modified file 'gtk/window-decorator/gwd-theme-metacity.c'
44--- gtk/window-decorator/gwd-theme-metacity.c 2017-04-11 14:06:32 +0000
45+++ gtk/window-decorator/gwd-theme-metacity.c 2017-04-11 14:06:32 +0000
46@@ -35,15 +35,11 @@
47
48 struct _GWDThemeMetacity
49 {
50- GObject parent;
51-
52- MetaTheme *theme;
53-
54- gulong button_layout_id;
55-
56-#ifndef HAVE_METACITY_3_22_0
57- MetaButtonLayout button_layout;
58-#endif
59+ GObject parent;
60+
61+ MetaTheme *theme;
62+
63+ gulong button_layout_id;
64 };
65
66 G_DEFINE_TYPE (GWDThemeMetacity, gwd_theme_metacity, GWD_TYPE_THEME)
67@@ -70,11 +66,7 @@
68 {
69 gboolean invert = gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL;
70
71-#ifdef HAVE_METACITY_3_22_0
72 meta_theme_set_button_layout (metacity->theme, button_layout, invert);
73-#else
74- metacity->button_layout = meta_button_layout_new (button_layout, invert);
75-#endif
76 }
77
78 static MetaButtonState
79@@ -90,7 +82,6 @@
80 return META_BUTTON_STATE_NORMAL;
81 }
82
83-#ifdef HAVE_METACITY_3_22_0
84 static MetaButtonState
85 meta_button_state_for_button_type (decor_t *decor,
86 MetaButtonType type)
87@@ -133,94 +124,6 @@
88 return meta_button_state_for_button_type (decor, type);
89 }
90
91-#else
92-static MetaButtonType
93-meta_function_to_type (MetaButtonFunction function)
94-{
95- switch (function) {
96- case META_BUTTON_FUNCTION_MENU:
97- return META_BUTTON_TYPE_MENU;
98- case META_BUTTON_FUNCTION_MINIMIZE:
99- return META_BUTTON_TYPE_MINIMIZE;
100- case META_BUTTON_FUNCTION_MAXIMIZE:
101- return META_BUTTON_TYPE_MAXIMIZE;
102- case META_BUTTON_FUNCTION_CLOSE:
103- return META_BUTTON_TYPE_CLOSE;
104- case META_BUTTON_FUNCTION_SHADE:
105- return META_BUTTON_TYPE_SHADE;
106- case META_BUTTON_FUNCTION_ABOVE:
107- return META_BUTTON_TYPE_ABOVE;
108- case META_BUTTON_FUNCTION_STICK:
109- return META_BUTTON_TYPE_STICK;
110- case META_BUTTON_FUNCTION_UNSHADE:
111- return META_BUTTON_TYPE_UNSHADE;
112- case META_BUTTON_FUNCTION_UNABOVE:
113- return META_BUTTON_TYPE_UNABOVE;
114- case META_BUTTON_FUNCTION_UNSTICK:
115- return META_BUTTON_TYPE_UNSTICK;
116- default:
117- break;
118- }
119-
120- return META_BUTTON_TYPE_LAST;
121-}
122-
123-static MetaButtonState
124-meta_button_state_for_button_type (GWDThemeMetacity *metacity,
125- decor_t *decor,
126- MetaButtonType type)
127-{
128- switch (type) {
129- case META_BUTTON_TYPE_LEFT_LEFT_BACKGROUND:
130- type = meta_function_to_type (metacity->button_layout.left_buttons[0]);
131- break;
132- case META_BUTTON_TYPE_LEFT_MIDDLE_BACKGROUND:
133- type = meta_function_to_type (metacity->button_layout.left_buttons[1]);
134- break;
135- case META_BUTTON_TYPE_LEFT_RIGHT_BACKGROUND:
136- type = meta_function_to_type (metacity->button_layout.left_buttons[2]);
137- break;
138- case META_BUTTON_TYPE_RIGHT_LEFT_BACKGROUND:
139- type = meta_function_to_type (metacity->button_layout.right_buttons[0]);
140- break;
141- case META_BUTTON_TYPE_RIGHT_MIDDLE_BACKGROUND:
142- type = meta_function_to_type (metacity->button_layout.right_buttons[1]);
143- break;
144- case META_BUTTON_TYPE_RIGHT_RIGHT_BACKGROUND:
145- type = meta_function_to_type (metacity->button_layout.right_buttons[2]);
146- default:
147- break;
148- }
149-
150- switch (type) {
151- case META_BUTTON_TYPE_CLOSE:
152- return meta_button_state (decor->button_states[BUTTON_CLOSE]);
153- case META_BUTTON_TYPE_MAXIMIZE:
154- return meta_button_state (decor->button_states[BUTTON_MAX]);
155- case META_BUTTON_TYPE_MINIMIZE:
156- return meta_button_state (decor->button_states[BUTTON_MIN]);
157- case META_BUTTON_TYPE_MENU:
158- return meta_button_state (decor->button_states[BUTTON_MENU]);
159- case META_BUTTON_TYPE_SHADE:
160- return meta_button_state (decor->button_states[BUTTON_SHADE]);
161- case META_BUTTON_TYPE_ABOVE:
162- return meta_button_state (decor->button_states[BUTTON_ABOVE]);
163- case META_BUTTON_TYPE_STICK:
164- return meta_button_state (decor->button_states[BUTTON_STICK]);
165- case META_BUTTON_TYPE_UNSHADE:
166- return meta_button_state (decor->button_states[BUTTON_UNSHADE]);
167- case META_BUTTON_TYPE_UNABOVE:
168- return meta_button_state (decor->button_states[BUTTON_UNABOVE]);
169- case META_BUTTON_TYPE_UNSTICK:
170- return meta_button_state (decor->button_states[BUTTON_UNSTICK]);
171- default:
172- break;
173- }
174-
175- return META_BUTTON_STATE_NORMAL;
176-}
177-#endif
178-
179 static gint
180 radius_to_width (gint radius,
181 gint i)
182@@ -589,15 +492,9 @@
183 else
184 client_height = decor->border_layout.left.y2 - decor->border_layout.left.y1;
185
186-#ifdef HAVE_METACITY_3_22_0
187 meta_theme_calc_geometry (metacity->theme, decor->gtk_theme_variant,
188 frame_type, *flags, client_width, client_height,
189 fgeom);
190-#else
191- meta_theme_calc_geometry (metacity->theme, decor->gtk_theme_variant,
192- frame_type, *flags, client_width, client_height,
193- &metacity->button_layout, fgeom);
194-#endif
195 }
196
197 static void
198@@ -644,7 +541,6 @@
199 decor->button_width = width - min_x;
200 }
201
202-#ifdef HAVE_METACITY_3_22_0
203 static MetaButtonType
204 button_type_to_meta_button_type (gint button_type)
205 {
206@@ -675,55 +571,6 @@
207
208 return META_BUTTON_TYPE_LAST;
209 }
210-#else
211-static gboolean
212-button_present (GWDThemeMetacity *metacity,
213- MetaButtonFunction function)
214-{
215- int i;
216-
217- for (i = 0; i < META_BUTTON_FUNCTION_LAST; ++i)
218- if (metacity->button_layout.left_buttons[i] == function)
219- return TRUE;
220-
221- for (i = 0; i < META_BUTTON_FUNCTION_LAST; ++i)
222- if (metacity->button_layout.right_buttons[i] == function)
223- return TRUE;
224-
225- return FALSE;
226-}
227-
228-static MetaButtonFunction
229-button_to_meta_button_function (gint i)
230-{
231- switch (i) {
232- case BUTTON_MENU:
233- return META_BUTTON_FUNCTION_MENU;
234- case BUTTON_MIN:
235- return META_BUTTON_FUNCTION_MINIMIZE;
236- case BUTTON_MAX:
237- return META_BUTTON_FUNCTION_MAXIMIZE;
238- case BUTTON_CLOSE:
239- return META_BUTTON_FUNCTION_CLOSE;
240- case BUTTON_SHADE:
241- return META_BUTTON_FUNCTION_SHADE;
242- case BUTTON_ABOVE:
243- return META_BUTTON_FUNCTION_ABOVE;
244- case BUTTON_STICK:
245- return META_BUTTON_FUNCTION_STICK;
246- case BUTTON_UNSHADE:
247- return META_BUTTON_FUNCTION_UNSHADE;
248- case BUTTON_UNABOVE:
249- return META_BUTTON_FUNCTION_UNABOVE;
250- case BUTTON_UNSTICK:
251- return META_BUTTON_FUNCTION_UNSTICK;
252- default:
253- break;
254- }
255-
256- return META_BUTTON_FUNCTION_LAST;
257-}
258-#endif
259
260 static gboolean
261 setup_theme (GWDThemeMetacity *metacity)
262@@ -862,13 +709,6 @@
263 draw_shadow_background (decor, cr, decor->shadow, decor->context);
264 }
265
266-#ifndef HAVE_METACITY_3_22_0
267- MetaButtonState button_states [META_BUTTON_TYPE_LAST];
268-
269- for (gint i = 0; i < META_BUTTON_TYPE_LAST; ++i)
270- button_states[i] = meta_button_state_for_button_type (metacity, decor, i);
271-#endif
272-
273 /* Draw something that will be almost invisible to user. This is hacky way
274 * to fix invisible decorations. */
275 cairo_set_source_rgba (cr, 0, 0, 0, 0.01);
276@@ -885,18 +725,10 @@
277 src = XRenderCreatePicture (xdisplay, cairo_xlib_surface_get_drawable (surface),
278 xformat_rgba, 0, NULL);
279
280-#ifdef HAVE_METACITY_3_22_0
281 meta_theme_draw_frame (metacity->theme, decor->gtk_theme_variant, cr, frame_type, flags,
282 fgeom.width - fgeom.borders.total.left - fgeom.borders.total.right,
283 fgeom.height - fgeom.borders.total.top - fgeom.borders.total.bottom,
284 decor->name, update_button_state, decor, decor->icon_pixbuf, NULL);
285-#else
286- meta_theme_draw_frame (metacity->theme, decor->gtk_theme_variant, cr, frame_type, flags,
287- fgeom.width - fgeom.borders.total.left - fgeom.borders.total.right,
288- fgeom.height - fgeom.borders.total.top - fgeom.borders.total.bottom,
289- decor->name, &metacity->button_layout,
290- button_states, decor->icon_pixbuf, NULL);
291-#endif
292
293 if (fgeom.borders.visible.top + fgeom.borders.shadow.top) {
294 top_region = get_top_border_region (&fgeom, !decor->frame->has_shadow_extents);
295@@ -1224,10 +1056,6 @@
296 MetaFrameGeometry fgeom;
297 MetaFrameType frame_type;
298 MetaFrameFlags flags;
299-#ifndef HAVE_METACITY_3_22_0
300- MetaButtonFunction button_function;
301- MetaButtonSpace *space;
302-#endif
303
304 if (!decor->context) {
305 /* undecorated windows implicitly have no buttons */
306@@ -1238,7 +1066,6 @@
307
308 get_decoration_geometry (metacity, decor, &flags, &fgeom, frame_type);
309
310-#ifdef HAVE_METACITY_3_22_0
311 MetaButtonType button_type = button_type_to_meta_button_type (i);
312 MetaButton **buttons = meta_theme_get_buttons (metacity->theme);
313
314@@ -1265,59 +1092,6 @@
315
316 g_free (buttons);
317 return FALSE;
318-#else
319- button_function = button_to_meta_button_function (i);
320- if (!button_present (metacity, button_function))
321- return FALSE;
322-
323- switch (i) {
324- case BUTTON_MENU:
325- space = &fgeom.menu_rect;
326- break;
327- case BUTTON_MIN:
328- space = &fgeom.min_rect;
329- break;
330- case BUTTON_MAX:
331- space = &fgeom.max_rect;
332- break;
333- case BUTTON_CLOSE:
334- space = &fgeom.close_rect;
335- break;
336- case BUTTON_SHADE:
337- space = &fgeom.shade_rect;
338- break;
339- case BUTTON_ABOVE:
340- space = &fgeom.above_rect;
341- break;
342- case BUTTON_STICK:
343- space = &fgeom.stick_rect;
344- break;
345- case BUTTON_UNSHADE:
346- space = &fgeom.unshade_rect;
347- break;
348- case BUTTON_UNABOVE:
349- space = &fgeom.unabove_rect;
350- break;
351- case BUTTON_UNSTICK:
352- space = &fgeom.unstick_rect;
353- break;
354- default:
355- return FALSE;
356- }
357-
358- if (!space->clickable.width && !space->clickable.height)
359- return FALSE;
360-
361- *x = space->clickable.x;
362- *y = space->clickable.y;
363- *w = space->clickable.width;
364- *h = space->clickable.height;
365-
366- *x = *x - fgeom.borders.invisible.left + fgeom.borders.resize.left;
367- *y = *y - fgeom.borders.invisible.top + fgeom.borders.resize.top;
368-
369- return TRUE;
370-#endif
371 }
372
373 static void

Subscribers

People subscribed via source and target branches