Merge lp:~muktupavels/compiz/gwd-no-g-object-get-with-settings into lp:compiz/0.9.12

Proposed by Alberts Muktupāvels
Status: Merged
Approved by: Marco Trevisan (Treviño)
Approved revision: 4060
Merged at revision: 4043
Proposed branch: lp:~muktupavels/compiz/gwd-no-g-object-get-with-settings
Merge into: lp:compiz/0.9.12
Prerequisite: lp:~muktupavels/compiz/gwd-remove-cairo-window-decoration-util
Diff against target: 1553 lines (+355/-740)
10 files modified
gtk/window-decorator/blurprops.c (+1/-3)
gtk/window-decorator/decorator.c (+2/-2)
gtk/window-decorator/events.c (+7/-11)
gtk/window-decorator/frames.c (+2/-3)
gtk/window-decorator/gwd-settings.c (+93/-226)
gtk/window-decorator/gwd-settings.h (+103/-66)
gtk/window-decorator/gwd-theme-metacity.c (+7/-11)
gtk/window-decorator/gwd-theme.c (+4/-6)
gtk/window-decorator/tests/test_gwd_settings.cpp (+134/-410)
gtk/window-decorator/wnck.c (+2/-2)
To merge this branch: bzr merge lp:~muktupavels/compiz/gwd-no-g-object-get-with-settings
Reviewer Review Type Date Requested Status
Sam Spilsbury Approve
Review via email: mp+295389@code.launchpad.net

Commit message

gtk-window-decorator: Stop using g_object_get with GWDSettings.

Description of the change

Stop using g_object_get with GWDSettings.

As side effect this fixes few memory leaks. g_object_get returns newly allocated string that was never freed.

To post a comment you must log in.
Revision history for this message
Sam Spilsbury (smspillaz) wrote :

Looks really great! Thanks for simplifying all that. I've added some questions about nullability in the diff but other than LGTM!

review: Needs Information
Revision history for this message
Alberts Muktupāvels (muktupavels) wrote :

1) gwd_settings_button_layout_changed and gwd_settings_font_changed is only called with values from GSettings. Reason to remove NULL checks are simple - because button_layout and titlebar_font will be never NULL. g_settings_get_string always returns newly allocated string, it might be empty, but not NULL.

So removing these checks does not change function behaviour.

2) get_*_shadow will never return NULL. Also how could I add assert if shadow is no longer pointer?

Revision history for this message
Sam Spilsbury (smspillaz) wrote :

> 1) gwd_settings_button_layout_changed and gwd_settings_font_changed is only
> called with values from GSettings. Reason to remove NULL checks are simple -
> because button_layout and titlebar_font will be never NULL.
> g_settings_get_string always returns newly allocated string, it might be
> empty, but not NULL.
>
> So removing these checks does not change function behaviour.

Makes sense - thanks for clarifying :)

>
> 2) get_*_shadow will never return NULL. Also how could I add assert if shadow
> is no longer pointer?

Ah, I missed the part where it was converted to return the structure itself as opposed to a pointer.

In that case, there's no need to assert as you mentioned.

