Merge lp:~3v1n0/unity-control-center/applications-scaling-selector into lp:unity-control-center
- applications-scaling-selector
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Sebastien Bacher |
Approved revision: | 12783 |
Merged at revision: | 12767 |
Proposed branch: | lp:~3v1n0/unity-control-center/applications-scaling-selector |
Merge into: | lp:unity-control-center |
Diff against target: |
934 lines (+456/-211) 2 files modified
panels/display/cc-display-panel.c (+166/-15) panels/display/display-capplet.ui (+290/-196) |
To merge this branch: | bzr merge lp:~3v1n0/unity-control-center/applications-scaling-selector |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Sebastien Bacher | Approve | ||
PS Jenkins bot (community) | continuous-integration | Approve | |
Matthew Paul Thomas (community) | design | Approve | |
Eleni Maria Stea (community) | Approve | ||
Review via email: mp+212114@code.launchpad.net |
Commit message
Display: Use 2-columns style (Monitor/General options), add more UI scaling options
Description of the change
Add a combo box to define which monitor should be used to scale applications, or if using the min/max values available. Also redesign the display panel to use a 2-columns style.
Settings are defined in lp:~3v1n0/unity/scale-factor-binding/+merge/212076
New look: http://
- 12768. By Marco Trevisan (Treviño)
-
Display: remove unneeded variable
- 12769. By Marco Trevisan (Treviño)
-
Display: fix padding
PS Jenkins bot (ps-jenkins) wrote : | # |
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:12769
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Eleni Maria Stea (hikiko) wrote : | # |
It works fine for me :) Approved!
Eleni Maria Stea (hikiko) wrote : | # |
+I like the pixbuf you used :D
- 12770. By Marco Trevisan (Treviño)
-
Display: move monitor name inside table
- 12771. By Marco Trevisan (Treviño)
-
Display: redesign the UI content to match new guidelines
- 12772. By Marco Trevisan (Treviño)
-
Display: properly align combo and toggle boxes
- 12773. By Marco Trevisan (Treviño)
-
Display: don't expand and fill by default, and put the view on center
- 12774. By Marco Trevisan (Treviño)
-
Display: use an GtkAlignment to control the UI scale slider size
- 12775. By Marco Trevisan (Treviño)
-
Display: remove useless left padding
- 12776. By Marco Trevisan (Treviño)
-
Display: no need to use bold markup text, we do that alredy in UI file
- 12777. By Marco Trevisan (Treviño)
-
Display: improve wording for the display content scale selector
- 12778. By Marco Trevisan (Treviño)
-
Display: set the ui scale monitor selector insensitive when mirroring the displays
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:12778
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 12779. By Marco Trevisan (Treviño)
-
Display: show scale values on the bottom
- 12780. By Marco Trevisan (Treviño)
-
Display: align the scale elements to the left
- 12781. By Marco Trevisan (Treviño)
-
Display: change wording of combo box items, again...
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:12781
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 12782. By Marco Trevisan (Treviño)
-
Display: new scaling wording, again... Thanks to mpt :)
- 12783. By Marco Trevisan (Treviño)
-
Display: make the monitor scale not to resize its height
Matthew Paul Thomas (mpt) wrote : | # |
Design approved from screenshots. Thanks Marco.
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:12782
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:12783
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Sebastien Bacher (seb128) wrote : | # |
Thanks, that looks mostly fine to me, some issues we might need to address later:
- the dialog resize horitontally when selecting monitors (happening at least in french local, seems like the horizontal space is used so when the monitor name changing leads to resizes)
- it's a bit weird to have settings that apply directly and some that need to be validated, but that's not new
- using the scale slider might put you in a situation where you can't get back to the control to undo your changes (if you are not a tech user who knows how to alt-click-dnd move windows), ideally the scaling should be undone if closing the dialog without confirmation or something
None of those are blockers for landing that mp, but things we might need to fix before release
Iain Lane (laney) wrote : | # |
I think the instant apply question is something that should be resolved for Trusty. The other things are less important bugs that impact the UX in a more minor way, but it'd be good to fix them.
Preview Diff
1 | === modified file 'panels/display/cc-display-panel.c' |
2 | --- panels/display/cc-display-panel.c 2014-02-26 15:58:33 +0000 |
3 | +++ panels/display/cc-display-panel.c 2014-03-25 15:36:35 +0000 |
4 | @@ -60,6 +60,9 @@ |
5 | #define UNITY_GSETTINGS_PATH "/org/compiz/profiles/unity/plugins/unityshell/" |
6 | #define UNITY_LAUNCHER_ALL_MONITORS_KEY "num-launchers" |
7 | #define UNITY_STICKY_EDGE_KEY "launcher-capture-mouse" |
8 | +#define UNITY_UI_GSETTINGS_SCHEMA "com.canonical.Unity.Interface" |
9 | +#define UNITY_UI_SCALE_FACTOR_MONITOR "app-scale-factor-monitor" |
10 | +#define UNITY_UI_SCALE_FALLBACK_TO_MAX "app-fallback-to-maximum-scale-factor" |
11 | #define UNITY2D_GSETTINGS_MAIN "com.canonical.Unity2d" |
12 | #define UNITY2D_GSETTINGS_LAUNCHER "com.canonical.Unity2d.Launcher" |
13 | |
14 | @@ -87,6 +90,7 @@ |
15 | |
16 | GSettings *clock_settings; |
17 | GSettings *unity_settings; |
18 | + GSettings *unity_ui_settings; |
19 | GSettings *unity2d_settings_main; |
20 | GSettings *unity2d_settings_launcher; |
21 | GSettings *desktop_settings; |
22 | @@ -140,6 +144,7 @@ |
23 | GObjectConstructParam *properties); |
24 | static void on_screen_changed (GnomeRRScreen *scr, gpointer data); |
25 | static void refresh_unity_launcher_placement (CcDisplayPanel *self); |
26 | +static void refresh_unity_monitor_scale (CcDisplayPanel *self); |
27 | static gboolean unity_launcher_on_all_monitors (GSettings *settings); |
28 | |
29 | static void |
30 | @@ -196,6 +201,8 @@ |
31 | g_object_unref (self->priv->unity2d_settings_launcher); |
32 | if (self->priv->unity_settings != NULL) |
33 | g_object_unref (self->priv->unity_settings); |
34 | + if (self->priv->unity_ui_settings != NULL) |
35 | + g_object_unref (self->priv->unity_ui_settings); |
36 | if (self->priv->desktop_settings != NULL) |
37 | g_object_unref (self->priv->desktop_settings); |
38 | |
39 | @@ -312,7 +319,10 @@ |
40 | select_current_output_from_dialog_position (self); |
41 | |
42 | if (is_unity_session ()) |
43 | - refresh_unity_launcher_placement (self); |
44 | + { |
45 | + refresh_unity_launcher_placement (self); |
46 | + refresh_unity_monitor_scale (self); |
47 | + } |
48 | } |
49 | |
50 | static void |
51 | @@ -709,6 +719,7 @@ |
52 | /* set inactive the launcher placement choice */ |
53 | gtk_widget_set_sensitive (WID ("launcher_placement_combo"), !mirror_is_active); |
54 | gtk_widget_set_sensitive (WID ("stickyedge_switch"), !mirror_is_active); |
55 | + gtk_widget_set_sensitive (WID ("ui_scale_monitor_combo"), !mirror_is_active); |
56 | |
57 | g_signal_handlers_unblock_by_func (self->priv->clone_checkbox, G_CALLBACK (on_clone_changed), self); |
58 | } |
59 | @@ -729,31 +740,33 @@ |
60 | static void |
61 | rebuild_current_monitor_label (CcDisplayPanel *self) |
62 | { |
63 | - char *str, *tmp; |
64 | + gchar *str; |
65 | GdkRGBA color; |
66 | gboolean use_color; |
67 | |
68 | if (self->priv->current_output) |
69 | { |
70 | if (gnome_rr_config_get_clone (self->priv->current_configuration)) |
71 | - tmp = mirror_monitor_name (); |
72 | + { |
73 | + gchar *str = mirror_monitor_name (); |
74 | + gtk_label_set_text (GTK_LABEL (self->priv->current_monitor_label), str); |
75 | + g_free (str); |
76 | + } |
77 | else |
78 | - tmp = g_strdup (gnome_rr_output_info_get_display_name (self->priv->current_output)); |
79 | + { |
80 | + str = gnome_rr_output_info_get_display_name (self->priv->current_output); |
81 | + gtk_label_set_text (GTK_LABEL (self->priv->current_monitor_label), str); |
82 | + } |
83 | |
84 | - str = g_strdup_printf ("<b>%s</b>", tmp); |
85 | cc_rr_labeler_get_rgba_for_output (self->priv->labeler, self->priv->current_output, &color); |
86 | use_color = TRUE; |
87 | - g_free (tmp); |
88 | } |
89 | else |
90 | { |
91 | - str = g_strdup_printf ("<b>%s</b>", _("Monitor")); |
92 | + gtk_label_set_text (GTK_LABEL (self->priv->current_monitor_label), _("Monitor")); |
93 | use_color = FALSE; |
94 | } |
95 | |
96 | - gtk_label_set_markup (GTK_LABEL (self->priv->current_monitor_label), str); |
97 | - g_free (str); |
98 | - |
99 | if (use_color) |
100 | { |
101 | GdkRGBA black = { 0, 0, 0, 1.0 }; |
102 | @@ -953,6 +966,7 @@ |
103 | rebuild_rotation_combo (self); |
104 | rebuild_ui_scale (self); |
105 | refresh_unity_launcher_placement (self); |
106 | + refresh_unity_monitor_scale (self); |
107 | |
108 | self->priv->ignore_gui_changes = FALSE; |
109 | } |
110 | @@ -2856,6 +2870,65 @@ |
111 | gtk_combo_box_set_active (GTK_COMBO_BOX (launcher_placement_combo), index_of_primary_screen); |
112 | } |
113 | |
114 | +static void |
115 | +refresh_unity_monitor_scale (CcDisplayPanel *self) |
116 | +{ |
117 | + GtkWidget *ui_scale_monitor_combo = WID ("ui_scale_monitor_combo"); |
118 | + GtkListStore *liststore; |
119 | + GtkTreeIter iter; |
120 | + GList *connected_outputs = NULL; |
121 | + GList *list; |
122 | + gchar *target_monitor = g_settings_get_string (self->priv->unity_ui_settings, UNITY_UI_SCALE_FACTOR_MONITOR); |
123 | + gint target_monitor_idx = -1; |
124 | + gint i; |
125 | + |
126 | + liststore = (GtkListStore *) gtk_builder_get_object (self->priv->builder, "available_ui_scale_monitor_store"); |
127 | + gtk_list_store_clear (liststore); |
128 | + |
129 | + connected_outputs = list_connected_outputs (self, NULL, NULL); |
130 | + for (list = connected_outputs, i = 0; list != NULL; list = list->next) |
131 | + { |
132 | + gchar *monitor_name; |
133 | + GdkPixbuf *monitor_pixbuf; |
134 | + GnomeRROutputInfo *output = list->data; |
135 | + |
136 | + if (!gnome_rr_output_info_is_active (output)) |
137 | + continue; |
138 | + |
139 | + gtk_list_store_append (liststore, &iter); |
140 | + monitor_name = g_strdup (gnome_rr_output_info_get_display_name (output)); |
141 | + monitor_pixbuf = get_monitor_pixbuf (self, output); |
142 | + |
143 | + gtk_list_store_set (liststore, &iter, 0, monitor_pixbuf, 1, monitor_name, -1); |
144 | + |
145 | + /* select it if primary and only one launcher */ |
146 | + if (g_strcmp0 (gnome_rr_output_info_get_name (output), target_monitor) == 0) |
147 | + target_monitor_idx = i; |
148 | + i++; |
149 | + |
150 | + g_object_unref (monitor_pixbuf); |
151 | + g_free (monitor_name); |
152 | + } |
153 | + |
154 | + gtk_list_store_append (liststore, &iter); |
155 | + gtk_list_store_set (liststore, &iter, 0, NULL, 1, _("Display with largest controls"), -1); |
156 | + gint max_idx = i++; |
157 | + |
158 | + gtk_list_store_append (liststore, &iter); |
159 | + gtk_list_store_set (liststore, &iter, 0, NULL, 1, _("Display with smallest controls"), -1); |
160 | + gint min_idx = i++; |
161 | + |
162 | + if (target_monitor_idx < 0) |
163 | + { |
164 | + gboolean fallback_max_scale = g_settings_get_boolean (self->priv->unity_ui_settings, UNITY_UI_SCALE_FALLBACK_TO_MAX); |
165 | + target_monitor_idx = fallback_max_scale ? max_idx : min_idx; |
166 | + } |
167 | + |
168 | + gtk_combo_box_set_active (GTK_COMBO_BOX (ui_scale_monitor_combo), target_monitor_idx); |
169 | + |
170 | + g_free (target_monitor); |
171 | +} |
172 | + |
173 | static gboolean |
174 | switcher_set_to_launcher_on_all_monitors (CcDisplayPanel *self) |
175 | { |
176 | @@ -2924,6 +2997,64 @@ |
177 | } |
178 | |
179 | static void |
180 | +on_ui_scale_monitor_combo_setting_changed (GSettings* settings, |
181 | + guint key, |
182 | + CcDisplayPanel *self) |
183 | +{ |
184 | + refresh_unity_monitor_scale (self); |
185 | +} |
186 | + |
187 | +static void |
188 | +on_ui_scale_monitor_combo_changed (GtkComboBox *combo, CcDisplayPanel *self) |
189 | +{ |
190 | + gint active = gtk_combo_box_get_active (combo); |
191 | + gint i; |
192 | + gint index_on_combo = 0; |
193 | + gchar *scale_monitor = NULL; |
194 | + |
195 | + if (active < 0) |
196 | + return; |
197 | + |
198 | + GnomeRROutputInfo **outputs = gnome_rr_config_get_outputs (self->priv->current_configuration); |
199 | + |
200 | + for (i = 0; outputs[i] != NULL; ++i) |
201 | + { |
202 | + GnomeRROutputInfo *output = outputs[i]; |
203 | + if (!gnome_rr_output_info_is_active (output)) |
204 | + continue; |
205 | + |
206 | + if (active == index_on_combo) |
207 | + { |
208 | + scale_monitor = g_strdup (gnome_rr_output_info_get_name (output)); |
209 | + break; |
210 | + } |
211 | + index_on_combo++; |
212 | + } |
213 | + |
214 | + if (!scale_monitor) |
215 | + { |
216 | + scale_monitor = g_strdup(""); |
217 | + |
218 | + if (active >= index_on_combo) |
219 | + { |
220 | + gboolean use_max_scaled_monitor = (active == index_on_combo); |
221 | + gboolean fallback_setting = g_settings_get_boolean (self->priv->unity_ui_settings, UNITY_UI_SCALE_FALLBACK_TO_MAX); |
222 | + |
223 | + if (fallback_setting != use_max_scaled_monitor) |
224 | + g_settings_set_boolean (self->priv->unity_ui_settings, UNITY_UI_SCALE_FALLBACK_TO_MAX, use_max_scaled_monitor); |
225 | + } |
226 | + } |
227 | + |
228 | + gchar *current_setting = g_settings_get_string (self->priv->unity_ui_settings, UNITY_UI_SCALE_FACTOR_MONITOR); |
229 | + |
230 | + if (g_strcmp0 (current_setting, scale_monitor) != 0) |
231 | + g_settings_set_string (self->priv->unity_ui_settings, UNITY_UI_SCALE_FACTOR_MONITOR, scale_monitor); |
232 | + |
233 | + g_free (current_setting); |
234 | + g_free (scale_monitor); |
235 | +} |
236 | + |
237 | +static void |
238 | setup_unity_settings (CcDisplayPanel *self) |
239 | { |
240 | GSettingsSchema *schema; |
241 | @@ -2943,7 +3074,14 @@ |
242 | g_settings_schema_unref (schema); |
243 | } |
244 | |
245 | - if (!self->priv->unity_settings) |
246 | + schema = g_settings_schema_source_lookup (g_settings_schema_source_get_default (), UNITY_UI_GSETTINGS_SCHEMA, TRUE); |
247 | + if (schema) |
248 | + { |
249 | + self->priv->unity_ui_settings = g_settings_new (UNITY_UI_GSETTINGS_SCHEMA); |
250 | + g_settings_schema_unref (schema); |
251 | + } |
252 | + |
253 | + if (!self->priv->unity_settings || !self->priv->unity_ui_settings) |
254 | return; |
255 | |
256 | GtkWidget *sticky_edge_switch = WID ("stickyedge_switch"); |
257 | @@ -2954,9 +3092,16 @@ |
258 | stickyedge_widget_refresh (GTK_SWITCH (sticky_edge_switch), self->priv->unity_settings); |
259 | |
260 | g_signal_connect (G_OBJECT (WID ("launcher_placement_combo")), "changed", |
261 | - G_CALLBACK (on_launcher_placement_combo_changed), self); |
262 | + G_CALLBACK (on_launcher_placement_combo_changed), self); |
263 | g_signal_connect (self->priv->unity_settings, "changed::" UNITY_LAUNCHER_ALL_MONITORS_KEY, |
264 | G_CALLBACK (ext_launcher_placement_changed_callback), self); |
265 | + |
266 | + g_signal_connect (G_OBJECT (WID ("ui_scale_monitor_combo")), "changed", |
267 | + G_CALLBACK (on_ui_scale_monitor_combo_changed), self); |
268 | + g_signal_connect (self->priv->unity_ui_settings, "changed::" UNITY_UI_SCALE_FACTOR_MONITOR, |
269 | + G_CALLBACK (on_ui_scale_monitor_combo_setting_changed), self); |
270 | + g_signal_connect (self->priv->unity_ui_settings, "changed::" UNITY_UI_SCALE_FALLBACK_TO_MAX, |
271 | + G_CALLBACK (on_ui_scale_monitor_combo_setting_changed), self); |
272 | } |
273 | |
274 | static void |
275 | @@ -2976,7 +3121,8 @@ |
276 | CcDisplayPanel *self; |
277 | CcShell *shell; |
278 | GtkWidget *toplevel; |
279 | - gchar *objects[] = {"display-panel", "available_launcher_placement_store", NULL}; |
280 | + gchar *objects[] = {"display-panel", "available_launcher_placement_store", |
281 | + "available_ui_scale_monitor_store", NULL}; |
282 | |
283 | obj = G_OBJECT_CLASS (cc_display_panel_parent_class)->constructor (gtype, n_properties, properties); |
284 | self = CC_DISPLAY_PANEL (obj); |
285 | @@ -3069,8 +3215,6 @@ |
286 | |
287 | gtk_container_add (GTK_CONTAINER (align), self->priv->area); |
288 | |
289 | - on_screen_changed (self->priv->screen, self); |
290 | - |
291 | g_signal_connect_swapped (WID ("apply_button"), |
292 | "clicked", G_CALLBACK (apply), self); |
293 | |
294 | @@ -3084,11 +3228,18 @@ |
295 | gtk_widget_hide (WID ("sticky_edge_label")); |
296 | gtk_widget_hide (WID ("launcher_placement_combo")); |
297 | gtk_widget_hide (WID ("stickyedge_switch")); |
298 | + gtk_widget_hide (WID ("ui_scale_separator")); |
299 | + gtk_widget_hide (WID ("ui_scale_label")); |
300 | + gtk_widget_hide (WID ("ui_scale")); |
301 | + gtk_widget_hide (WID ("ui_scale_monitor_label")); |
302 | + gtk_widget_hide (WID ("ui_scale_monitor_combo")); |
303 | } |
304 | |
305 | gtk_widget_show (self->priv->panel); |
306 | gtk_container_add (GTK_CONTAINER (self), self->priv->panel); |
307 | |
308 | + on_screen_changed (self->priv->screen, self); |
309 | + |
310 | return obj; |
311 | } |
312 | |
313 | |
314 | === modified file 'panels/display/display-capplet.ui' |
315 | --- panels/display/display-capplet.ui 2014-03-12 17:29:59 +0000 |
316 | +++ panels/display/display-capplet.ui 2014-03-25 15:36:35 +0000 |
317 | @@ -9,6 +9,14 @@ |
318 | <column type="gchararray"/> |
319 | </columns> |
320 | </object> |
321 | + <object class="GtkListStore" id="available_ui_scale_monitor_store"> |
322 | + <columns> |
323 | + <!-- column-name MONITOR_PREVIEW --> |
324 | + <column type="GdkPixbuf"/> |
325 | + <!-- column-name LAUNCHER_PLACEMENT_NAME --> |
326 | + <column type="gchararray"/> |
327 | + </columns> |
328 | + </object> |
329 | <!-- interface-naming-policy toplevel-contextual --> |
330 | <object class="GtkWindow" id="window1"> |
331 | <property name="can_focus">False</property> |
332 | @@ -42,66 +50,74 @@ |
333 | <property name="visible">True</property> |
334 | <property name="can_focus">False</property> |
335 | <property name="spacing">12</property> |
336 | + <property name="halign">center</property> |
337 | <child> |
338 | - <object class="GtkHBox" id="hbox3"> |
339 | + <object class="GtkHBox" id="mirror_hbox"> |
340 | <property name="visible">True</property> |
341 | <property name="can_focus">False</property> |
342 | - <property name="spacing">12</property> |
343 | + <property name="halign">center</property> |
344 | <child> |
345 | - <object class="GtkEventBox" id="current_monitor_event_box"> |
346 | + <object class="GtkCheckButton" id="clone_checkbox"> |
347 | <property name="visible">True</property> |
348 | - <property name="can_focus">False</property> |
349 | + <property name="xalign">0.5</property> |
350 | + <property name="draw_indicator">True</property> |
351 | <child> |
352 | - <object class="GtkLabel" id="current_monitor_label"> |
353 | + <object class="GtkHBox" id="clone_checkbox_label_hbox"> |
354 | <property name="visible">True</property> |
355 | <property name="can_focus">False</property> |
356 | - <property name="xalign">0</property> |
357 | - <property name="xpad">10</property> |
358 | - <property name="ypad">5</property> |
359 | - <property name="label" translatable="yes">Monitor</property> |
360 | - <attributes> |
361 | - <attribute name="weight" value="bold"/> |
362 | - </attributes> |
363 | - </object> |
364 | - </child> |
365 | - </object> |
366 | - <packing> |
367 | - <property name="expand">False</property> |
368 | - <property name="fill">False</property> |
369 | - <property name="position">0</property> |
370 | - </packing> |
371 | - </child> |
372 | - <child> |
373 | - <object class="GtkHBox" id="hbox2"> |
374 | - <property name="visible">True</property> |
375 | - <property name="can_focus">False</property> |
376 | - <property name="spacing">12</property> |
377 | - <child> |
378 | - <object class="GtkSwitch" id="monitor_switch"> |
379 | - <property name="visible">True</property> |
380 | - <property name="can_focus">True</property> |
381 | - <property name="active">True</property> |
382 | - </object> |
383 | - <packing> |
384 | - <property name="expand">False</property> |
385 | - <property name="fill">False</property> |
386 | - <property name="position">0</property> |
387 | - </packing> |
388 | - </child> |
389 | - </object> |
390 | - <packing> |
391 | - <property name="expand">False</property> |
392 | - <property name="fill">False</property> |
393 | - <property name="pack_type">end</property> |
394 | - <property name="position">1</property> |
395 | + <property name="halign">center</property> |
396 | + <child> |
397 | + <object class="GtkLabel" id="clone_checkbox_label"> |
398 | + <property name="visible">True</property> |
399 | + <property name="can_focus">True</property> |
400 | + <property name="receives_default">False</property> |
401 | + <property name="use_underline">True</property> |
402 | + <property name="label" translatable="yes" comments="Note that mirror is a verb in this string">_Mirror displays</property> |
403 | + </object> |
404 | + </child> |
405 | + <child> |
406 | + <!-- This is a workaround to not re-translate the warning, to be fixed later. --> |
407 | + <object class="GtkLabel" id="clone_res_warning_parentesis_open"> |
408 | + <property name="margin_left">2</property> |
409 | + <property name="visible">True</property> |
410 | + <property name="can_focus">False</property> |
411 | + <property name="label" translatable="no">(</property> |
412 | + <attributes> |
413 | + <attribute name="style" value="italic"/> |
414 | + </attributes> |
415 | + </object> |
416 | + </child> |
417 | + <child> |
418 | + <object class="GtkLabel" id="clone_resolution_warning_label"> |
419 | + <property name="visible">True</property> |
420 | + <property name="can_focus">False</property> |
421 | + <property name="xalign">0</property> |
422 | + <property name="label" translatable="yes">Note: may limit resolution options</property> |
423 | + <attributes> |
424 | + <attribute name="style" value="italic"/> |
425 | + </attributes> |
426 | + </object> |
427 | + </child> |
428 | + <child> |
429 | + <!-- This is a workaround to not re-translate the warning, to be fixed later. --> |
430 | + <object class="GtkLabel" id="clone_res_warning_parentesis_open_close"> |
431 | + <property name="visible">True</property> |
432 | + <property name="can_focus">False</property> |
433 | + <property name="label" translatable="no">)</property> |
434 | + <attributes> |
435 | + <attribute name="style" value="italic"/> |
436 | + </attributes> |
437 | + </object> |
438 | + </child> |
439 | + </object> |
440 | + </child> |
441 | + </object> |
442 | + <packing> |
443 | + <property name="expand">False</property> |
444 | + <property name="fill">False</property> |
445 | </packing> |
446 | </child> |
447 | </object> |
448 | - <packing> |
449 | - <property name="expand">False</property> |
450 | - <property name="fill">False</property> |
451 | - <property name="position">0</property> |
452 | - </packing> |
453 | </child> |
454 | <child> |
455 | <object class="GtkAlignment" id="alignment1"> |
456 | @@ -109,16 +125,74 @@ |
457 | <property name="can_focus">False</property> |
458 | <property name="xalign">0</property> |
459 | <property name="yalign">0</property> |
460 | - <property name="left_padding">12</property> |
461 | <child> |
462 | <object class="GtkTable" id="table1"> |
463 | <property name="visible">True</property> |
464 | <property name="can_focus">False</property> |
465 | - <property name="n_rows">6</property> |
466 | - <property name="n_columns">2</property> |
467 | <property name="column_spacing">12</property> |
468 | <property name="row_spacing">6</property> |
469 | <child> |
470 | + <object class="GtkHBox" id="hbox3"> |
471 | + <property name="visible">True</property> |
472 | + <property name="can_focus">False</property> |
473 | + <property name="spacing">12</property> |
474 | + <child> |
475 | + <object class="GtkEventBox" id="current_monitor_event_box"> |
476 | + <property name="visible">True</property> |
477 | + <property name="can_focus">False</property> |
478 | + <child> |
479 | + <object class="GtkLabel" id="current_monitor_label"> |
480 | + <property name="visible">True</property> |
481 | + <property name="can_focus">False</property> |
482 | + <property name="xalign">0</property> |
483 | + <property name="ypad">5</property> |
484 | + <property name="label" translatable="yes">Monitor</property> |
485 | + <attributes> |
486 | + <attribute name="weight" value="bold"/> |
487 | + </attributes> |
488 | + </object> |
489 | + </child> |
490 | + </object> |
491 | + <packing> |
492 | + <property name="expand">False</property> |
493 | + <property name="fill">False</property> |
494 | + <property name="position">0</property> |
495 | + </packing> |
496 | + </child> |
497 | + <child> |
498 | + <object class="GtkHBox" id="hbox2"> |
499 | + <property name="visible">True</property> |
500 | + <property name="can_focus">False</property> |
501 | + <property name="spacing">12</property> |
502 | + <property name="valign">center</property> |
503 | + <child> |
504 | + <object class="GtkSwitch" id="monitor_switch"> |
505 | + <property name="visible">True</property> |
506 | + <property name="can_focus">True</property> |
507 | + <property name="active">True</property> |
508 | + </object> |
509 | + <packing> |
510 | + <property name="expand">False</property> |
511 | + <property name="fill">False</property> |
512 | + <property name="position">0</property> |
513 | + </packing> |
514 | + </child> |
515 | + </object> |
516 | + <packing> |
517 | + <property name="expand">False</property> |
518 | + <property name="fill">False</property> |
519 | + <property name="pack_type">start</property> |
520 | + <property name="position">1</property> |
521 | + </packing> |
522 | + </child> |
523 | + </object> |
524 | + <packing> |
525 | + <property name="right_attach">2</property> |
526 | + <property name="x_options">GTK_FILL</property> |
527 | + <property name="y_options"/> |
528 | + </packing> |
529 | + </child> |
530 | + <child> |
531 | <object class="GtkLabel" id="label2"> |
532 | <property name="visible">True</property> |
533 | <property name="can_focus">False</property> |
534 | @@ -131,6 +205,8 @@ |
535 | </style> |
536 | </object> |
537 | <packing> |
538 | + <property name="top_attach">1</property> |
539 | + <property name="bottom_attach">2</property> |
540 | <property name="x_options">GTK_FILL</property> |
541 | <property name="y_options"/> |
542 | </packing> |
543 | @@ -148,21 +224,26 @@ |
544 | </style> |
545 | </object> |
546 | <packing> |
547 | - <property name="top_attach">1</property> |
548 | - <property name="bottom_attach">2</property> |
549 | + <property name="top_attach">2</property> |
550 | + <property name="bottom_attach">3</property> |
551 | <property name="x_options">GTK_FILL</property> |
552 | <property name="y_options"/> |
553 | </packing> |
554 | </child> |
555 | <child> |
556 | - <object class="GtkSeparator" id="unity_launcher_placement_sep"> |
557 | + <object class="GtkLabel" id="general_options_label"> |
558 | <property name="visible">True</property> |
559 | <property name="can_focus">False</property> |
560 | + <property name="xalign">0</property> |
561 | + <property name="ypad">5</property> |
562 | + <property name="label" translatable="yes">General options</property> |
563 | + <attributes> |
564 | + <attribute name="weight" value="bold"/> |
565 | + </attributes> |
566 | </object> |
567 | <packing> |
568 | - <property name="right_attach">2</property> |
569 | - <property name="top_attach">2</property> |
570 | - <property name="bottom_attach">3</property> |
571 | + <property name="left_attach">3</property> |
572 | + <property name="right_attach">4</property> |
573 | <property name="x_options">GTK_FILL</property> |
574 | <property name="y_options"/> |
575 | </packing> |
576 | @@ -180,8 +261,10 @@ |
577 | </style> |
578 | </object> |
579 | <packing> |
580 | - <property name="top_attach">3</property> |
581 | - <property name="bottom_attach">4</property> |
582 | + <property name="top_attach">1</property> |
583 | + <property name="bottom_attach">2</property> |
584 | + <property name="left_attach">3</property> |
585 | + <property name="right_attach">4</property> |
586 | <property name="x_options">GTK_FILL</property> |
587 | <property name="y_options"/> |
588 | </packing> |
589 | @@ -199,8 +282,10 @@ |
590 | </style> |
591 | </object> |
592 | <packing> |
593 | - <property name="top_attach">4</property> |
594 | - <property name="bottom_attach">5</property> |
595 | + <property name="left_attach">3</property> |
596 | + <property name="right_attach">4</property> |
597 | + <property name="top_attach">2</property> |
598 | + <property name="bottom_attach">3</property> |
599 | <property name="x_options">GTK_FILL</property> |
600 | <property name="y_options"/> |
601 | </packing> |
602 | @@ -213,6 +298,8 @@ |
603 | <packing> |
604 | <property name="left_attach">1</property> |
605 | <property name="right_attach">2</property> |
606 | + <property name="top_attach">1</property> |
607 | + <property name="bottom_attach">2</property> |
608 | <property name="y_options"/> |
609 | </packing> |
610 | </child> |
611 | @@ -230,40 +317,54 @@ |
612 | <packing> |
613 | <property name="left_attach">1</property> |
614 | <property name="right_attach">2</property> |
615 | + <property name="top_attach">2</property> |
616 | + <property name="bottom_attach">3</property> |
617 | + <property name="y_options"/> |
618 | + </packing> |
619 | + </child> |
620 | + <child> |
621 | + <object class="GtkHBox" id="launcher_placement_hbox"> |
622 | + <property name="visible">True</property> |
623 | + <property name="can_focus">False</property> |
624 | + <property name="margin_bottom">1</property> |
625 | + <property name="spacing">12</property> |
626 | + <child> |
627 | + <object class="GtkComboBox" id="launcher_placement_combo"> |
628 | + <property name="visible">True</property> |
629 | + <property name="can_focus">False</property> |
630 | + <property name="model">available_launcher_placement_store</property> |
631 | + <property name="id_column">1</property> |
632 | + <child> |
633 | + <object class="GtkCellRendererPixbuf" id="monitor_preview_renderer"/> |
634 | + <attributes> |
635 | + <attribute name="pixbuf">0</attribute> |
636 | + </attributes> |
637 | + </child> |
638 | + <child> |
639 | + <object class="GtkCellRendererText" id="launcher_placement_name_renderer"/> |
640 | + <attributes> |
641 | + <attribute name="text">1</attribute> |
642 | + </attributes> |
643 | + </child> |
644 | + </object> |
645 | + <packing> |
646 | + <property name="expand">False</property> |
647 | + <property name="fill">False</property> |
648 | + <property name="pack_type">start</property> |
649 | + <property name="position">1</property> |
650 | + </packing> |
651 | + </child> |
652 | + </object> |
653 | + <packing> |
654 | + <property name="left_attach">4</property> |
655 | + <property name="right_attach">5</property> |
656 | <property name="top_attach">1</property> |
657 | <property name="bottom_attach">2</property> |
658 | <property name="y_options"/> |
659 | </packing> |
660 | </child> |
661 | <child> |
662 | - <object class="GtkComboBox" id="launcher_placement_combo"> |
663 | - <property name="visible">True</property> |
664 | - <property name="can_focus">False</property> |
665 | - <property name="model">available_launcher_placement_store</property> |
666 | - <property name="id_column">1</property> |
667 | - <child> |
668 | - <object class="GtkCellRendererPixbuf" id="monitor_preview_renderer"/> |
669 | - <attributes> |
670 | - <attribute name="pixbuf">0</attribute> |
671 | - </attributes> |
672 | - </child> |
673 | - <child> |
674 | - <object class="GtkCellRendererText" id="launcher_placement_name_renderer"/> |
675 | - <attributes> |
676 | - <attribute name="text">1</attribute> |
677 | - </attributes> |
678 | - </child> |
679 | - </object> |
680 | - <packing> |
681 | - <property name="left_attach">1</property> |
682 | - <property name="right_attach">2</property> |
683 | - <property name="top_attach">3</property> |
684 | - <property name="bottom_attach">4</property> |
685 | - <property name="y_options"/> |
686 | - </packing> |
687 | - </child> |
688 | - <child> |
689 | - <object class="GtkHBox" id="hbox4"> |
690 | + <object class="GtkHBox" id="stickyedge_hbox"> |
691 | <property name="visible">True</property> |
692 | <property name="can_focus">False</property> |
693 | <property name="margin_bottom">1</property> |
694 | @@ -277,53 +378,112 @@ |
695 | <packing> |
696 | <property name="expand">False</property> |
697 | <property name="fill">False</property> |
698 | - <property name="pack_type">end</property> |
699 | + <property name="pack_type">start</property> |
700 | <property name="position">1</property> |
701 | </packing> |
702 | </child> |
703 | </object> |
704 | <packing> |
705 | - <property name="left_attach">1</property> |
706 | - <property name="right_attach">2</property> |
707 | - <property name="top_attach">4</property> |
708 | - <property name="bottom_attach">5</property> |
709 | + <property name="left_attach">4</property> |
710 | + <property name="right_attach">5</property> |
711 | + <property name="top_attach">2</property> |
712 | + <property name="bottom_attach">3</property> |
713 | <property name="y_options"/> |
714 | </packing> |
715 | </child> |
716 | <child> |
717 | - <object class="GtkLabel" id="ui_label"> |
718 | + <object class="GtkLabel" id="ui_scale_label"> |
719 | <property name="visible">True</property> |
720 | <property name="can_focus">False</property> |
721 | - <property name="xalign">1</property> |
722 | + <property name="xalign">0</property> |
723 | <property name="yalign">1</property> |
724 | - <property name="xpad">3</property> |
725 | - <property name="ypad">3</property> |
726 | - <property name="label" translatable="yes">UI scale</property> |
727 | - <style> |
728 | - <class name="dim-label-ucc"/> |
729 | - </style> |
730 | - </object> |
731 | - <packing> |
732 | - <property name="top_attach">5</property> |
733 | - <property name="bottom_attach">6</property> |
734 | - </packing> |
735 | - </child> |
736 | - <child> |
737 | - <object class="GtkHScale" id="ui_scale"> |
738 | - <property name="visible">True</property> |
739 | - <property name="can_focus">True</property> |
740 | - <property name="digits">2</property> |
741 | - <child internal-child="accessible"> |
742 | - <object class="AtkObject" id="ui_scale-atkobject"> |
743 | - <property name="AtkObject::accessible-description" translatable="yes">Cursor blink speed</property> |
744 | - </object> |
745 | - </child> |
746 | - </object> |
747 | - <packing> |
748 | - <property name="left_attach">1</property> |
749 | - <property name="right_attach">2</property> |
750 | - <property name="top_attach">5</property> |
751 | - <property name="bottom_attach">6</property> |
752 | + <property name="label" translatable="yes">Scale for menu and title bars:</property> |
753 | + </object> |
754 | + <packing> |
755 | + <property name="top_attach">3</property> |
756 | + <property name="bottom_attach">4</property> |
757 | + <property name="right_attach">2</property> |
758 | + <property name="x_options">GTK_FILL</property> |
759 | + </packing> |
760 | + </child> |
761 | + <child> |
762 | + <object class="GtkAlignment" id="ui_scale_alignment"> |
763 | + <property name="visible">True</property> |
764 | + <property name="width_request">150</property> |
765 | + <property name="xscale">0.75</property> |
766 | + <property name="xalign">0</property> |
767 | + <child> |
768 | + <object class="GtkHScale" id="ui_scale"> |
769 | + <property name="visible">True</property> |
770 | + <property name="can_focus">True</property> |
771 | + <property name="digits">2</property> |
772 | + <property name="value_pos">bottom</property> |
773 | + <child internal-child="accessible"> |
774 | + <object class="AtkObject" id="ui_scale-atkobject"> |
775 | + <property name="AtkObject::accessible-description" translatable="yes">User interface scale factor</property> |
776 | + </object> |
777 | + </child> |
778 | + </object> |
779 | + </child> |
780 | + </object> |
781 | + <packing> |
782 | + <property name="right_attach">2</property> |
783 | + <property name="top_attach">4</property> |
784 | + <property name="bottom_attach">5</property> |
785 | + </packing> |
786 | + </child> |
787 | + <child> |
788 | + <object class="GtkLabel" id="ui_scale_monitor_label"> |
789 | + <property name="visible">True</property> |
790 | + <property name="can_focus">False</property> |
791 | + <property name="xalign">0</property> |
792 | + <property name="label" translatable="yes">Scale all window _contents to match:</property> |
793 | + <property name="use_underline">True</property> |
794 | + <property name="mnemonic_widget">ui_scale_monitor_combo</property> |
795 | + </object> |
796 | + <packing> |
797 | + <property name="left_attach">3</property> |
798 | + <property name="right_attach">5</property> |
799 | + <property name="top_attach">3</property> |
800 | + <property name="bottom_attach">4</property> |
801 | + <property name="x_options">GTK_FILL</property> |
802 | + </packing> |
803 | + </child> |
804 | + <child> |
805 | + <object class="GtkHBox" id="ui_scale_monitor_combo_hbox"> |
806 | + <property name="visible">True</property> |
807 | + <child> |
808 | + <object class="GtkComboBox" id="ui_scale_monitor_combo"> |
809 | + <property name="visible">True</property> |
810 | + <property name="can_focus">False</property> |
811 | + <property name="model">available_ui_scale_monitor_store</property> |
812 | + <property name="id_column">1</property> |
813 | + <child> |
814 | + <object class="GtkCellRendererPixbuf" id="ui_scale_monitor_preview_renderer"/> |
815 | + <attributes> |
816 | + <attribute name="pixbuf">0</attribute> |
817 | + </attributes> |
818 | + </child> |
819 | + <child> |
820 | + <object class="GtkCellRendererText" id="ui_scale_name_renderer"/> |
821 | + <attributes> |
822 | + <attribute name="text">1</attribute> |
823 | + </attributes> |
824 | + </child> |
825 | + </object> |
826 | + <packing> |
827 | + <property name="expand">False</property> |
828 | + <property name="fill">False</property> |
829 | + <property name="position">1</property> |
830 | + </packing> |
831 | + </child> |
832 | + </object> |
833 | + <packing> |
834 | + <property name="left_attach">3</property> |
835 | + <property name="right_attach">5</property> |
836 | + <property name="top_attach">4</property> |
837 | + <property name="bottom_attach">5</property> |
838 | + <property name="y_options"/> |
839 | </packing> |
840 | </child> |
841 | </object> |
842 | @@ -331,87 +491,21 @@ |
843 | </object> |
844 | <packing> |
845 | <property name="expand">False</property> |
846 | - <property name="fill">True</property> |
847 | + <property name="fill">False</property> |
848 | <property name="position">1</property> |
849 | </packing> |
850 | </child> |
851 | - <child> |
852 | - <placeholder/> |
853 | - </child> |
854 | </object> |
855 | <packing> |
856 | - <property name="expand">True</property> |
857 | - <property name="fill">True</property> |
858 | + <property name="expand">False</property> |
859 | + <property name="fill">False</property> |
860 | <property name="position">0</property> |
861 | </packing> |
862 | </child> |
863 | - <child> |
864 | - <object class="GtkAlignment" id="alignment2"> |
865 | - <property name="visible">True</property> |
866 | - <property name="can_focus">False</property> |
867 | - <child> |
868 | - <placeholder/> |
869 | - </child> |
870 | - </object> |
871 | - <packing> |
872 | - <property name="expand">True</property> |
873 | - <property name="fill">True</property> |
874 | - <property name="position">1</property> |
875 | - </packing> |
876 | - </child> |
877 | - <child> |
878 | - <object class="GtkVBox" id="vbox2"> |
879 | - <property name="visible">True</property> |
880 | - <property name="can_focus">False</property> |
881 | - <child> |
882 | - <object class="GtkCheckButton" id="clone_checkbox"> |
883 | - <property name="label" translatable="yes" comments="Note that mirror is a verb in this string">_Mirror displays</property> |
884 | - <property name="visible">True</property> |
885 | - <property name="can_focus">True</property> |
886 | - <property name="receives_default">False</property> |
887 | - <property name="use_underline">True</property> |
888 | - <property name="xalign">0.5</property> |
889 | - <property name="draw_indicator">True</property> |
890 | - </object> |
891 | - <packing> |
892 | - <property name="expand">False</property> |
893 | - <property name="fill">False</property> |
894 | - <property name="position">0</property> |
895 | - </packing> |
896 | - </child> |
897 | - <child> |
898 | - <object class="GtkLabel" id="clone_resolution_warning_label"> |
899 | - <property name="visible">True</property> |
900 | - <property name="can_focus">False</property> |
901 | - <property name="xalign">0</property> |
902 | - <property name="label" translatable="yes">Note: may limit resolution options</property> |
903 | - <attributes> |
904 | - <attribute name="style" value="italic"/> |
905 | - </attributes> |
906 | - </object> |
907 | - <packing> |
908 | - <property name="expand">False</property> |
909 | - <property name="fill">False</property> |
910 | - <property name="position">1</property> |
911 | - </packing> |
912 | - </child> |
913 | - <child> |
914 | - <placeholder/> |
915 | - </child> |
916 | - <child> |
917 | - <placeholder/> |
918 | - </child> |
919 | - </object> |
920 | - <packing> |
921 | - <property name="expand">False</property> |
922 | - <property name="fill">True</property> |
923 | - <property name="position">2</property> |
924 | - </packing> |
925 | - </child> |
926 | </object> |
927 | <packing> |
928 | - <property name="expand">True</property> |
929 | - <property name="fill">True</property> |
930 | + <property name="expand">False</property> |
931 | + <property name="fill">False</property> |
932 | <property name="position">1</property> |
933 | </packing> |
934 | </child> |
PASSED: Continuous integration, rev:12767 jenkins. qa.ubuntu. com/job/ unity-control- center- ci/81/ jenkins. qa.ubuntu. com/job/ unity-control- center- trusty- amd64-ci/ 81 jenkins. qa.ubuntu. com/job/ unity-control- center- trusty- armhf-ci/ 81 jenkins. qa.ubuntu. com/job/ unity-control- center- trusty- i386-ci/ 82
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/unity- control- center- ci/81/rebuild
http://