LGTM.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'gtk/window-decorator/blurprops.c'
2--- gtk/window-decorator/blurprops.c 2016-05-21 20:35:23 +0000
3+++ gtk/window-decorator/blurprops.c 2016-05-21 20:35:24 +0000
4@@ -36,13 +36,11 @@
5 int right_offset)
6 {
7 GWDSettings *settings = gwd_theme_get_settings (gwd_theme);
8+ gint blur_type = gwd_settings_get_blur_type (settings);
9 Display *xdisplay = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
10 long *data = NULL;
11 int size = 0;
12- gint blur_type;
13
14- g_object_get (settings, "blur", &blur_type, NULL);
15-
16 if (blur_type != BLUR_TYPE_ALL)
17 {
18 bottom_region = NULL;
19
20=== modified file 'gtk/window-decorator/decorator.c'
21--- gtk/window-decorator/decorator.c 2016-05-21 20:35:23 +0000
22+++ gtk/window-decorator/decorator.c 2016-05-21 20:35:24 +0000
23@@ -24,6 +24,7 @@
24 */
25
26 #include "gtk-window-decorator.h"
27+#include "gwd-settings.h"
28 #include "gwd-theme-cairo.h"
29
30 static void
31@@ -55,8 +56,7 @@
32 get_titlebar_font (decor_frame_t *frame)
33 {
34 GWDSettings *settings = gwd_theme_get_settings (gwd_theme);
35- const gchar *titlebar_font;
36- g_object_get (settings, "titlebar-font", &titlebar_font, NULL);
37+ const gchar *titlebar_font = gwd_settings_get_titlebar_font (settings);
38
39 /* Using system font */
40 if (!titlebar_font)
41
42=== modified file 'gtk/window-decorator/events.c'
43--- gtk/window-decorator/events.c 2016-05-21 20:35:23 +0000
44+++ gtk/window-decorator/events.c 2016-05-21 20:35:24 +0000
45@@ -110,11 +110,9 @@
46 char *tooltip)
47 {
48 GWDSettings *settings = gwd_theme_get_settings (gwd_theme);
49+ gboolean use_tooltips = gwd_settings_get_use_tooltips (settings);
50 decor_t *d = g_object_get_data (G_OBJECT (win), "decor");
51 guint state = d->button_states[button];
52- gboolean use_tooltips = FALSE;
53-
54- g_object_get (settings, "use-tooltips", &use_tooltips, NULL);
55
56 if (use_tooltips)
57 handle_tooltip_event (win, gtkwd_event, gtkwd_type, state, tooltip);
58@@ -459,9 +457,7 @@
59 unsigned int button)
60 {
61 GWDSettings *settings = gwd_theme_get_settings (gwd_theme);
62- gint wheel_action = WHEEL_ACTION_NONE;
63-
64- g_object_get (settings, "mouse-wheel-action", &wheel_action, NULL);
65+ gint wheel_action = gwd_settings_get_mouse_wheel_action (settings);
66
67 switch (wheel_action) {
68 case WHEEL_ACTION_SHADE:
69@@ -514,7 +510,7 @@
70 dist (gtkwd_event->x, gtkwd_event->y,
71 last_button_x, last_button_y) < DOUBLE_CLICK_DISTANCE)
72 {
73- g_object_get (settings, "titlebar-double-click-action", &titlebar_action, NULL);
74+ titlebar_action = gwd_settings_get_titlebar_double_click_action (settings);
75 handle_title_button_event (win, titlebar_action,
76 gtkwd_event);
77
78@@ -539,13 +535,13 @@
79 }
80 else if (gtkwd_event->button == 2)
81 {
82- g_object_get (settings, "titlebar-middle-click-action", &titlebar_action, NULL);
83+ titlebar_action = gwd_settings_get_titlebar_middle_click_action (settings);
84 handle_title_button_event (win, titlebar_action,
85 gtkwd_event);
86 }
87 else if (gtkwd_event->button == 3)
88 {
89- g_object_get (settings, "titlebar-right-click-action", &titlebar_action, NULL);
90+ titlebar_action = gwd_settings_get_titlebar_right_click_action (settings);
91 handle_title_button_event (win, titlebar_action,
92 gtkwd_event);
93 }
94@@ -616,12 +612,12 @@
95 restack_window (win, Above);
96 break;
97 case 2:
98- g_object_get (settings, "titlebar-middle-click-action", &titlebar_action, NULL);
99+ titlebar_action = gwd_settings_get_titlebar_middle_click_action (settings);
100 handle_title_button_event (win, titlebar_action,
101 gtkwd_event);
102 break;
103 case 3:
104- g_object_get (settings, "titlebar-right-click-action", &titlebar_action, NULL);
105+ titlebar_action = gwd_settings_get_titlebar_right_click_action (settings);
106 handle_title_button_event (win, titlebar_action,
107 gtkwd_event);
108 break;
109
110=== modified file 'gtk/window-decorator/frames.c'
111--- gtk/window-decorator/frames.c 2016-05-21 20:35:23 +0000
112+++ gtk/window-decorator/frames.c 2016-05-21 20:35:24 +0000
113@@ -21,6 +21,7 @@
114 */
115
116 #include "gtk-window-decorator.h"
117+#include "gwd-settings.h"
118
119 typedef struct _decor_frame_type_info
120 {
121@@ -264,17 +265,15 @@
122 decor_frame_refresh (decor_frame_t *frame)
123 {
124 GWDSettings *settings = gwd_theme_get_settings (gwd_theme);
125+ const gchar *titlebar_font = gwd_settings_get_titlebar_font (settings);
126 decor_shadow_options_t active_o, inactive_o;
127 decor_shadow_info_t *info;
128- const gchar *titlebar_font = NULL;
129
130 gwd_decor_frame_ref (frame);
131
132 update_style (frame->style_window_rgba);
133 update_style (frame->style_window_rgb);
134
135- g_object_get (settings, "titlebar-font", &titlebar_font, NULL);
136-
137 set_frame_scale (frame, titlebar_font);
138
139 titlebar_font = NULL;
140
141=== modified file 'gtk/window-decorator/gwd-settings.c'
142--- gtk/window-decorator/gwd-settings.c 2016-05-21 20:35:23 +0000
143+++ gtk/window-decorator/gwd-settings.c 2016-05-21 20:35:24 +0000
144@@ -26,7 +26,6 @@
145 #include <stdio.h>
146
147 #include "gwd-settings.h"
148-#include "decoration.h"
149
150 const gboolean USE_TOOLTIPS_DEFAULT = FALSE;
151
152@@ -71,11 +70,13 @@
153 {
154 GObject parent;
155
156+ gint blur_type;
157+ gchar *metacity_theme;
158+ guint cmdline_opts;
159+
160 decor_shadow_options_t active_shadow;
161 decor_shadow_options_t inactive_shadow;
162 gboolean use_tooltips;
163- gint blur_type;
164- gchar *metacity_theme;
165 gdouble metacity_active_opacity;
166 gdouble metacity_inactive_opacity;
167 gboolean metacity_active_shade_opacity;
168@@ -87,8 +88,6 @@
169 gint mouse_wheel_action;
170 gchar *titlebar_font;
171
172- guint cmdline_opts;
173-
174 guint freeze_count;
175 GList *notify_funcs;
176 };
177@@ -97,27 +96,14 @@
178 {
179 PROP_0,
180
181- PROP_ACTIVE_SHADOW,
182- PROP_INACTIVE_SHADOW,
183- PROP_USE_TOOLTIPS,
184- PROP_BLUR,
185+ PROP_BLUR_TYPE,
186 PROP_METACITY_THEME,
187- PROP_ACTIVE_OPACITY,
188- PROP_INACTIVE_OPACITY,
189- PROP_ACTIVE_SHADE_OPACITY,
190- PROP_INACTIVE_SHADE_OPACITY,
191- PROP_BUTTON_LAYOUT,
192- PROP_TITLEBAR_ACTION_DOUBLE_CLICK,
193- PROP_TITLEBAR_ACTION_MIDDLE_CLICK,
194- PROP_TITLEBAR_ACTION_RIGHT_CLICK,
195- PROP_MOUSE_WHEEL_ACTION,
196- PROP_TITLEBAR_FONT,
197 PROP_CMDLINE_OPTIONS,
198
199 LAST_PROP
200 };
201
202-static GParamSpec *settings_properties[LAST_PROP] = { NULL };
203+static GParamSpec *properties[LAST_PROP] = { NULL };
204
205 enum
206 {
207@@ -281,7 +267,7 @@
208 settings->cmdline_opts = g_value_get_int (value);
209 break;
210
211- case PROP_BLUR:
212+ case PROP_BLUR_TYPE:
213 settings->blur_type = g_value_get_int (value);
214 break;
215
216@@ -297,219 +283,37 @@
217 }
218
219 static void
220-gwd_settings_get_property (GObject *object,
221- guint property_id,
222- GValue *value,
223- GParamSpec *pspec)
224-{
225- GWDSettings *settings;
226-
227- settings = GWD_SETTINGS (object);
228-
229- switch (property_id) {
230- case PROP_ACTIVE_SHADOW:
231- g_value_set_pointer (value, &settings->active_shadow);
232- break;
233-
234- case PROP_INACTIVE_SHADOW:
235- g_value_set_pointer (value, &settings->inactive_shadow);
236- break;
237-
238- case PROP_USE_TOOLTIPS:
239- g_value_set_boolean (value, settings->use_tooltips);
240- break;
241-
242- case PROP_BLUR:
243- g_value_set_int (value, settings->blur_type);
244- break;
245-
246- case PROP_METACITY_THEME:
247- g_value_set_string (value, settings->metacity_theme);
248- break;
249-
250- case PROP_ACTIVE_OPACITY:
251- g_value_set_double (value, settings->metacity_active_opacity);
252- break;
253-
254- case PROP_INACTIVE_OPACITY:
255- g_value_set_double (value, settings->metacity_inactive_opacity);
256- break;
257-
258- case PROP_ACTIVE_SHADE_OPACITY:
259- g_value_set_boolean (value, settings->metacity_active_shade_opacity);
260- break;
261-
262- case PROP_INACTIVE_SHADE_OPACITY:
263- g_value_set_boolean (value, settings->metacity_inactive_shade_opacity);
264- break;
265-
266- case PROP_BUTTON_LAYOUT:
267- g_value_set_string (value, settings->metacity_button_layout);
268- break;
269-
270- case PROP_TITLEBAR_ACTION_DOUBLE_CLICK:
271- g_value_set_int (value, settings->titlebar_double_click_action);
272- break;
273-
274- case PROP_TITLEBAR_ACTION_MIDDLE_CLICK:
275- g_value_set_int (value, settings->titlebar_middle_click_action);
276- break;
277-
278- case PROP_TITLEBAR_ACTION_RIGHT_CLICK:
279- g_value_set_int (value, settings->titlebar_right_click_action);
280- break;
281-
282- case PROP_MOUSE_WHEEL_ACTION:
283- g_value_set_int (value, settings->mouse_wheel_action);
284- break;
285-
286- case PROP_TITLEBAR_FONT:
287- g_value_set_string (value, settings->titlebar_font);
288- break;
289-
290- default:
291- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
292- break;
293- }
294-}
295-
296-static void
297 gwd_settings_class_init (GWDSettingsClass *settings_class)
298 {
299- GObjectClass *object_class;
300-
301- object_class = G_OBJECT_CLASS (settings_class);
302+ GObjectClass *object_class = G_OBJECT_CLASS (settings_class);
303
304 object_class->finalize = gwd_settings_finalize;
305- object_class->get_property = gwd_settings_get_property;
306 object_class->set_property = gwd_settings_set_property;
307
308- settings_properties[PROP_ACTIVE_SHADOW] =
309- g_param_spec_pointer ("active-shadow",
310- "Active Shadow",
311- "Active Shadow Settings",
312- G_PARAM_READABLE);
313-
314- settings_properties[PROP_INACTIVE_SHADOW] =
315- g_param_spec_pointer ("inactive-shadow",
316- "Inactive Shadow",
317- "Inactive Shadow",
318- G_PARAM_READABLE);
319-
320- settings_properties[PROP_USE_TOOLTIPS] =
321- g_param_spec_boolean ("use-tooltips",
322- "Use Tooltips",
323- "Use Tooltips Setting",
324- USE_TOOLTIPS_DEFAULT,
325- G_PARAM_READABLE);
326-
327- settings_properties[PROP_BLUR] =
328- g_param_spec_int ("blur",
329+ properties[PROP_BLUR_TYPE] =
330+ g_param_spec_int ("blur-type",
331 "Blur Type",
332 "Blur type property",
333 BLUR_TYPE_NONE,
334 BLUR_TYPE_ALL,
335 BLUR_TYPE_NONE,
336- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
337+ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY);
338
339- settings_properties[PROP_METACITY_THEME] =
340+ properties[PROP_METACITY_THEME] =
341 g_param_spec_string ("metacity-theme",
342 "Metacity Theme",
343 "Metacity Theme Setting",
344 METACITY_THEME_DEFAULT,
345- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
346-
347- settings_properties[PROP_ACTIVE_OPACITY] =
348- g_param_spec_double ("metacity-active-opacity",
349- "Metacity Active Opacity",
350- "Metacity Active Opacity",
351- 0.0,
352- 1.0,
353- METACITY_ACTIVE_OPACITY_DEFAULT,
354- G_PARAM_READABLE);
355-
356- settings_properties[PROP_INACTIVE_OPACITY] =
357- g_param_spec_double ("metacity-inactive-opacity",
358- "Metacity Inactive Opacity",
359- "Metacity Inactive Opacity",
360- 0.0,
361- 1.0,
362- METACITY_INACTIVE_OPACITY_DEFAULT,
363- G_PARAM_READABLE);
364-
365- settings_properties[PROP_ACTIVE_SHADE_OPACITY] =
366- g_param_spec_boolean ("metacity-active-shade-opacity",
367- "Metacity Active Shade Opacity",
368- "Metacity Active Shade Opacity",
369- METACITY_ACTIVE_SHADE_OPACITY_DEFAULT,
370- G_PARAM_READABLE);
371-
372- settings_properties[PROP_INACTIVE_SHADE_OPACITY] =
373- g_param_spec_boolean ("metacity-inactive-shade-opacity",
374- "Metacity Inactive Shade Opacity",
375- "Metacity Inactive Shade Opacity",
376- METACITY_INACTIVE_SHADE_OPACITY_DEFAULT,
377- G_PARAM_READABLE);
378-
379- settings_properties[PROP_BUTTON_LAYOUT] =
380- g_param_spec_string ("metacity-button-layout",
381- "Metacity Button Layout",
382- "Metacity Button Layout",
383- METACITY_BUTTON_LAYOUT_DEFAULT,
384- G_PARAM_READABLE);
385-
386- settings_properties[PROP_TITLEBAR_ACTION_DOUBLE_CLICK] =
387- g_param_spec_int ("titlebar-double-click-action",
388- "Titlebar Action Double Click",
389- "Titlebar Action Double Click",
390- CLICK_ACTION_NONE,
391- CLICK_ACTION_MENU,
392- DOUBLE_CLICK_ACTION_DEFAULT,
393- G_PARAM_READABLE);
394-
395- settings_properties[PROP_TITLEBAR_ACTION_MIDDLE_CLICK] =
396- g_param_spec_int ("titlebar-middle-click-action",
397- "Titlebar Action Middle Click",
398- "Titlebar Action Middle Click",
399- CLICK_ACTION_NONE,
400- CLICK_ACTION_MENU,
401- MIDDLE_CLICK_ACTION_DEFAULT,
402- G_PARAM_READABLE);
403-
404- settings_properties[PROP_TITLEBAR_ACTION_RIGHT_CLICK] =
405- g_param_spec_int ("titlebar-right-click-action",
406- "Titlebar Action Right Click",
407- "Titlebar Action Right Click",
408- CLICK_ACTION_NONE,
409- CLICK_ACTION_MENU,
410- RIGHT_CLICK_ACTION_DEFAULT,
411- G_PARAM_READABLE);
412-
413- settings_properties[PROP_MOUSE_WHEEL_ACTION] =
414- g_param_spec_int ("mouse-wheel-action",
415- "Mouse Wheel Action",
416- "Mouse Wheel Action",
417- WHEEL_ACTION_NONE,
418- WHEEL_ACTION_SHADE,
419- WHEEL_ACTION_DEFAULT,
420- G_PARAM_READABLE);
421-
422- settings_properties[PROP_TITLEBAR_FONT] =
423- g_param_spec_string ("titlebar-font",
424- "Titlebar Font",
425- "Titlebar Font",
426- TITLEBAR_FONT_DEFAULT,
427- G_PARAM_READABLE);
428-
429- settings_properties[PROP_CMDLINE_OPTIONS] =
430+ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY);
431+
432+ properties[PROP_CMDLINE_OPTIONS] =
433 g_param_spec_int ("cmdline-options",
434 "Command line options",
435 "Which options were specified on the command line",
436 0, G_MAXINT32, 0,
437- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
438+ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY);
439
440- g_object_class_install_properties (object_class, LAST_PROP,
441- settings_properties);
442+ g_object_class_install_properties (object_class, LAST_PROP, properties);
443
444 settings_signals[UPDATE_DECORATIONS] =
445 g_signal_new ("update-decorations",
446@@ -588,12 +392,18 @@
447 cmdline_opts |= CMDLINE_THEME;
448
449 return g_object_new (GWD_TYPE_SETTINGS,
450- "blur", blur != BLUR_TYPE_UNSET ? blur : BLUR_TYPE_DEFAULT,
451+ "blur-type", blur != BLUR_TYPE_UNSET ? blur : BLUR_TYPE_DEFAULT,
452 "metacity-theme", metacity_theme ? metacity_theme : METACITY_THEME_DEFAULT,
453 "cmdline-options", cmdline_opts,
454 NULL);
455 }
456
457+gint
458+gwd_settings_get_blur_type (GWDSettings *settings)
459+{
460+ return settings->blur_type;
461+}
462+
463 const gchar *
464 gwd_settings_get_metacity_button_layout (GWDSettings *settings)
465 {
466@@ -612,6 +422,72 @@
467 return settings->titlebar_font;
468 }
469
470+decor_shadow_options_t
471+gwd_settings_get_active_shadow (GWDSettings *settings)
472+{
473+ return settings->active_shadow;
474+}
475+
476+decor_shadow_options_t
477+gwd_settings_get_inactive_shadow (GWDSettings *settings)
478+{
479+ return settings->inactive_shadow;
480+}
481+
482+gboolean
483+gwd_settings_get_use_tooltips (GWDSettings *settings)
484+{
485+ return settings->use_tooltips;
486+}
487+
488+gdouble
489+gwd_settings_get_metacity_active_opacity (GWDSettings *settings)
490+{
491+ return settings->metacity_active_opacity;
492+}
493+
494+gdouble
495+gwd_settings_get_metacity_inactive_opacity (GWDSettings *settings)
496+{
497+ return settings->metacity_inactive_opacity;
498+}
499+
500+gboolean
501+gwd_settings_get_metacity_active_shade_opacity (GWDSettings *settings)
502+{
503+ return settings->metacity_active_shade_opacity;
504+}
505+
506+gboolean
507+gwd_settings_get_metacity_inactive_shade_opacity (GWDSettings *settings)
508+{
509+ return settings->metacity_inactive_shade_opacity;
510+}
511+
512+gint
513+gwd_settings_get_titlebar_double_click_action (GWDSettings *settings)
514+{
515+ return settings->titlebar_double_click_action;
516+}
517+
518+gint
519+gwd_settings_get_titlebar_middle_click_action (GWDSettings *settings)
520+{
521+ return settings->titlebar_middle_click_action;
522+}
523+
524+gint
525+gwd_settings_get_titlebar_right_click_action (GWDSettings *settings)
526+{
527+ return settings->titlebar_right_click_action;
528+}
529+
530+gint
531+gwd_settings_get_mouse_wheel_action (GWDSettings *settings)
532+{
533+ return settings->mouse_wheel_action;
534+}
535+
536 void
537 gwd_settings_freeze_updates (GWDSettings *settings)
538 {
539@@ -789,9 +665,6 @@
540 gwd_settings_button_layout_changed (GWDSettings *settings,
541 const gchar *button_layout)
542 {
543- if (!button_layout)
544- return FALSE;
545-
546 if (g_strcmp0 (settings->metacity_button_layout, button_layout) == 0)
547 return FALSE;
548
549@@ -810,22 +683,16 @@
550 gboolean titlebar_uses_system_font,
551 const gchar *titlebar_font)
552 {
553- const gchar *no_font = NULL;
554- const gchar *use_font = NULL;
555-
556- if (!titlebar_font)
557- return FALSE;
558+ const gchar *use_font = titlebar_font;
559
560 if (titlebar_uses_system_font)
561- use_font = no_font;
562- else
563- use_font = titlebar_font;
564+ use_font = NULL;
565
566 if (g_strcmp0 (settings->titlebar_font, use_font) == 0)
567 return FALSE;
568
569 g_free (settings->titlebar_font);
570- settings->titlebar_font = use_font ? g_strdup (use_font) : NULL;
571+ settings->titlebar_font = g_strdup (use_font);
572
573 append_to_notify_funcs (settings, update_decorations);
574 append_to_notify_funcs (settings, update_frames);
575
576=== modified file 'gtk/window-decorator/gwd-settings.h'
577--- gtk/window-decorator/gwd-settings.h 2016-05-21 20:35:23 +0000
578+++ gtk/window-decorator/gwd-settings.h 2016-05-21 20:35:24 +0000
579@@ -23,6 +23,7 @@
580 #ifndef GWD_SETTINGS_H
581 #define GWD_SETTINGS_H
582
583+#include <decoration.h>
584 #include <glib-object.h>
585
586 G_BEGIN_DECLS
587@@ -87,72 +88,108 @@
588 G_DECLARE_FINAL_TYPE (GWDSettings, gwd_settings, GWD, SETTINGS, GObject)
589
590 GWDSettings *
591-gwd_settings_new (gint blur,
592- const gchar *metacity_theme);
593-
594-const gchar *
595-gwd_settings_get_metacity_button_layout (GWDSettings *settings);
596-
597-const gchar *
598-gwd_settings_get_metacity_theme (GWDSettings *settings);
599-
600-const gchar *
601-gwd_settings_get_titlebar_font (GWDSettings *settings);
602-
603-void
604-gwd_settings_freeze_updates (GWDSettings *settings);
605-
606-void
607-gwd_settings_thaw_updates (GWDSettings *settings);
608-
609-gboolean
610-gwd_settings_shadow_property_changed (GWDSettings *settings,
611- gdouble active_shadow_radius,
612- gdouble active_shadow_opacity,
613- gdouble active_shadow_offset_x,
614- gdouble active_shadow_offset_y,
615- const gchar *active_shadow_color,
616- gdouble inactive_shadow_radius,
617- gdouble inactive_shadow_opacity,
618- gdouble inactive_shadow_offset_x,
619- gdouble inactive_shadow_offset_y,
620- const gchar *inactive_shadow_color);
621-
622-gboolean
623-gwd_settings_use_tooltips_changed (GWDSettings *settings,
624- gboolean use_tooltips);
625-
626-gboolean
627-gwd_settings_blur_changed (GWDSettings *settings,
628- const gchar *blur_type);
629-
630-gboolean
631-gwd_settings_metacity_theme_changed (GWDSettings *settings,
632- gboolean use_metacity_theme,
633- const gchar *metacity_theme);
634-
635-gboolean
636-gwd_settings_opacity_changed (GWDSettings *settings,
637- gdouble active_opacity,
638- gdouble inactive_opacity,
639- gboolean active_shade_opacity,
640- gboolean inactive_shade_opacity);
641-
642-gboolean
643-gwd_settings_button_layout_changed (GWDSettings *settings,
644- const gchar *button_layout);
645-
646-gboolean
647-gwd_settings_font_changed (GWDSettings *settings,
648- gboolean titlebar_uses_system_font,
649- const gchar *titlebar_font);
650-
651-gboolean
652-gwd_settings_titlebar_actions_changed (GWDSettings *settings,
653- const gchar *action_double_click_titlebar,
654- const gchar *action_middle_click_titlebar,
655- const gchar *action_right_click_titlebar,
656- const gchar *mouse_wheel_action);
657+gwd_settings_new (gint blur,
658+ const gchar *metacity_theme);
659+
660+gint
661+gwd_settings_get_blur_type (GWDSettings *settings);
662+
663+const gchar *
664+gwd_settings_get_metacity_button_layout (GWDSettings *settings);
665+
666+const gchar *
667+gwd_settings_get_metacity_theme (GWDSettings *settings);
668+
669+const gchar *
670+gwd_settings_get_titlebar_font (GWDSettings *settings);
671+
672+decor_shadow_options_t
673+gwd_settings_get_active_shadow (GWDSettings *settings);
674+
675+decor_shadow_options_t
676+gwd_settings_get_inactive_shadow (GWDSettings *settings);
677+
678+gboolean
679+gwd_settings_get_use_tooltips (GWDSettings *settings);
680+
681+gdouble
682+gwd_settings_get_metacity_active_opacity (GWDSettings *settings);
683+
684+gdouble
685+gwd_settings_get_metacity_inactive_opacity (GWDSettings *settings);
686+
687+gboolean
688+gwd_settings_get_metacity_active_shade_opacity (GWDSettings *settings);
689+
690+gboolean
691+gwd_settings_get_metacity_inactive_shade_opacity (GWDSettings *settings);
692+
693+gint
694+gwd_settings_get_titlebar_double_click_action (GWDSettings *settings);
695+
696+gint
697+gwd_settings_get_titlebar_middle_click_action (GWDSettings *settings);
698+
699+gint
700+gwd_settings_get_titlebar_right_click_action (GWDSettings *settings);
701+
702+gint
703+gwd_settings_get_mouse_wheel_action (GWDSettings *settings);
704+
705+void
706+gwd_settings_freeze_updates (GWDSettings *settings);
707+
708+void
709+gwd_settings_thaw_updates (GWDSettings *settings);
710+
711+gboolean
712+gwd_settings_shadow_property_changed (GWDSettings *settings,
713+ gdouble active_shadow_radius,
714+ gdouble active_shadow_opacity,
715+ gdouble active_shadow_offset_x,
716+ gdouble active_shadow_offset_y,
717+ const gchar *active_shadow_color,
718+ gdouble inactive_shadow_radius,
719+ gdouble inactive_shadow_opacity,
720+ gdouble inactive_shadow_offset_x,
721+ gdouble inactive_shadow_offset_y,
722+ const gchar *inactive_shadow_color);
723+
724+gboolean
725+gwd_settings_use_tooltips_changed (GWDSettings *settings,
726+ gboolean use_tooltips);
727+
728+gboolean
729+gwd_settings_blur_changed (GWDSettings *settings,
730+ const gchar *blur_type);
731+
732+gboolean
733+gwd_settings_metacity_theme_changed (GWDSettings *settings,
734+ gboolean use_metacity_theme,
735+ const gchar *metacity_theme);
736+
737+gboolean
738+gwd_settings_opacity_changed (GWDSettings *settings,
739+ gdouble active_opacity,
740+ gdouble inactive_opacity,
741+ gboolean active_shade_opacity,
742+ gboolean inactive_shade_opacity);
743+
744+gboolean
745+gwd_settings_button_layout_changed (GWDSettings *settings,
746+ const gchar *button_layout);
747+
748+gboolean
749+gwd_settings_font_changed (GWDSettings *settings,
750+ gboolean titlebar_uses_system_font,
751+ const gchar *titlebar_font);
752+
753+gboolean
754+gwd_settings_titlebar_actions_changed (GWDSettings *settings,
755+ const gchar *action_double_click_titlebar,
756+ const gchar *action_middle_click_titlebar,
757+ const gchar *action_right_click_titlebar,
758+ const gchar *mouse_wheel_action);
759
760 G_END_DECLS
761
762
763=== modified file 'gtk/window-decorator/gwd-theme-metacity.c'
764--- gtk/window-decorator/gwd-theme-metacity.c 2016-05-21 20:35:23 +0000
765+++ gtk/window-decorator/gwd-theme-metacity.c 2016-05-21 20:35:24 +0000
766@@ -941,10 +941,6 @@
767 Region bottom_region;
768 Region left_region;
769 Region right_region;
770- gdouble meta_active_opacity;
771- gdouble meta_inactive_opacity;
772- gboolean meta_active_shade_opacity;
773- gboolean meta_inactive_shade_opacity;
774 double alpha;
775 gboolean shade_alpha;
776 MetaFrameStyle *frame_style;
777@@ -962,13 +958,13 @@
778 left_region = NULL;
779 right_region = NULL;
780
781- g_object_get (settings, "metacity-active-opacity", &meta_active_opacity, NULL);
782- g_object_get (settings, "metacity-inactive-opacity", &meta_inactive_opacity, NULL);
783- g_object_get (settings, "metacity-active-shade-opacity", &meta_active_shade_opacity, NULL);
784- g_object_get (settings, "metacity-inactive-shade-opacity", &meta_inactive_shade_opacity, NULL);
785-
786- alpha = (decor->active) ? meta_active_opacity : meta_inactive_opacity;
787- shade_alpha = (decor->active) ? meta_active_shade_opacity : meta_inactive_shade_opacity;
788+ if (decor->active) {
789+ alpha = gwd_settings_get_metacity_active_opacity (settings);
790+ shade_alpha = gwd_settings_get_metacity_active_shade_opacity (settings);
791+ } else {
792+ alpha = gwd_settings_get_metacity_inactive_opacity (settings);
793+ shade_alpha = gwd_settings_get_metacity_inactive_shade_opacity (settings);
794+ }
795
796 if (decoration_alpha == 1.0)
797 alpha = 1.0;
798
799=== modified file 'gtk/window-decorator/gwd-theme.c'
800--- gtk/window-decorator/gwd-theme.c 2016-05-21 20:35:23 +0000
801+++ gtk/window-decorator/gwd-theme.c 2016-05-21 20:35:24 +0000
802@@ -111,18 +111,16 @@
803 gboolean active)
804 {
805 GWDThemePrivate *priv;
806- decor_shadow_options_t *shadow;
807+ decor_shadow_options_t shadow;
808
809 priv = gwd_theme_get_instance_private (theme);
810- shadow = NULL;
811
812 if (active)
813- g_object_get (priv->settings, "active-shadow", &shadow, NULL);
814+ shadow = gwd_settings_get_active_shadow (priv->settings);
815 else
816- g_object_get (priv->settings, "inactive-shadow", &shadow, NULL);
817+ shadow = gwd_settings_get_inactive_shadow (priv->settings);
818
819- if (shadow)
820- memcpy (options, shadow, sizeof (decor_shadow_options_t));
821+ memcpy (options, &shadow, sizeof (decor_shadow_options_t));
822 }
823
824 static void
825
826=== modified file 'gtk/window-decorator/tests/test_gwd_settings.cpp'
827--- gtk/window-decorator/tests/test_gwd_settings.cpp 2016-05-21 20:35:23 +0000
828+++ gtk/window-decorator/tests/test_gwd_settings.cpp 2016-05-21 20:35:24 +0000
829@@ -44,130 +44,21 @@
830 #include "gwd-settings.h"
831 #include "gwd-settings-storage.h"
832
833-#include "decoration.h"
834-
835-using ::testing::TestWithParam;
836 using ::testing::Eq;
837-using ::testing::Return;
838-using ::testing::InvokeWithoutArgs;
839-using ::testing::IgnoreResult;
840-using ::testing::MatcherInterface;
841-using ::testing::MakeMatcher;
842-using ::testing::MatchResultListener;
843-using ::testing::Matcher;
844 using ::testing::Action;
845-using ::testing::ActionInterface;
846-using ::testing::MakeAction;
847-using ::testing::IsNull;
848 using ::testing::Values;
849 using ::testing::_;
850 using ::testing::StrictMock;
851-using ::testing::InSequence;
852-
853-template <class ValueCType>
854-class GValueCmp
855-{
856- public:
857-
858- typedef ValueCType (*GetFunc) (const GValue *value);
859-
860- bool compare (const ValueCType &val,
861- GValue *value,
862- GetFunc get)
863- {
864- const ValueCType &valForValue = (*get) (value);
865- return valForValue == val;
866- }
867-};
868-
869-template <>
870-class GValueCmp <decor_shadow_options_t>
871-{
872- public:
873-
874- typedef gpointer (*GetFunc) (const GValue *value);
875-
876- bool compare (const decor_shadow_options_t &val,
877- GValue *value,
878- GetFunc get)
879- {
880- gpointer shadowOptionsPtr = (*get) (value);
881- const decor_shadow_options_t &shadowOptions = *(reinterpret_cast <decor_shadow_options_t *> (shadowOptionsPtr));
882- if (decor_shadow_options_cmp (&val, &shadowOptions))
883- return true;
884- else
885- return false;
886- }
887-};
888-
889-template <>
890-class GValueCmp <std::string>
891-{
892- public:
893-
894- typedef const gchar * (*GetFunc) (const GValue *value);
895-
896- bool compare (const std::string &val,
897- GValue *value,
898- GetFunc get)
899- {
900- const gchar *valueForValue = (*get) (value);
901- const std::string valueForValueStr (valueForValue);\
902-
903- return val == valueForValueStr;
904- }
905-};
906-
907-namespace
908-{
909- std::ostream &
910- operator<< (std::ostream &os, const decor_shadow_options_t &options)
911- {
912- os << " radius: " << options.shadow_radius <<
913- " opacity: " << options.shadow_opacity <<
914- " offset: (" << options.shadow_offset_x << ", " << options.shadow_offset_y << ")" <<
915- " color: r: " << options.shadow_color[0] <<
916- " g: " << options.shadow_color[1] <<
917- " b: " << options.shadow_color[2];
918-
919- return os;
920- }
921-}
922-
923-template <class ValueCType>
924-class GObjectPropertyMatcher :
925- public ::testing::MatcherInterface <GValue *>
926-{
927- public:
928-
929- GObjectPropertyMatcher (const ValueCType &value,
930- typename GValueCmp<ValueCType>::GetFunc func) :
931- mValue (value),
932- mGetFunc (func)
933- {
934- }
935- virtual ~GObjectPropertyMatcher () {}
936-
937- virtual bool MatchAndExplain (GValue *value, MatchResultListener *listener) const
938- {
939- return GValueCmp <ValueCType> ().compare (mValue, value, mGetFunc);
940- }
941-
942- virtual void DescribeTo (std::ostream *os) const
943- {
944- *os << "value contains " << mValue;
945- }
946-
947- virtual void DescribeNegationTo (std::ostream *os) const
948- {
949- *os << "value does not contain " << mValue;
950- }
951-
952- private:
953-
954- const ValueCType &mValue;
955- typename GValueCmp<ValueCType>::GetFunc mGetFunc;
956-};
957+
958+MATCHER_P(IsShadowsEqual, element, "")
959+{
960+ return decor_shadow_options_cmp (&arg, &element);
961+}
962+
963+MATCHER_P(IsStringsEqual, element, "")
964+{
965+ return g_strcmp0 (arg, element) == 0;
966+}
967
968 namespace testing_values
969 {
970@@ -215,14 +106,6 @@
971 const std::string MOUSE_WHEEL_ACTION_SHADE ("shade");
972 }
973
974-template <class ValueCType>
975-inline Matcher<GValue *>
976-GValueMatch (const ValueCType &value,
977- typename GValueCmp<ValueCType>::GetFunc func)
978-{
979- return MakeMatcher (new GObjectPropertyMatcher <ValueCType> (value, func));
980-}
981-
982 class GWDSettingsTestCommon :
983 public ::testing::Test
984 {
985@@ -246,35 +129,6 @@
986 {
987 g_object_unref (G_OBJECT (settings));
988 }
989-
990- class AutoUnsetGValue
991- {
992- public:
993-
994- AutoUnsetGValue (GType type)
995- {
996- /* This is effectively G_VALUE_INIT, we can't use that here
997- * because this is not a C++11 project */
998- mValue.g_type = 0;
999- mValue.data[0].v_int = 0;
1000- mValue.data[1].v_int = 0;
1001- g_value_init (&mValue, type);
1002- }
1003-
1004- ~AutoUnsetGValue ()
1005- {
1006- g_value_unset (&mValue);
1007- }
1008-
1009- operator GValue & ()
1010- {
1011- return mValue;
1012- }
1013-
1014- private:
1015-
1016- GValue mValue;
1017- };
1018 }
1019
1020 class GWDMockSettingsNotifiedGMock
1021@@ -407,8 +261,11 @@
1022
1023 TEST_F(GWDSettingsTest, TestShadowPropertyChanged)
1024 {
1025+ decor_shadow_options_t activeShadow;
1026+ decor_shadow_options_t inactiveShadow;
1027+
1028 EXPECT_CALL (*mGMockNotified, updateDecorations ());
1029- EXPECT_THAT (gwd_settings_shadow_property_changed (mSettings.get (),
1030+ EXPECT_TRUE (gwd_settings_shadow_property_changed (mSettings.get (),
1031 testing_values::ACTIVE_SHADOW_OPACITY_VALUE,
1032 testing_values::ACTIVE_SHADOW_RADIUS_VALUE,
1033 testing_values::ACTIVE_SHADOW_OFFSET_X_VALUE,
1034@@ -418,23 +275,7 @@
1035 testing_values::INACTIVE_SHADOW_RADIUS_VALUE,
1036 testing_values::INACTIVE_SHADOW_OFFSET_X_VALUE,
1037 testing_values::INACTIVE_SHADOW_OFFSET_Y_VALUE,
1038- testing_values::INACTIVE_SHADOW_COLOR_STR_VALUE.c_str ()), IsTrue ());
1039-
1040- AutoUnsetGValue activeShadowValue (G_TYPE_POINTER);
1041- AutoUnsetGValue inactiveShadowValue (G_TYPE_POINTER);
1042-
1043- GValue &activeShadowGValue = activeShadowValue;
1044- GValue &inactiveShadowGValue = inactiveShadowValue;
1045-
1046- g_object_get_property (G_OBJECT (mSettings.get ()),
1047- "active-shadow",
1048- &activeShadowGValue);
1049-
1050- g_object_get_property (G_OBJECT (mSettings.get ()),
1051- "inactive-shadow",
1052- &inactiveShadowGValue);
1053-
1054- decor_shadow_options_t activeShadow;
1055+ testing_values::INACTIVE_SHADOW_COLOR_STR_VALUE.c_str ()));
1056
1057 activeShadow.shadow_opacity = testing_values::ACTIVE_SHADOW_OPACITY_VALUE;
1058 activeShadow.shadow_radius = testing_values::ACTIVE_SHADOW_RADIUS_VALUE;
1059@@ -444,8 +285,6 @@
1060 activeShadow.shadow_color[1] = testing_values::ACTIVE_SHADOW_COLOR_VALUE[1];
1061 activeShadow.shadow_color[2] = testing_values::ACTIVE_SHADOW_COLOR_VALUE[2];
1062
1063- decor_shadow_options_t inactiveShadow;
1064-
1065 inactiveShadow.shadow_opacity = testing_values::INACTIVE_SHADOW_OPACITY_VALUE;
1066 inactiveShadow.shadow_radius = testing_values::INACTIVE_SHADOW_RADIUS_VALUE;
1067 inactiveShadow.shadow_offset_x = testing_values::INACTIVE_SHADOW_OFFSET_X_INT_VALUE;
1068@@ -454,98 +293,71 @@
1069 inactiveShadow.shadow_color[1] = testing_values::INACTIVE_SHADOW_COLOR_VALUE[1];
1070 inactiveShadow.shadow_color[2] = testing_values::INACTIVE_SHADOW_COLOR_VALUE[2];
1071
1072- EXPECT_THAT (&activeShadowGValue, GValueMatch <decor_shadow_options_t> (activeShadow,
1073- g_value_get_pointer));
1074- EXPECT_THAT (&inactiveShadowGValue, GValueMatch <decor_shadow_options_t> (inactiveShadow,
1075- g_value_get_pointer));
1076+ EXPECT_THAT (gwd_settings_get_active_shadow (mSettings.get ()),
1077+ IsShadowsEqual (activeShadow));
1078+
1079+ EXPECT_THAT (gwd_settings_get_inactive_shadow (mSettings.get ()),
1080+ IsShadowsEqual (inactiveShadow));
1081 }
1082
1083 TEST_F(GWDSettingsTest, TestShadowPropertyChangedIsDefault)
1084 {
1085- EXPECT_THAT (gwd_settings_shadow_property_changed (mSettings.get (),
1086- ACTIVE_SHADOW_RADIUS_DEFAULT,
1087- ACTIVE_SHADOW_OPACITY_DEFAULT,
1088- ACTIVE_SHADOW_OFFSET_X_DEFAULT,
1089- ACTIVE_SHADOW_OFFSET_Y_DEFAULT,
1090- ACTIVE_SHADOW_COLOR_DEFAULT,
1091- INACTIVE_SHADOW_RADIUS_DEFAULT,
1092- INACTIVE_SHADOW_OPACITY_DEFAULT,
1093- INACTIVE_SHADOW_OFFSET_X_DEFAULT,
1094- INACTIVE_SHADOW_OFFSET_Y_DEFAULT,
1095- INACTIVE_SHADOW_COLOR_DEFAULT), IsFalse ());
1096+ EXPECT_FALSE (gwd_settings_shadow_property_changed (mSettings.get (),
1097+ ACTIVE_SHADOW_RADIUS_DEFAULT,
1098+ ACTIVE_SHADOW_OPACITY_DEFAULT,
1099+ ACTIVE_SHADOW_OFFSET_X_DEFAULT,
1100+ ACTIVE_SHADOW_OFFSET_Y_DEFAULT,
1101+ ACTIVE_SHADOW_COLOR_DEFAULT,
1102+ INACTIVE_SHADOW_RADIUS_DEFAULT,
1103+ INACTIVE_SHADOW_OPACITY_DEFAULT,
1104+ INACTIVE_SHADOW_OFFSET_X_DEFAULT,
1105+ INACTIVE_SHADOW_OFFSET_Y_DEFAULT,
1106+ INACTIVE_SHADOW_COLOR_DEFAULT));
1107 }
1108
1109 TEST_F(GWDSettingsTest, TestUseTooltipsChanged)
1110 {
1111 EXPECT_CALL (*mGMockNotified, updateDecorations ());
1112- EXPECT_THAT (gwd_settings_use_tooltips_changed (mSettings.get (),
1113- testing_values::USE_TOOLTIPS_VALUE), IsTrue ());
1114-
1115- AutoUnsetGValue useTooltipsValue (G_TYPE_BOOLEAN);
1116- GValue &useTooltipsGValue = useTooltipsValue;
1117-
1118- g_object_get_property (G_OBJECT (mSettings.get ()),
1119- "use-tooltips",
1120- &useTooltipsGValue);
1121-
1122- EXPECT_THAT (&useTooltipsGValue, GValueMatch <gboolean> (testing_values::USE_TOOLTIPS_VALUE,
1123- g_value_get_boolean));
1124+ EXPECT_TRUE (gwd_settings_use_tooltips_changed (mSettings.get (),
1125+ testing_values::USE_TOOLTIPS_VALUE));
1126+
1127+ EXPECT_THAT (gwd_settings_get_use_tooltips (mSettings.get ()),
1128+ Eq (testing_values::USE_TOOLTIPS_VALUE));
1129 }
1130
1131 TEST_F(GWDSettingsTest, TestUseTooltipsChangedIsDefault)
1132 {
1133- EXPECT_THAT (gwd_settings_use_tooltips_changed (mSettings.get (),
1134- USE_TOOLTIPS_DEFAULT), IsFalse ());
1135+ EXPECT_FALSE (gwd_settings_use_tooltips_changed (mSettings.get (),
1136+ USE_TOOLTIPS_DEFAULT));
1137 }
1138
1139 TEST_F(GWDSettingsTest, TestBlurChangedTitlebar)
1140 {
1141 EXPECT_CALL (*mGMockNotified, updateDecorations ());
1142- EXPECT_THAT (gwd_settings_blur_changed (mSettings.get (),
1143- testing_values::BLUR_TYPE_TITLEBAR_VALUE.c_str ()), IsTrue ());
1144-
1145- AutoUnsetGValue blurValue (G_TYPE_INT);
1146- GValue &blurGValue = blurValue;
1147-
1148- g_object_get_property (G_OBJECT (mSettings.get ()),
1149- "blur",
1150- &blurGValue);
1151-
1152- EXPECT_THAT (&blurGValue, GValueMatch <gint> (testing_values::BLUR_TYPE_TITLEBAR_INT_VALUE,
1153- g_value_get_int));
1154+ EXPECT_TRUE (gwd_settings_blur_changed (mSettings.get (),
1155+ testing_values::BLUR_TYPE_TITLEBAR_VALUE.c_str ()));
1156+
1157+ EXPECT_THAT (gwd_settings_get_blur_type (mSettings.get ()),
1158+ Eq (testing_values::BLUR_TYPE_TITLEBAR_INT_VALUE));
1159 }
1160
1161 TEST_F(GWDSettingsTest, TestBlurChangedAll)
1162 {
1163 EXPECT_CALL (*mGMockNotified, updateDecorations ());
1164- EXPECT_THAT (gwd_settings_blur_changed (mSettings.get (),
1165- testing_values::BLUR_TYPE_ALL_VALUE.c_str ()), IsTrue ());
1166-
1167- AutoUnsetGValue blurValue (G_TYPE_INT);
1168- GValue &blurGValue = blurValue;
1169-
1170- g_object_get_property (G_OBJECT (mSettings.get ()),
1171- "blur",
1172- &blurGValue);
1173-
1174- EXPECT_THAT (&blurGValue, GValueMatch <gint> (testing_values::BLUR_TYPE_ALL_INT_VALUE,
1175- g_value_get_int));
1176+ EXPECT_TRUE (gwd_settings_blur_changed (mSettings.get (),
1177+ testing_values::BLUR_TYPE_ALL_VALUE.c_str ()));
1178+
1179+ EXPECT_THAT (gwd_settings_get_blur_type (mSettings.get ()),
1180+ Eq (testing_values::BLUR_TYPE_ALL_INT_VALUE));
1181 }
1182
1183 TEST_F(GWDSettingsTest, TestBlurChangedNone)
1184 {
1185- EXPECT_THAT (gwd_settings_blur_changed (mSettings.get (),
1186- testing_values::BLUR_TYPE_NONE_VALUE.c_str ()), IsFalse ());
1187-
1188- AutoUnsetGValue blurValue (G_TYPE_INT);
1189- GValue &blurGValue = blurValue;
1190-
1191- g_object_get_property (G_OBJECT (mSettings.get ()),
1192- "blur",
1193- &blurGValue);
1194-
1195- EXPECT_THAT (&blurGValue, GValueMatch <gint> (testing_values::BLUR_TYPE_NONE_INT_VALUE,
1196- g_value_get_int));
1197+ EXPECT_FALSE (gwd_settings_blur_changed (mSettings.get (),
1198+ testing_values::BLUR_TYPE_NONE_VALUE.c_str ()));
1199+
1200+ EXPECT_THAT (gwd_settings_get_blur_type (mSettings.get ()),
1201+ Eq (testing_values::BLUR_TYPE_NONE_INT_VALUE));
1202 }
1203
1204 TEST_F(GWDSettingsTest, TestBlurSetCommandLine)
1205@@ -553,62 +365,44 @@
1206 gint blurType = testing_values::BLUR_TYPE_ALL_INT_VALUE;
1207
1208 mSettings.reset (gwd_settings_new (blurType, NULL),
1209- boost::bind (gwd_settings_unref, _1));
1210-
1211- EXPECT_THAT (gwd_settings_blur_changed (mSettings.get (),
1212- testing_values::BLUR_TYPE_NONE_VALUE.c_str ()), IsFalse ());
1213-
1214- AutoUnsetGValue blurValue (G_TYPE_INT);
1215- GValue &blurGValue = blurValue;
1216-
1217- g_object_get_property (G_OBJECT (mSettings.get ()),
1218- "blur",
1219- &blurGValue);
1220-
1221- EXPECT_THAT (&blurGValue, GValueMatch <gint> (testing_values::BLUR_TYPE_ALL_INT_VALUE,
1222- g_value_get_int));
1223+ boost::bind (gwd_settings_unref, _1));
1224+
1225+ EXPECT_FALSE (gwd_settings_blur_changed (mSettings.get (),
1226+ testing_values::BLUR_TYPE_NONE_VALUE.c_str ()));
1227+
1228+ EXPECT_THAT (gwd_settings_get_blur_type (mSettings.get ()), Eq (blurType));
1229 }
1230
1231 TEST_F(GWDSettingsTest, TestMetacityThemeChanged)
1232 {
1233 EXPECT_CALL (*mGMockNotified, updateMetacityTheme ());
1234 EXPECT_CALL (*mGMockNotified, updateDecorations ());
1235- EXPECT_THAT (gwd_settings_metacity_theme_changed (mSettings.get (),
1236+ EXPECT_TRUE (gwd_settings_metacity_theme_changed (mSettings.get (),
1237 testing_values::USE_METACITY_THEME_VALUE,
1238- testing_values::METACITY_THEME_VALUE.c_str ()), IsTrue ());
1239-
1240- AutoUnsetGValue metacityThemeValue (G_TYPE_STRING);
1241- GValue &metacityThemeGValue = metacityThemeValue;
1242-
1243- g_object_get_property (G_OBJECT (mSettings.get ()),
1244- "metacity-theme",
1245- &metacityThemeGValue);
1246-
1247- EXPECT_THAT (&metacityThemeGValue, GValueMatch <std::string> (testing_values::METACITY_THEME_VALUE,
1248- g_value_get_string));
1249+ testing_values::METACITY_THEME_VALUE.c_str ()));
1250+
1251+ EXPECT_THAT (gwd_settings_get_metacity_theme (mSettings.get ()),
1252+ IsStringsEqual (testing_values::METACITY_THEME_VALUE.c_str ()));
1253 }
1254
1255 TEST_F(GWDSettingsTest, TestMetacityThemeChangedNoUseMetacityTheme)
1256 {
1257+ const gchar *metacityTheme = NULL;
1258+
1259 EXPECT_CALL (*mGMockNotified, updateMetacityTheme ());
1260 EXPECT_CALL (*mGMockNotified, updateDecorations ());
1261- EXPECT_THAT (gwd_settings_metacity_theme_changed (mSettings.get (), FALSE, NULL), IsTrue ());
1262-
1263- AutoUnsetGValue metacityThemeValue (G_TYPE_STRING);
1264- GValue &metacityThemeGValue = metacityThemeValue;
1265-
1266- g_object_get_property (G_OBJECT (mSettings.get ()),
1267- "metacity-theme",
1268- &metacityThemeGValue);
1269-
1270- EXPECT_THAT (&metacityThemeGValue, GValueMatch <const gchar *> (NULL, g_value_get_string));
1271+ EXPECT_TRUE (gwd_settings_metacity_theme_changed (mSettings.get (), FALSE,
1272+ METACITY_THEME_DEFAULT));
1273+
1274+ EXPECT_THAT (gwd_settings_get_metacity_theme (mSettings.get ()),
1275+ IsStringsEqual (metacityTheme));
1276 }
1277
1278 TEST_F(GWDSettingsTest, TestMetacityThemeChangedIsDefault)
1279 {
1280- EXPECT_THAT (gwd_settings_metacity_theme_changed (mSettings.get (),
1281- testing_values::USE_METACITY_THEME_VALUE,
1282- METACITY_THEME_DEFAULT), IsFalse ());
1283+ EXPECT_FALSE (gwd_settings_metacity_theme_changed (mSettings.get (),
1284+ testing_values::USE_METACITY_THEME_VALUE,
1285+ METACITY_THEME_DEFAULT));
1286 }
1287
1288 TEST_F(GWDSettingsTest, TestMetacityThemeSetCommandLine)
1289@@ -616,142 +410,95 @@
1290 const gchar *metacityTheme = "Ambiance";
1291
1292 mSettings.reset (gwd_settings_new (BLUR_TYPE_UNSET, metacityTheme),
1293- boost::bind (gwd_settings_unref, _1));
1294-
1295- EXPECT_THAT (gwd_settings_metacity_theme_changed (mSettings.get (),
1296- testing_values::USE_METACITY_THEME_VALUE,
1297- testing_values::METACITY_THEME_VALUE.c_str ()), IsFalse ());
1298-
1299- AutoUnsetGValue metacityThemeValue (G_TYPE_STRING);
1300- GValue &metacityThemeGValue = metacityThemeValue;
1301-
1302- g_object_get_property (G_OBJECT (mSettings.get ()),
1303- "metacity-theme",
1304- &metacityThemeGValue);
1305-
1306- EXPECT_THAT (&metacityThemeGValue, GValueMatch <std::string> (std::string (metacityTheme),
1307- g_value_get_string));
1308+ boost::bind (gwd_settings_unref, _1));
1309+
1310+ EXPECT_FALSE (gwd_settings_metacity_theme_changed (mSettings.get (),
1311+ testing_values::USE_METACITY_THEME_VALUE,
1312+ testing_values::METACITY_THEME_VALUE.c_str ()));
1313+
1314+ EXPECT_THAT (gwd_settings_get_metacity_theme (mSettings.get ()),
1315+ IsStringsEqual (metacityTheme));
1316 }
1317
1318 TEST_F(GWDSettingsTest, TestMetacityOpacityChanged)
1319 {
1320 EXPECT_CALL (*mGMockNotified, updateDecorations ());
1321- EXPECT_THAT (gwd_settings_opacity_changed (mSettings.get (),
1322+ EXPECT_TRUE (gwd_settings_opacity_changed (mSettings.get (),
1323 testing_values::ACTIVE_OPACITY_VALUE,
1324 testing_values::INACTIVE_OPACITY_VALUE,
1325 testing_values::ACTIVE_SHADE_OPACITY_VALUE,
1326- testing_values::INACTIVE_SHADE_OPACITY_VALUE), IsTrue ());
1327-
1328- AutoUnsetGValue metacityInactiveOpacityValue (G_TYPE_DOUBLE);
1329- AutoUnsetGValue metacityActiveOpacityValue (G_TYPE_DOUBLE);
1330- AutoUnsetGValue metacityInactiveShadeOpacityValue (G_TYPE_BOOLEAN);
1331- AutoUnsetGValue metacityActiveShadeOpacityValue (G_TYPE_BOOLEAN);
1332-
1333- GValue &metacityInactiveOpacityGValue = metacityInactiveOpacityValue;
1334- GValue &metacityActiveOpacityGValue = metacityActiveOpacityValue;
1335- GValue &metacityInactiveShadeOpacityGValue = metacityInactiveShadeOpacityValue;
1336- GValue &metacityActiveShadeOpacityGValue = metacityActiveShadeOpacityValue;
1337-
1338- g_object_get_property (G_OBJECT (mSettings.get ()),
1339- "metacity-inactive-opacity",
1340- &metacityInactiveOpacityGValue);
1341- g_object_get_property (G_OBJECT (mSettings.get ()),
1342- "metacity-active-opacity",
1343- &metacityActiveOpacityGValue);
1344- g_object_get_property (G_OBJECT (mSettings.get ()),
1345- "metacity-inactive-shade-opacity",
1346- &metacityInactiveShadeOpacityGValue);
1347- g_object_get_property (G_OBJECT (mSettings.get ()),
1348- "metacity-active-shade-opacity",
1349- &metacityActiveShadeOpacityGValue);
1350-
1351- EXPECT_THAT (&metacityInactiveOpacityGValue, GValueMatch <gdouble> (testing_values::INACTIVE_OPACITY_VALUE,
1352- g_value_get_double));
1353- EXPECT_THAT (&metacityActiveOpacityGValue, GValueMatch <gdouble> (testing_values::ACTIVE_OPACITY_VALUE,
1354- g_value_get_double));
1355- EXPECT_THAT (&metacityInactiveShadeOpacityGValue, GValueMatch <gboolean> (testing_values::INACTIVE_SHADE_OPACITY_VALUE,
1356- g_value_get_boolean));
1357- EXPECT_THAT (&metacityActiveShadeOpacityGValue, GValueMatch <gboolean> (testing_values::ACTIVE_SHADE_OPACITY_VALUE,
1358- g_value_get_boolean));
1359+ testing_values::INACTIVE_SHADE_OPACITY_VALUE));
1360+
1361+ EXPECT_THAT (gwd_settings_get_metacity_inactive_opacity (mSettings.get ()),
1362+ Eq (testing_values::INACTIVE_OPACITY_VALUE));
1363+
1364+ EXPECT_THAT (gwd_settings_get_metacity_active_opacity (mSettings.get ()),
1365+ Eq (testing_values::ACTIVE_OPACITY_VALUE));
1366+
1367+ EXPECT_THAT (gwd_settings_get_metacity_inactive_shade_opacity (mSettings.get ()),
1368+ Eq (testing_values::INACTIVE_SHADE_OPACITY_VALUE));
1369+
1370+ EXPECT_THAT (gwd_settings_get_metacity_active_shade_opacity (mSettings.get ()),
1371+ Eq (testing_values::ACTIVE_SHADE_OPACITY_VALUE));
1372 }
1373
1374 TEST_F(GWDSettingsTest, TestMetacityOpacityChangedIsDefault)
1375 {
1376- EXPECT_THAT (gwd_settings_opacity_changed (mSettings.get (),
1377- METACITY_ACTIVE_OPACITY_DEFAULT,
1378- METACITY_INACTIVE_OPACITY_DEFAULT,
1379- METACITY_ACTIVE_SHADE_OPACITY_DEFAULT,
1380- METACITY_INACTIVE_SHADE_OPACITY_DEFAULT), IsFalse ());
1381+ EXPECT_FALSE (gwd_settings_opacity_changed (mSettings.get (),
1382+ METACITY_ACTIVE_OPACITY_DEFAULT,
1383+ METACITY_INACTIVE_OPACITY_DEFAULT,
1384+ METACITY_ACTIVE_SHADE_OPACITY_DEFAULT,
1385+ METACITY_INACTIVE_SHADE_OPACITY_DEFAULT));
1386 }
1387
1388 TEST_F(GWDSettingsTest, TestButtonLayoutChanged)
1389 {
1390 EXPECT_CALL (*mGMockNotified, updateMetacityButtonLayout ());
1391 EXPECT_CALL (*mGMockNotified, updateDecorations ());
1392- EXPECT_THAT (gwd_settings_button_layout_changed (mSettings.get (),
1393- testing_values::BUTTON_LAYOUT_VALUE.c_str ()), IsTrue ());
1394-
1395- AutoUnsetGValue buttonLayoutValue (G_TYPE_STRING);
1396- GValue &buttonLayoutGValue = buttonLayoutValue;
1397-
1398- g_object_get_property (G_OBJECT (mSettings.get ()),
1399- "metacity-button-layout",
1400- &buttonLayoutGValue);
1401-
1402- EXPECT_THAT (&buttonLayoutGValue, GValueMatch <std::string> (testing_values::BUTTON_LAYOUT_VALUE,
1403- g_value_get_string));
1404+ EXPECT_TRUE (gwd_settings_button_layout_changed (mSettings.get (),
1405+ testing_values::BUTTON_LAYOUT_VALUE.c_str ()));
1406+
1407+ EXPECT_THAT (gwd_settings_get_metacity_button_layout (mSettings.get ()),
1408+ IsStringsEqual (testing_values::BUTTON_LAYOUT_VALUE.c_str ()));
1409 }
1410
1411 TEST_F(GWDSettingsTest, TestButtonLayoutChangedIsDefault)
1412 {
1413- EXPECT_THAT (gwd_settings_button_layout_changed (mSettings.get (),
1414- METACITY_BUTTON_LAYOUT_DEFAULT), IsFalse ());
1415+ EXPECT_FALSE (gwd_settings_button_layout_changed (mSettings.get (),
1416+ METACITY_BUTTON_LAYOUT_DEFAULT));
1417 }
1418
1419 TEST_F(GWDSettingsTest, TestTitlebarFontChanged)
1420 {
1421 EXPECT_CALL (*mGMockNotified, updateFrames ());
1422 EXPECT_CALL (*mGMockNotified, updateDecorations ());
1423- EXPECT_THAT (gwd_settings_font_changed (mSettings.get (),
1424+ EXPECT_TRUE (gwd_settings_font_changed (mSettings.get (),
1425 testing_values::NO_USE_SYSTEM_FONT_VALUE,
1426- testing_values::TITLEBAR_FONT_VALUE.c_str ()), IsTrue ());
1427-
1428- AutoUnsetGValue fontValue (G_TYPE_STRING);
1429- GValue &fontGValue = fontValue;
1430-
1431- g_object_get_property (G_OBJECT (mSettings.get ()),
1432- "titlebar-font",
1433- &fontGValue);
1434-
1435- EXPECT_THAT (&fontGValue, GValueMatch <std::string> (testing_values::TITLEBAR_FONT_VALUE.c_str (),
1436- g_value_get_string));
1437+ testing_values::TITLEBAR_FONT_VALUE.c_str ()));
1438+
1439+ EXPECT_THAT (gwd_settings_get_titlebar_font (mSettings.get ()),
1440+ IsStringsEqual (testing_values::TITLEBAR_FONT_VALUE.c_str ()));
1441 }
1442
1443 TEST_F(GWDSettingsTest, TestTitlebarFontChangedUseSystemFont)
1444 {
1445+ const gchar *titlebarFont = NULL;
1446+
1447 EXPECT_CALL (*mGMockNotified, updateFrames ());
1448 EXPECT_CALL (*mGMockNotified, updateDecorations ());
1449- EXPECT_THAT (gwd_settings_font_changed (mSettings.get (),
1450+ EXPECT_TRUE (gwd_settings_font_changed (mSettings.get (),
1451 testing_values::USE_SYSTEM_FONT_VALUE,
1452- testing_values::TITLEBAR_FONT_VALUE.c_str ()), IsTrue ());
1453-
1454- AutoUnsetGValue fontValue (G_TYPE_STRING);
1455- GValue &fontGValue = fontValue;
1456-
1457- g_object_get_property (G_OBJECT (mSettings.get ()),
1458- "titlebar-font",
1459- &fontGValue);
1460-
1461- EXPECT_THAT (&fontGValue, GValueMatch <const gchar *> (NULL,
1462- g_value_get_string));
1463+ testing_values::TITLEBAR_FONT_VALUE.c_str ()));
1464+
1465+ EXPECT_THAT (gwd_settings_get_titlebar_font (mSettings.get ()),
1466+ IsStringsEqual (titlebarFont));
1467 }
1468
1469-
1470 TEST_F(GWDSettingsTest, TestTitlebarFontChangedIsDefault)
1471 {
1472- EXPECT_THAT (gwd_settings_font_changed (mSettings.get (),
1473- testing_values::NO_USE_SYSTEM_FONT_VALUE,
1474- TITLEBAR_FONT_DEFAULT), IsFalse ());
1475+ EXPECT_FALSE (gwd_settings_font_changed (mSettings.get (),
1476+ testing_values::NO_USE_SYSTEM_FONT_VALUE,
1477+ TITLEBAR_FONT_DEFAULT));
1478 }
1479
1480 namespace
1481@@ -811,40 +558,17 @@
1482 GetParam ().titlebarAction ().c_str (),
1483 GetParam ().mouseWheelAction ().c_str ());
1484
1485- AutoUnsetGValue doubleClickActionValue (G_TYPE_INT);
1486- AutoUnsetGValue middleClickActionValue (G_TYPE_INT);
1487- AutoUnsetGValue rightClickActionValue (G_TYPE_INT);
1488- AutoUnsetGValue mouseWheelActionValue (G_TYPE_INT);
1489-
1490- GValue &doubleClickActionGValue = doubleClickActionValue;
1491- GValue &middleClickActionGValue = middleClickActionValue;
1492- GValue &rightClickActionGValue = rightClickActionValue;
1493- GValue &mouseWheelActionGValue = mouseWheelActionValue;
1494-
1495- g_object_get_property (G_OBJECT (mSettings.get ()),
1496- "titlebar-double-click-action",
1497- &doubleClickActionGValue);
1498-
1499- g_object_get_property (G_OBJECT (mSettings.get ()),
1500- "titlebar-middle-click-action",
1501- &middleClickActionGValue);
1502-
1503- g_object_get_property (G_OBJECT (mSettings.get ()),
1504- "titlebar-right-click-action",
1505- &rightClickActionGValue);
1506-
1507- g_object_get_property (G_OBJECT (mSettings.get ()),
1508- "mouse-wheel-action",
1509- &mouseWheelActionGValue);
1510-
1511- EXPECT_THAT (&doubleClickActionGValue, GValueMatch <gint> (GetParam ().titlebarActionId (),
1512- g_value_get_int));
1513- EXPECT_THAT (&middleClickActionGValue, GValueMatch <gint> (GetParam ().titlebarActionId (),
1514- g_value_get_int));
1515- EXPECT_THAT (&rightClickActionGValue, GValueMatch <gint> (GetParam ().titlebarActionId (),
1516- g_value_get_int));
1517- EXPECT_THAT (&mouseWheelActionGValue, GValueMatch <gint> (GetParam ().mouseWheelActionId (),
1518- g_value_get_int));
1519+ EXPECT_THAT (gwd_settings_get_titlebar_double_click_action (mSettings.get ()),
1520+ Eq (GetParam ().titlebarActionId ()));
1521+
1522+ EXPECT_THAT (gwd_settings_get_titlebar_middle_click_action (mSettings.get ()),
1523+ Eq (GetParam ().titlebarActionId ()));
1524+
1525+ EXPECT_THAT (gwd_settings_get_titlebar_right_click_action (mSettings.get ()),
1526+ Eq (GetParam ().titlebarActionId ()));
1527+
1528+ EXPECT_THAT (gwd_settings_get_mouse_wheel_action (mSettings.get ()),
1529+ Eq (GetParam ().mouseWheelActionId ()));
1530 }
1531
1532 INSTANTIATE_TEST_CASE_P (MouseActions, GWDSettingsTestClickActions,
1533
1534=== modified file 'gtk/window-decorator/wnck.c'
1535--- gtk/window-decorator/wnck.c 2016-05-21 20:35:23 +0000
1536+++ gtk/window-decorator/wnck.c 2016-05-21 20:35:24 +0000
1537@@ -24,6 +24,7 @@
1538 */
1539
1540 #include "gtk-window-decorator.h"
1541+#include "gwd-settings.h"
1542
1543 static void
1544 draw_window_decoration (decor_t *decor)
1545@@ -190,8 +191,7 @@
1546 gdkscreen = gdk_display_get_default_screen (gdkdisplay);
1547
1548 GWDSettings *settings = gwd_theme_get_settings (gwd_theme);
1549- const gchar *titlebar_font = NULL;
1550- g_object_get (settings, "titlebar-font", &titlebar_font, NULL);
1551+ const gchar *titlebar_font = gwd_settings_get_titlebar_font (settings);
1552
1553 gwd_frames_foreach (set_frames_scales, (gpointer) titlebar_font);
1554

Subscribers

People subscribed via source and target branches