Merge lp:~darkxst/ubuntu/utopic/gnome-control-center/lp1372346 into lp:~ubuntu-desktop/gnome-control-center/ubuntu

Proposed by Tim Lunn on 2014-09-29
Status: Merged
Approved by: Martin Pitt on 2014-09-30
Approved revision: 648
Merged at revision: 647
Proposed branch: lp:~darkxst/ubuntu/utopic/gnome-control-center/lp1372346
Merge into: lp:~ubuntu-desktop/gnome-control-center/ubuntu
Diff against target: 5698 lines (+3404/-1523)
32 files modified
debian/changelog (+392/-0)
debian/control (+45/-44)
debian/control.in (+44/-43)
debian/gnome-control-center-data.maintscript (+2/-0)
debian/gnome-control-center-data.postinst (+8/-0)
debian/gnome-control-center.install (+6/-1)
debian/gnome-control-center.pkla (+2/-2)
debian/gnome-control-center.postinst (+7/-0)
debian/gnome-control-center.postrm (+12/-0)
debian/patches/01_menu_category.patch (+13/-0)
debian/patches/02_new_goa.patch (+0/-46)
debian/patches/06_handle_passwd_with_ldap.patch (+19/-0)
debian/patches/07_polkit_wheel_sudo_group.patch (+16/-0)
debian/patches/52_region_language.patch (+40/-40)
debian/patches/99_add_lock-on-suspend.patch (+2/-9)
debian/patches/gcc_not_in_unity.patch (+0/-154)
debian/patches/git-background-lock-screen.patch (+0/-862)
debian/patches/git-background-remove-unused-widget.patch (+0/-111)
debian/patches/git-online-accounts-chat-providers.patch (+0/-51)
debian/patches/git_fix_libbackground_linking.patch (+0/-24)
debian/patches/git_iconview_columns.patch (+0/-16)
debian/patches/git_rename_natural_scrolling.patch (+0/-26)
debian/patches/power-panel-3.10.patch (+979/-0)
debian/patches/revert-bluetooth-BlueZ5-interface.patch (+34/-0)
debian/patches/revert_git_dont_hide_zoom.patch (+23/-25)
debian/patches/revert_git_drop_library.patch (+10/-11)
debian/patches/revert_git_new_bluetooth_panel.patch (+1607/-0)
debian/patches/revert_new_bluetooth.patch (+68/-0)
debian/patches/series (+7/-8)
debian/patches/ubuntu-gnome-version.patch (+14/-8)
debian/patches/ubuntu_external_panels.patch (+53/-41)
debian/watch (+1/-1)
To merge this branch: bzr merge lp:~darkxst/ubuntu/utopic/gnome-control-center/lp1372346
Reviewer Review Type Date Requested Status
Martin Pitt 2014-09-29 Approve on 2014-09-30
Review via email: mp+236309@code.launchpad.net

Description of the change

Merge 3.12 from debian

To post a comment you must log in.
648. By Tim Lunn on 2014-09-30

Drop gcc_not_in_unity.patch, this is no longer needed since all panels now
set NoDisplay=true in their desktop files

Martin Pitt (pitti) wrote :

LGTM, thanks! gnome-control-center-shared-data didn't change, so this is safe for unity-control-center.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/changelog'
2--- debian/changelog 2014-08-20 03:43:40 +0000
3+++ debian/changelog 2014-09-30 05:25:02 +0000
4@@ -1,3 +1,150 @@
5+gnome-control-center (1:3.12.1-5ubuntu1) utopic; urgency=medium
6+
7+ * New Upstream Release (LP: #1372346)
8+ * Merge with Debian, remaining changes:
9+ + debian/patches:
10+ - revert_git_new_bluetooth_panel.patch,
11+ revert_new_bluetooth.patch,
12+ revert-bluetooth-BlueZ5-interface.patch:
13+ Revert bluetooth back to Bluez4
14+ - 52_region_language.patch
15+ Adapt region panel to use Ubuntu style regions and UTF-8
16+ - 56_use_ubuntu_info_branding.patch,
17+ ubuntu-gnome-version.patch
18+ Use Ubuntu GNOME branding
19+ - 64_restore_terminal_keyboard_shortcut.patch
20+ Bring back terminal shortcut
21+ - 92_ubuntu_system_proxy.patch
22+ Add system proxy support
23+ - 99_add_lock-on-suspend.patch
24+ Add option to lock on suspend
25+ - revert_git_dont_hide_zoom.patch
26+ Bring back zoom settings
27+ - revert_git_drop_library.patch,
28+ ubuntu_external_panels.patch
29+ Reimplement support for external panels
30+ + debian/control.in:
31+ - Relax build-deps on upower and gnome-bluetooth
32+ - Drop Recommends for packages not in main
33+ - Various other Ubuntu specific changes
34+ + debian/libgnome-control-center1.symbols:
35+ - Add new symbols from external panel patch
36+ + debian/gnome-control-center-data.install:
37+ - don't install the pkla yet
38+ + Split out shared data that is used by unity-control-center
39+ + Add a wrapper to run unity-control-center in Unity
40+ + Install apport hook
41+ + Revert to 3.10 power panel, until we have new upower
42+
43+ -- Tim Lunn <tim@feathertop.org> Thu, 18 Sep 2014 09:31:20 +1000
44+
45+gnome-control-center (1:3.12.1-5) unstable; urgency=medium
46+
47+ [ Jordi Mallach ]
48+ * Add cracklib-runtime to Recommends, it's needed for password changing.
49+
50+ [ Laurent Bigonville ]
51+ * Add debian/patches/07_polkit_wheel_sudo_group.patch: The "wheel" group is
52+ not existing on debian, check if the user is member of the "sudo" group
53+ instead (Closes: #760722)
54+
55+ [ Andreas Henriksson ]
56+ * Update debian/gnome-control-center.pkla with what is currently listed
57+ in upstreams panels/common/gnome-control-center.rules since we don't yet
58+ have/depend-on policykit-1 >= 0.106 which means the rules file is still
59+ unused. This fixes automatic time/timezone, etc.
60+
61+ -- Laurent Bigonville <bigon@debian.org> Sun, 07 Sep 2014 12:31:59 +0200
62+
63+gnome-control-center (1:3.12.1-4) unstable; urgency=medium
64+
65+ [ Laurent Bigonville ]
66+ * debian/control.in: Recommends realmd package
67+
68+ [ Emilio Pozuelo Monfort ]
69+ * debian/control.in:
70+ + Drop duplicate libgnome-bluetooth-dev build dependency.
71+
72+ [ Andreas Henriksson ]
73+ * Bump dependency on gsettings-desktop-schemas to >= 3.9.91
74+ - build-dependency already set to this version.
75+ - needed for newly added datetime schema
76+ (Closes: #752569)
77+ * Upload to unstable.
78+
79+ -- Andreas Henriksson <andreas@fatal.se> Mon, 14 Jul 2014 23:49:42 +0200
80+
81+gnome-control-center (1:3.12.1-3) experimental; urgency=medium
82+
83+ * debian/control.in:
84+ Add recommends to libnss-myhostname (Closes: #705319)
85+
86+ -- Sjoerd Simons <sjoerd@debian.org> Sun, 27 Apr 2014 18:20:29 +0200
87+
88+gnome-control-center (1:3.12.1-2) experimental; urgency=medium
89+
90+ [ Josselin Mouette ]
91+ * Remove Suggests on screensavers.
92+
93+ -- Sjoerd Simons <sjoerd@debian.org> Sun, 27 Apr 2014 10:14:45 +0200
94+
95+gnome-control-center (1:3.12.1-1) experimental; urgency=medium
96+
97+ [ Laurent Bigonville]
98+ * New upstream release.
99+ - Add libkrb5-dev to the build-dependencies
100+ - Re-add libgnome-bluetooth-dev build-dependency
101+ * debian/control.in: Bump Standards-Version to 3.9.5 (no further changes)
102+
103+ [ Sjoerd Simons ]
104+ * Re-add gnome-bluetooth support
105+
106+ -- Sjoerd Simons <sjoerd@debian.org> Sat, 26 Apr 2014 18:41:34 +0200
107+
108+gnome-control-center (1:3.12.0-1) experimental; urgency=medium
109+
110+ * New upstream release.
111+
112+ -- Andreas Henriksson <andreas@fatal.se> Mon, 24 Mar 2014 19:58:34 +0100
113+
114+gnome-control-center (1:3.11.91-1) experimental; urgency=medium
115+
116+ [ Jordi Mallach ]
117+ * Bumb Build-Depends for libgnome-bluetooth-dev to >= 3.9.3.
118+
119+ [ Andreas Henriksson ]
120+ * New upstream release.
121+ * Update build-dependencies according to configure.ac changes:
122+ - Bump libgnome-desktop-3-dev to >= 3.11.3
123+ - Bump libgtk-3-dev to >= 3.11.1
124+ - Bump libupower-glib-dev to >= 0.99.0
125+ - Add libgrilo-0.2-dev (>= 0.2.6)
126+ - Drop libsocialweb-client-dev
127+ * Drop debian/patches/background-Fix-compilation-with-libsocialweb.patch
128+ - socialweb integration dropped upstream.
129+ * debian/rules: remove --with-libsocialweb configure flag
130+ * Drop d/p/background-Fix-test-chooser-dialog-build-with-some-l.patch
131+ - merged upstream.
132+ * Have quilt refresh remaining patches
133+ * Drop build-dependency on libgnome-bluetooth-dev [linux-any]
134+ - Looks like we won't get bluez 5.x in unstable until some time
135+ after hell freezes over, so just disable the bluetooth panel
136+ for now to not let this hold us back.
137+
138+ -- Andreas Henriksson <andreas@fatal.se> Tue, 11 Mar 2014 23:44:49 +0100
139+
140+gnome-control-center (1:3.10.1-1) experimental; urgency=low
141+
142+ * New upstream release
143+ * debian/patches/background-Fix-compilation-with-libsocialweb.patch
144+ + Fix compilation with libsocialweb
145+ * debian/patches/background-Fix-test-chooser-dialog-build-with-some-l.patch
146+ + Fix compilation with more strictl linkers
147+ * debian/control: Recommend network-manager instead of depending
148+ (Closes: #726395)
149+
150+ -- Sjoerd Simons <sjoerd@debian.org> Fri, 01 Nov 2013 23:11:23 +0100
151+
152 gnome-control-center (1:3.8.6-0ubuntu5) utopic; urgency=medium
153
154 * Actually do a no change rebuild against new libgtop
155@@ -67,6 +214,153 @@
156
157 -- Robert Ancell <robert.ancell@canonical.com> Wed, 04 Dec 2013 11:03:26 +1300
158
159+gnome-control-center (1:3.8.3-3) unstable; urgency=low
160+
161+ * Drop recommends on gnome-session, it doesn't seem to be needed anymore
162+ and brings in all of gnome when installing network-manager-gnome which
163+ is also used in non-gnome environments.
164+ * Upload to unstable.
165+
166+ -- Emilio Pozuelo Monfort <pochu@debian.org> Sun, 13 Oct 2013 18:04:36 +0200
167+
168+gnome-control-center (1:3.8.3-2) experimental; urgency=low
169+
170+ [ Emilio Pozuelo Monfort ]
171+ * debian/control.in:
172+ + Recommend gkbd-capplet, used by the Region & Language panel to
173+ display the selected keyboard layout.
174+ + Recommend ntp for the Date & Time panel.
175+
176+ [ Laurent Bigonville ]
177+ * debian/control.in:
178+ - Use canonical URL for Vcs-Svn field
179+ - Drop duplicate Section to please lintian
180+ - Also Suggests libcanberra-gtk3-module
181+ * debian/rules:
182+ - Use DEB_LDFLAGS_MAINT_APPEND instead of LDFLAGS so we are
183+ sure we are not overrinding the hardening flags
184+ - Pass -Wl,-z,defs to DEB_LDFLAGS_MAINT_APPEND so we can detect undefined
185+ symbols during build
186+ * gnome-control-center-data.maintscript: Remove /etc/xdg/menus/gnomecc.menu
187+ and /etc/xdg/autostart/gnome-sound-applet.desktop on upgrade, the files
188+ are no longer shipped (Closes: #712831)
189+ * debian/control.in, debian/rules: Re-enable ibus support (Closes: #720585)
190+
191+ [ Jeremy Bicha ]
192+ * Build-depend on gtk-doc-tools instead of docbook directly
193+ * Don't build-depend on gnome-doc-utils
194+
195+ -- Laurent Bigonville <bigon@debian.org> Sat, 24 Aug 2013 14:05:49 +0200
196+
197+gnome-control-center (1:3.8.3-1) experimental; urgency=low
198+
199+ [ Andreas Henriksson ]
200+ * Recommend both gnome-user-share and rygel | rygel-tracker
201+ - Needs to be of recent version, but we don't have versioned recommends.
202+ - This Makes Bluetooth Sharing, Personal File Sharing and Media Sharing
203+ visible under the Sharing panel.
204+ (Also, Remote Login will not show up until we ship a sshd.service
205+ in Debian.)
206+
207+ [ Emilio Pozuelo Monfort ]
208+ * New upstream release.
209+
210+ -- Emilio Pozuelo Monfort <pochu@debian.org> Sat, 08 Jun 2013 18:32:00 +0200
211+
212+gnome-control-center (1:3.8.2-1) experimental; urgency=low
213+
214+ [ Thomas Bechtold ]
215+ * New upstream release 3.8.1.
216+ * debian/control:
217+ - Build-Depends on libgoa-1.0-dev (>= 3.8.1) according to
218+ configure.ac.
219+ - Bump Standards-Version to 3.9.4.
220+
221+ [ Emilio Pozuelo Monfort ]
222+ * debian/control.in:
223+ + Bump minimum gnome-menus dependency to fix loading desktop
224+ files from the shell. Thanks to Luca Bruno for pointing it
225+ out.
226+ + Recommend system-config-printer for the printers panel.
227+ * New upstream release 3.8.2.
228+ + Doesn't crash if the printing dbus service is missing.
229+ Closes: #709451.
230+
231+ -- Emilio Pozuelo Monfort <pochu@debian.org> Sat, 25 May 2013 13:00:07 +0200
232+
233+gnome-control-center (1:3.8.0-2) experimental; urgency=low
234+
235+ [ Emilio Pozuelo Monfort ]
236+ * debian/control.in:
237+ + Remove obsolete libgconf2-dev build dependency.
238+
239+ [ Sjoerd Simons ]
240+ * debian/control.in: Add libsmbclient-dev for the printer panel
241+ * debian/control.in: Add libnm*-dev (>= 0.9.8) for the network panel
242+ * debian/control.in: Add run-time depend on network-manager-gnome (>= 0.9.8)
243+
244+ -- Sjoerd Simons <sjoerd@debian.org> Wed, 10 Apr 2013 09:22:02 +0100
245+
246+gnome-control-center (1:3.8.0-1) experimental; urgency=low
247+
248+ [ Jeremy Bicha ]
249+ * debian/gnome-control-center-data.install, gnome-control-center.install:
250+ - Move the new polkit rules to gnome-control-center-data
251+ like the existing rule
252+ * debian/control.in:
253+ - Add temporary breaks/replaces for the previous change
254+ * Add gnome-control-center.pkla to allow admins to change the hostname
255+ without needing policykit from experimental (Closes: #693071)
256+
257+ [ Thomas Bechtold ]
258+ * New upstream release
259+
260+ -- Thomas Bechtold <thomasbechtold@jpberlin.de> Wed, 27 Mar 2013 19:02:54 +0100
261+
262+gnome-control-center (1:3.7.92-1) experimental; urgency=low
263+
264+ [ Sjoerd Simons ]
265+ * New upstream release
266+ * debian/patches/90_force_fallback.patch
267+ + Dropped, no longer applicable
268+ * debian/patches/revert_git_datetime_port.patch
269+ + Follow upstream in the systemd datetime usage
270+ * debian/control.in: Bump build-deps
271+ * debian/control.in: Add run-time depend on colord
272+ * debian/gnome-control-center.install: Don't install panel .so files, all
273+ plugins are now static
274+ * debian/gnome-control-center-data.install: Remove installation of fallback
275+ files, no longer shipped with g-c-c
276+
277+ [ Jean Schurger ]
278+ * debian/control.in: Dropped valac build-dependency (not longer needed).
279+
280+ [ Sjoerd Simons ]
281+ * New upstream release (3.7.92)
282+ * debian/gnome-control-center.install: Install policykit rules & search
283+ provider
284+ * debian/control.in: Depend on gnome-icon-theme >= 3.7
285+
286+ -- Sjoerd Simons <sjoerd@debian.org> Sat, 23 Mar 2013 20:19:50 +0100
287+
288+gnome-control-center (1:3.6.3-1) experimental; urgency=low
289+
290+ [ Sjoerd Simons ]
291+ * debian/control.in: Bump libgnome-bluetooth-dev to >= 3.5.5
292+ * debian/control.in: Bump libcheese-gtk-dev to >= 3.5.91
293+
294+ [ Jeremy Bicha ]
295+ * New upstream version.
296+ * debian/gnome-control-center.sgml, debian/gnome-control-center.install
297+ debian/rules
298+ - Ship improved man page from GNOME
299+
300+ [ Aron Xu ]
301+ * debian/control.in debian/rules: disable ibus integration.
302+ (Closes: #694301, #691656)
303+
304+ -- Sjoerd Simons <sjoerd@debian.org> Sun, 10 Feb 2013 13:17:20 +0100
305+
306 gnome-control-center (1:3.6.3-0ubuntu57) utopic; urgency=medium
307
308 * debian/patches/ubuntu-gnome-version.patch: Merge build-time versioned
309@@ -713,6 +1007,96 @@
310
311 -- Sebastien Bacher <seb128@ubuntu.com> Wed, 21 Nov 2012 19:32:45 +0100
312
313+gnome-control-center (1:3.6.2-1) experimental; urgency=low
314+
315+ * Team upload
316+
317+ [ Andreas Henriksson ]
318+ * Fix typo in gsettings-desktop-schemas-dev build dependency version
319+ (3.3.91 should be 3.5.91). (Closes: #693027)
320+
321+ [ Simon McVittie ]
322+ * Bump build-dependency to libgnome-desktop-3-dev (>= 3.5.91) as well,
323+ otherwise it'll continue to FTBFS
324+ * New upstream release
325+ * Install org.gnome.controlcenter.user-accounts.policy PolicyKit rule,
326+ which means that authenticating for
327+ org.gnome.controlcenter.user-accounts.administration is sufficient
328+ to administer accountsservice and (if later added to Debian) realmd
329+ * Do not install gnome-control-center.rules for now; it won't work in Debian
330+ since we don't have a wheel group. Patching it to use group sudo is
331+ a possibility for a future upload.
332+
333+ -- Simon McVittie <smcv@debian.org> Mon, 12 Nov 2012 17:14:50 +0000
334+
335+gnome-control-center (1:3.6.1-1) experimental; urgency=low
336+
337+ [ Josselin Mouette ]
338+ * Add missing epoch on libxi build-dependency.
339+
340+ [ Michael Biebl ]
341+ * Rebuild with xz compression. Closes: #687279
342+
343+ [ Sjoerd Simons ]
344+ * New upstream release (3.6.1)
345+ * debian/control.in: Updated dependencies
346+ * debian/patches/02_no_assert_on_null_streams.patch
347+ + Removed, was supposed to be a temporary patch
348+ * debian/patches/10_optional_wacom_support.patch
349+ + Removed, fixed upstream
350+ * debian/patches/90_force_fallback.patch: Refreshed
351+
352+ -- Sjoerd Simons <sjoerd@debian.org> Sun, 14 Oct 2012 21:42:26 +0200
353+
354+gnome-control-center (1:3.4.2-2) unstable; urgency=low
355+
356+ * Upload to unstable.
357+
358+ -- Michael Biebl <biebl@debian.org> Wed, 30 May 2012 12:54:24 +0200
359+
360+gnome-control-center (1:3.4.2-1) experimental; urgency=low
361+
362+ [ Sjoerd Simons ]
363+ * New upstream release
364+ * Sync with Ubuntu:
365+ + debian/control.in: Update build-depends
366+ + debian/patches/02_no_assert_on_null_streams.patch:
367+ - Don't crash on null streams (bgo: #633728, LP: #741155)
368+ + debian/patches/90_force_fallback.patch:
369+ - Refreshed
370+ + debian/patches/06_handle_passwd_with_ldap.patch:
371+ - Refreshed
372+ + debian/patches/revert_git_datetime_port.patch:
373+ - Added, don't switch to systemd for datetime functionality just yet.
374+ * Drop libgnome-control-center1 package, gnome-control-center no longer
375+ builds a library.
376+ * debian/patches/00git_handle_media_dialog_close.patch,
377+ debian/patches/91_configure_cheese.patch,
378+ debian/patches/08_dont_crash_on_null_territories.patch,
379+ debian/patches/92_link_language_chooser_against_fontconfig.patch:
380+ + All removed, fixed upstream
381+ * debian/rules: Don't use -Wl,-z,defs as it cause the panel plugins to fail
382+ to build
383+ * debian/gnome-control-center-data.install: gnome-control-center no longer
384+ ships a manual.
385+
386+ [ Michael Biebl ]
387+ * Add Build-Depends on libwacom-dev and libxi-dev for the Wacom panel and
388+ libgnome-bluetooth-dev for the Bluetooth panel.
389+ * Mark libwacom-dev and libgnome-bluetooth-dev as linux-any.
390+ * Update Build-Depends according to configure.ac.
391+ * Add Breaks/Replaces: gnome-bluetooth (<< 3.4) as the Bluetooth panel moved
392+ into gnome-control-center.
393+ * debian/patches/10_optional_wacom_support.patch: Build the Wacom panel
394+ conditionally to support plattforms where libwacom-dev is not available.
395+ * Bump Standards-Version to 3.9.3.
396+ * Add Breaks against libgnome-bluetooth8 since loading booth
397+ libgnome-bluetooth8 and libgnome-bluetooth10 will lead to crashes when
398+ using the Bluetooth panel. Eventually we should use versioned directories
399+ for the gnome-bluetooth plugins but for now the Breaks will do.
400+
401+ -- Michael Biebl <biebl@debian.org> Sat, 19 May 2012 23:57:55 +0200
402+
403 gnome-control-center (1:3.4.2-0ubuntu20) quantal-proposed; urgency=low
404
405 * debian/patches/04_new_appearance_settings.patch
406@@ -1382,6 +1766,14 @@
407
408 -- Sebastien Bacher <seb128@ubuntu.com> Wed, 15 Feb 2012 23:16:31 +0100
409
410+gnome-control-center (1:3.2.2-3) unstable; urgency=low
411+
412+ * debian/patches/92_link_language_chooser_against_fontconfig.patch: Link
413+ language chooser panel against fontconfig. Patch cherry-picked from
414+ upstream Git.
415+
416+ -- Michael Biebl <biebl@debian.org> Thu, 29 Mar 2012 23:36:02 +0200
417+
418 gnome-control-center (1:3.2.2-2ubuntu10) precise; urgency=low
419
420 * debian/patches/97_unity_power_ui.patch:
421
422=== modified file 'debian/control'
423--- debian/control 2014-05-06 09:05:08 +0000
424+++ debian/control 2014-09-30 05:25:02 +0000
425@@ -7,65 +7,62 @@
426 Priority: optional
427 Maintainer: Ubuntu Desktop Team <ubuntu-desktop@lists.ubuntu.com>
428 XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
429-Uploaders: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
430-Standards-Version: 3.9.4
431+Uploaders: Andreas Henriksson <andreas@fatal.se>, Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>, Laurent Bigonville <bigon@debian.org>, Sjoerd Simons <sjoerd@debian.org>
432+Standards-Version: 3.9.5
433 Build-Depends: autotools-dev,
434 cdbs (>= 0.4.41),
435 debhelper (>= 9),
436+ dpkg-dev (>= 1.16.1~),
437+ libaccountsservice-dev (>= 0.6.30),
438 desktop-file-utils,
439 dh-autoreconf,
440- gtk-doc-tools,
441- libgirepository1.0-dev (>= 0.9.7),
442 gnome-common,
443 gnome-pkg-tools (>= 0.10),
444- gnome-settings-daemon-dev (>= 3.8.4),
445- gsettings-desktop-schemas-dev (>= 3.7.2.2),
446- hardening-wrapper,
447+ gnome-settings-daemon-dev (>= 3.7.3),
448+ gsettings-desktop-schemas-dev (>= 3.9.91),
449+ gtk-doc-tools,
450 intltool (>= 0.37.1),
451 libcanberra-gtk3-dev,
452- libcheese-gtk-dev (>= 2.91.91.1),
453+ libcheese-gtk-dev (>= 3.5.91),
454 libcolord-dev (>= 0.1.29),
455 libcolord-gtk-dev (>= 0.1.24),
456 libcups2-dev,
457 libdbus-1-dev (>= 0.32),
458 libdbus-glib-1-dev (>= 0.32),
459 libgdk-pixbuf2.0-dev (>= 2.23.0),
460- libglib2.0-dev (>= 2.35.1),
461- libgnome-bluetooth-dev (>= 3.3.4),
462- libgnome-desktop-3-dev (>= 3.7.5),
463+ libgirepository1.0-dev,
464+ libglib2.0-dev (>= 2.37.7),
465+ libgnome-desktop-3-dev (>= 3.11.3),
466 libgnome-menu-3-dev,
467- libgnomekbd-dev,
468- libgoa-1.0-dev (>= 3.10.0),
469- libaccountsservice-dev (>= 0.6.30),
470- libgstreamer-plugins-base0.10-dev,
471- libgtk-3-dev (>= 3.7.7),
472+ libgnomekbd-dev (>= 2.91.91),
473+ libgnome-bluetooth-dev (>= 3.3.4) [linux-any],
474+ libibus-1.0-dev (>= 1.5.2),
475+ libgoa-1.0-dev (>= 3.9.90),
476+ libgrilo-0.2-dev (>= 0.2.6),
477+ libgtk-3-dev (>= 3.11.1),
478 libgtop2-dev,
479- libibus-1.0-dev (>= 1.5.0),
480 libkrb5-dev,
481 libnm-glib-dev (>= 0.9.8) [linux-any],
482- libnm-glib-vpn-dev (>= 0.9.8) [linux-any],
483- libnm-gtk-dev (>= 0.9.7.995) [linux-any],
484+ libnm-glib-vpn-dev (>= 0.9.8) [linux-any],
485+ libnm-gtk-dev (>= 0.9.8) [linux-any],
486 libnm-util-dev (>= 0.9.8) [linux-any],
487 libmm-glib-dev [linux-any],
488 libnotify-dev (>= 0.7.3),
489 libpolkit-gobject-1-dev (>= 0.103),
490- libpulse-dev (>= 1:2.0),
491+ libpulse-dev,
492 libpwquality-dev,
493- libsmbclient-dev,
494-# libsocialweb-client-dev,
495- libupower-glib-dev (>= 0.9.1),
496- libsystemd-login-dev,
497- libwacom-dev (>= 0.7),
498+ libsmbclient-dev (>= 2:3.6.12),
499+ libupower-glib-dev (>= 0.9.0),
500+ libwacom-dev (>= 0.7) [linux-any],
501+ libxi-dev (>= 2:1.2),
502 libx11-dev,
503 libxft-dev (>= 2.1.2),
504- libxkbfile-dev,
505 libxklavier-dev (>= 5.1),
506 libxml2-dev,
507 locales,
508 network-manager-dev (>= 0.9.8) [linux-any],
509 shared-mime-info,
510 ttf-ubuntu-font-family,
511- libwebkitgtk-3.0-dev,
512 libgl1-mesa-dev,
513 valac (>= 0.20.0),
514 Vcs-Bzr: http://code.launchpad.net/~ubuntu-desktop/gnome-control-center/ubuntu
515@@ -77,38 +74,40 @@
516 ${shlibs:Depends},
517 accountsservice,
518 apg,
519+ colord (>= 0.1.30),
520 desktop-file-utils,
521- gkbd-capplet (>= 3.5.90),
522 gnome-control-center-data (<< ${gnome:NextVersion}),
523 gnome-control-center-data (>= ${source:Version}),
524 gnome-desktop3-data,
525- gnome-icon-theme (>= 2.24),
526- gnome-icon-theme-symbolic,
527- gnome-menus (>= 2.12.0),
528- gnome-settings-daemon (>= 3.8.4),
529- gsettings-desktop-schemas (>= 3.5.91),
530+ gnome-icon-theme (>= 3.7),
531+ gnome-icon-theme-symbolic (>= 3.7),
532+ gnome-menus (>= 3.7.90),
533+ gnome-settings-daemon (>= 3.7.91),
534+ gsettings-desktop-schemas (>= 3.9.91),
535 Recommends: cups-pk-helper,
536- gnome-session-bin,
537- ubuntu-system-service,
538+ gnome-control-center-shared-data,
539+# gnome-session-bin,
540+ gnome-user-share,
541+ gkbd-capplet,
542 ibus (>= 1.5.0),
543 iso-codes,
544+ libcanberra-pulse,
545 mousetweaks,
546+ ntp,
547 policykit-1-gnome,
548- libcanberra-pulse,
549 system-config-printer-gnome,
550- gnome-control-center-shared-data
551-Replaces: gnome-bluetooth (<< 3.4.0)
552+ cracklib-runtime,
553+ ubuntu-system-service,
554 Breaks: gnome-power-manager (<< 3.0),
555 gnome-session (<< 3.0),
556 libglib2.0-0 (<< 2.28.6-2),
557- gnome-bluetooth (<< 3.4.0),
558- compiz (<< 1:0.9.8+bzr330),
559- metacity (<< 1:2.34.2),
560- unity (<< 6.2-0ubuntu2~),
561+ gnome-bluetooth (<< 3.4),
562+Replaces: gnome-bluetooth (<< 3.4.0)
563 Suggests: gnome-screensaver | xscreensaver,
564 gnome-user-guide | ubuntu-docs,
565 gstreamer0.10-pulseaudio,
566 libcanberra-gtk-module,
567+ libcanberra-gtk3-module,
568 x11-xserver-utils
569 Description: utilities to configure the GNOME desktop
570 This package contains configuration applets for the GNOME desktop,
571@@ -138,11 +137,13 @@
572 gdm3 (<< 3.0),
573 gnome-media-common (<< 2.91),
574 gnome-power-manager (<< 3.2),
575- gnome-settings-daemon (<< 3.0)
576+ gnome-settings-daemon (<< 3.0),
577+ gnome-control-center (<< 1:3.7.92-2~)
578 Breaks: gdm (<< 3.0),
579 gdm3 (<< 3.0),
580 gnome-power-manager (<< 3.2),
581- gnome-settings-daemon (<< 3.0)
582+ gnome-settings-daemon (<< 3.0),
583+ gnome-control-center (<< 1:3.7.92-2~)
584 Description: configuration applets for GNOME - data files
585 This package contains data files (icons, pixmaps, locales files) needed by
586 the configuration applets in the gnome-control-center package.
587
588=== modified file 'debian/control.in'
589--- debian/control.in 2014-05-06 01:47:50 +0000
590+++ debian/control.in 2014-09-30 05:25:02 +0000
591@@ -4,64 +4,61 @@
592 Maintainer: Ubuntu Desktop Team <ubuntu-desktop@lists.ubuntu.com>
593 XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
594 Uploaders: @GNOME_TEAM@
595-Standards-Version: 3.9.4
596+Standards-Version: 3.9.5
597 Build-Depends: autotools-dev,
598 cdbs (>= 0.4.41),
599 debhelper (>= 9),
600+ dpkg-dev (>= 1.16.1~),
601+ libaccountsservice-dev (>= 0.6.30),
602 desktop-file-utils,
603 dh-autoreconf,
604- gtk-doc-tools,
605- libgirepository1.0-dev (>= 0.9.7),
606 gnome-common,
607 gnome-pkg-tools (>= 0.10),
608- gnome-settings-daemon-dev (>= 3.8.4),
609- gsettings-desktop-schemas-dev (>= 3.7.2.2),
610- hardening-wrapper,
611+ gnome-settings-daemon-dev (>= 3.7.3),
612+ gsettings-desktop-schemas-dev (>= 3.9.91),
613+ gtk-doc-tools,
614 intltool (>= 0.37.1),
615 libcanberra-gtk3-dev,
616- libcheese-gtk-dev (>= 2.91.91.1),
617+ libcheese-gtk-dev (>= 3.5.91),
618 libcolord-dev (>= 0.1.29),
619 libcolord-gtk-dev (>= 0.1.24),
620 libcups2-dev,
621 libdbus-1-dev (>= 0.32),
622 libdbus-glib-1-dev (>= 0.32),
623 libgdk-pixbuf2.0-dev (>= 2.23.0),
624- libglib2.0-dev (>= 2.35.1),
625- libgnome-bluetooth-dev (>= 3.3.4),
626- libgnome-desktop-3-dev (>= 3.7.5),
627+ libgirepository1.0-dev,
628+ libglib2.0-dev (>= 2.37.7),
629+ libgnome-desktop-3-dev (>= 3.11.3),
630 libgnome-menu-3-dev,
631- libgnomekbd-dev,
632- libgoa-1.0-dev (>= 3.10.0),
633- libaccountsservice-dev (>= 0.6.30),
634- libgstreamer-plugins-base0.10-dev,
635- libgtk-3-dev (>= 3.7.7),
636+ libgnomekbd-dev (>= 2.91.91),
637+ libgnome-bluetooth-dev (>= 3.3.4) [linux-any],
638+ libibus-1.0-dev (>= 1.5.2),
639+ libgoa-1.0-dev (>= 3.9.90),
640+ libgrilo-0.2-dev (>= 0.2.6),
641+ libgtk-3-dev (>= 3.11.1),
642 libgtop2-dev,
643- libibus-1.0-dev (>= 1.5.0),
644 libkrb5-dev,
645 libnm-glib-dev (>= 0.9.8) [linux-any],
646- libnm-glib-vpn-dev (>= 0.9.8) [linux-any],
647- libnm-gtk-dev (>= 0.9.7.995) [linux-any],
648+ libnm-glib-vpn-dev (>= 0.9.8) [linux-any],
649+ libnm-gtk-dev (>= 0.9.8) [linux-any],
650 libnm-util-dev (>= 0.9.8) [linux-any],
651 libmm-glib-dev [linux-any],
652 libnotify-dev (>= 0.7.3),
653 libpolkit-gobject-1-dev (>= 0.103),
654- libpulse-dev (>= 1:2.0),
655+ libpulse-dev,
656 libpwquality-dev,
657- libsmbclient-dev,
658-# libsocialweb-client-dev,
659- libupower-glib-dev (>= 0.9.1),
660- libsystemd-login-dev,
661- libwacom-dev (>= 0.7),
662+ libsmbclient-dev (>= 2:3.6.12),
663+ libupower-glib-dev (>= 0.9.0),
664+ libwacom-dev (>= 0.7) [linux-any],
665+ libxi-dev (>= 2:1.2),
666 libx11-dev,
667 libxft-dev (>= 2.1.2),
668- libxkbfile-dev,
669 libxklavier-dev (>= 5.1),
670 libxml2-dev,
671 locales,
672 network-manager-dev (>= 0.9.8) [linux-any],
673 shared-mime-info,
674 ttf-ubuntu-font-family,
675- libwebkitgtk-3.0-dev,
676 libgl1-mesa-dev,
677 valac (>= 0.20.0),
678 Vcs-Bzr: http://code.launchpad.net/~ubuntu-desktop/gnome-control-center/ubuntu
679@@ -73,38 +70,40 @@
680 ${shlibs:Depends},
681 accountsservice,
682 apg,
683+ colord (>= 0.1.30),
684 desktop-file-utils,
685- gkbd-capplet (>= 3.5.90),
686 gnome-control-center-data (<< ${gnome:NextVersion}),
687 gnome-control-center-data (>= ${source:Version}),
688 gnome-desktop3-data,
689- gnome-icon-theme (>= 2.24),
690- gnome-icon-theme-symbolic,
691- gnome-menus (>= 2.12.0),
692- gnome-settings-daemon (>= 3.8.4),
693- gsettings-desktop-schemas (>= 3.5.91),
694+ gnome-icon-theme (>= 3.7),
695+ gnome-icon-theme-symbolic (>= 3.7),
696+ gnome-menus (>= 3.7.90),
697+ gnome-settings-daemon (>= 3.7.91),
698+ gsettings-desktop-schemas (>= 3.9.91),
699 Recommends: cups-pk-helper,
700- gnome-session-bin,
701- ubuntu-system-service,
702+ gnome-control-center-shared-data,
703+# gnome-session-bin,
704+ gnome-user-share,
705+ gkbd-capplet,
706 ibus (>= 1.5.0),
707 iso-codes,
708+ libcanberra-pulse,
709 mousetweaks,
710+ ntp,
711 policykit-1-gnome,
712- libcanberra-pulse,
713 system-config-printer-gnome,
714- gnome-control-center-shared-data
715-Replaces: gnome-bluetooth (<< 3.4.0)
716+ cracklib-runtime,
717+ ubuntu-system-service,
718 Breaks: gnome-power-manager (<< 3.0),
719 gnome-session (<< 3.0),
720 libglib2.0-0 (<< 2.28.6-2),
721- gnome-bluetooth (<< 3.4.0),
722- compiz (<< 1:0.9.8+bzr330),
723- metacity (<< 1:2.34.2),
724- unity (<< 6.2-0ubuntu2~),
725+ gnome-bluetooth (<< 3.4),
726+Replaces: gnome-bluetooth (<< 3.4.0)
727 Suggests: gnome-screensaver | xscreensaver,
728 gnome-user-guide | ubuntu-docs,
729 gstreamer0.10-pulseaudio,
730 libcanberra-gtk-module,
731+ libcanberra-gtk3-module,
732 x11-xserver-utils
733 Description: utilities to configure the GNOME desktop
734 This package contains configuration applets for the GNOME desktop,
735@@ -134,11 +133,13 @@
736 gdm3 (<< 3.0),
737 gnome-media-common (<< 2.91),
738 gnome-power-manager (<< 3.2),
739- gnome-settings-daemon (<< 3.0)
740+ gnome-settings-daemon (<< 3.0),
741+ gnome-control-center (<< 1:3.7.92-2~)
742 Breaks: gdm (<< 3.0),
743 gdm3 (<< 3.0),
744 gnome-power-manager (<< 3.2),
745- gnome-settings-daemon (<< 3.0)
746+ gnome-settings-daemon (<< 3.0),
747+ gnome-control-center (<< 1:3.7.92-2~)
748 Description: configuration applets for GNOME - data files
749 This package contains data files (icons, pixmaps, locales files) needed by
750 the configuration applets in the gnome-control-center package.
751
752=== added file 'debian/gnome-control-center-data.maintscript'
753--- debian/gnome-control-center-data.maintscript 1970-01-01 00:00:00 +0000
754+++ debian/gnome-control-center-data.maintscript 2014-09-30 05:25:02 +0000
755@@ -0,0 +1,2 @@
756+rm_conffile /etc/xdg/menus/gnomecc.menu 1:3.8.3-2~
757+rm_conffile /etc/xdg/autostart/gnome-sound-applet.desktop 1:3.8.3-2~
758
759=== added file 'debian/gnome-control-center-data.postinst'
760--- debian/gnome-control-center-data.postinst 1970-01-01 00:00:00 +0000
761+++ debian/gnome-control-center-data.postinst 2014-09-30 05:25:02 +0000
762@@ -0,0 +1,8 @@
763+#! /bin/sh
764+set -e
765+
766+if [ "$1" = configure ] && dpkg --compare-versions "$2" lt-nl "1:2.26"; then
767+ rm -f /etc/xdg/autostart/gnome-at-session.desktop
768+fi
769+
770+#DEBHELPER#
771
772=== modified file 'debian/gnome-control-center.install'
773--- debian/gnome-control-center.install 2014-02-12 00:19:03 +0000
774+++ debian/gnome-control-center.install 2014-09-30 05:25:02 +0000
775@@ -1,3 +1,8 @@
776-usr/bin/gnome-control-center
777+usr/bin
778 usr/share/applications
779 usr/share/man
780+usr/lib/gnome-control-center
781+usr/share/bash-completion
782+usr/share/dbus-1
783+usr/share/gnome-shell
784+
785
786=== modified file 'debian/gnome-control-center.pkla'
787--- debian/gnome-control-center.pkla 2013-04-10 20:04:02 +0000
788+++ debian/gnome-control-center.pkla 2014-09-30 05:25:02 +0000
789@@ -1,4 +1,4 @@
790-[Allow admins to set the hostname without prompting]
791+[Allow admins to set the hostname,locale,keyboard,date/time without prompting]
792 Identity=unix-group:admin;unix-group:sudo
793-Action=org.freedesktop.hostname1.set-static-hostname;org.freedesktop.hostname1.set-hostname
794+Action=org.freedesktop.locale1.set-locale;org.freedesktop.locale1.set-keyboard;org.freedesktop.hostname1.set-static-hostname;org.freedesktop.hostname1.set-hostname;org.gnome.controlcenter.datetime.configure
795 ResultActive=yes
796
797=== added file 'debian/gnome-control-center.postinst'
798--- debian/gnome-control-center.postinst 1970-01-01 00:00:00 +0000
799+++ debian/gnome-control-center.postinst 2014-09-30 05:25:02 +0000
800@@ -0,0 +1,7 @@
801+#! /bin/sh
802+set -e
803+
804+rm -f /etc/gnome-vfs-2.0/modules/theme-method.conf
805+rm -f /etc/gnome-vfs-2.0/modules/font-method.conf
806+
807+#DEBHELPER#
808
809=== added file 'debian/gnome-control-center.postrm'
810--- debian/gnome-control-center.postrm 1970-01-01 00:00:00 +0000
811+++ debian/gnome-control-center.postrm 2014-09-30 05:25:02 +0000
812@@ -0,0 +1,12 @@
813+#! /bin/sh
814+set -e
815+
816+case "$1" in
817+purge)
818+ rm -f /etc/gnome-settings-daemon/xrandr/monitors.xml || true
819+ ;;
820+*)
821+ ;;
822+esac
823+
824+#DEBHELPER#
825
826=== added file 'debian/patches/01_menu_category.patch'
827--- debian/patches/01_menu_category.patch 1970-01-01 00:00:00 +0000
828+++ debian/patches/01_menu_category.patch 2014-09-30 05:25:02 +0000
829@@ -0,0 +1,13 @@
830+diff --git a/shell/gnome-control-center.desktop.in.in b/shell/gnome-control-center.desktop.in.in
831+index a7160bd..b8c543f 100644
832+--- a/shell/gnome-control-center.desktop.in.in
833++++ b/shell/gnome-control-center.desktop.in.in
834+@@ -5,7 +5,7 @@ Exec=gnome-control-center --overview
835+ Terminal=false
836+ Type=Application
837+ StartupNotify=true
838+-Categories=GNOME;GTK;System;
839++Categories=GNOME;GTK;Settings;
840+ OnlyShowIn=GNOME;Unity;
841+ X-GNOME-Bugzilla-Bugzilla=GNOME
842+ X-GNOME-Bugzilla-Product=gnome-control-center
843
844=== removed file 'debian/patches/02_new_goa.patch'
845--- debian/patches/02_new_goa.patch 2014-02-12 00:19:03 +0000
846+++ debian/patches/02_new_goa.patch 1970-01-01 00:00:00 +0000
847@@ -1,46 +0,0 @@
848-Index: gnome-control-center-3.8.6/panels/online-accounts/cc-online-accounts-panel.c
849-===================================================================
850---- gnome-control-center-3.8.6.orig/panels/online-accounts/cc-online-accounts-panel.c 2013-12-12 14:00:10.759923318 +1300
851-+++ gnome-control-center-3.8.6/panels/online-accounts/cc-online-accounts-panel.c 2013-12-12 14:00:10.755923318 +1300
852-@@ -617,8 +617,11 @@
853- /* ---------------------------------------------------------------------------------------------------- */
854-
855- static void
856--add_account (CcGoaPanel *panel)
857-+get_all_providers_cb (GObject *source,
858-+ GAsyncResult *res,
859-+ gpointer user_data)
860- {
861-+ CcGoaPanel *panel = CC_GOA_PANEL (user_data);
862- GtkWindow *parent;
863- GtkWidget *dialog;
864- gint response;
865-@@ -629,12 +632,14 @@
866-
867- providers = NULL;
868-
869-+ if (!goa_provider_get_all_finish (&providers, res, NULL))
870-+ goto out;
871-+
872- parent = GTK_WINDOW (cc_shell_get_toplevel (cc_panel_get_shell (CC_PANEL (panel))));
873-
874- dialog = goa_panel_add_account_dialog_new (panel->client);
875- gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
876-
877-- providers = goa_provider_get_all ();
878- for (l = providers; l != NULL; l = l->next)
879- {
880- GoaProvider *provider;
881-@@ -697,6 +703,12 @@
882- g_list_free (providers);
883- }
884-
885-+static void
886-+add_account (CcGoaPanel *panel)
887-+{
888-+ goa_provider_get_all (get_all_providers_cb, panel);
889-+}
890-+
891- /* ---------------------------------------------------------------------------------------------------- */
892-
893- static void
894
895=== added file 'debian/patches/06_handle_passwd_with_ldap.patch'
896--- debian/patches/06_handle_passwd_with_ldap.patch 1970-01-01 00:00:00 +0000
897+++ debian/patches/06_handle_passwd_with_ldap.patch 2014-09-30 05:25:02 +0000
898@@ -0,0 +1,19 @@
899+Description: Handle the case where passwd re-asks for the current password when it was entered incorrectly (when using LDAP)
900+ Based on a patch from Ryan Tandy
901+Author: Chris Coulson <chris.coulson@canonical.com>
902+Bug-Ubuntu: https:/launchpad.net/bugs/607357
903+Forwarded: no
904+
905+Index: gnome-control-center-3.3.91/panels/user-accounts/run-passwd.c
906+===================================================================
907+--- gnome-control-center-3.3.91.orig/panels/user-accounts/run-passwd.c 2011-08-25 17:09:31.000000000 +0200
908++++ gnome-control-center-3.3.91/panels/user-accounts/run-passwd.c 2012-03-06 17:52:14.335082975 +0100
909+@@ -408,7 +408,7 @@
910+
911+ if (is_string_complete (str->str, "assword: ", "failure", "wrong", "error", NULL)) {
912+
913+- if (strstr (str->str, "assword: ") != NULL) {
914++ if (strstr (str->str, "assword: ") != NULL && strstr (str->str, "incorrect") == NULL) {
915+ /* Authentication successful */
916+
917+ passwd_handler->backend_state = PASSWD_STATE_NEW;
918
919=== added file 'debian/patches/07_polkit_wheel_sudo_group.patch'
920--- debian/patches/07_polkit_wheel_sudo_group.patch 1970-01-01 00:00:00 +0000
921+++ debian/patches/07_polkit_wheel_sudo_group.patch 2014-09-30 05:25:02 +0000
922@@ -0,0 +1,16 @@
923+Description: The "wheel" group is not existing on debian, check the "sudo" one instead
924+Author: Laurent Bigonville <bigon@debian.org>
925+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760722
926+Forwarded: not-needed
927+
928+--- a/panels/common/gnome-control-center.rules
929++++ b/panels/common/gnome-control-center.rules
930+@@ -6,7 +6,7 @@ polkit.addRule(function(action, subject)
931+ action.id == "org.gnome.controlcenter.datetime.configure") &&
932+ subject.local &&
933+ subject.active &&
934+- subject.isInGroup ("wheel")) {
935++ subject.isInGroup ("sudo")) {
936+ return polkit.Result.YES;
937+ }
938+ });
939
940=== modified file 'debian/patches/52_region_language.patch'
941--- debian/patches/52_region_language.patch 2014-02-12 00:19:03 +0000
942+++ debian/patches/52_region_language.patch 2014-09-30 05:25:02 +0000
943@@ -140,7 +140,7 @@
944 g_debug ("Trying to select lang '%s' in treeview", lang);
945 model = gtk_tree_view_get_model (treeview);
946 found = FALSE;
947-@@ -513,6 +574,7 @@
948+@@ -518,6 +579,7 @@
949 return lang;
950 }
951
952@@ -148,7 +148,7 @@
953 static void
954 add_other_users_language (GHashTable *ht)
955 {
956-@@ -573,6 +635,7 @@
957+@@ -578,6 +640,7 @@
958
959 g_object_unref (proxy);
960 }
961@@ -156,7 +156,7 @@
962
963 static void
964 insert_language (GHashTable *ht,
965-@@ -596,10 +659,10 @@
966+@@ -601,10 +664,10 @@
967
968 g_debug ("We have translations for %s", lang);
969
970@@ -169,7 +169,7 @@
971
972 label_own_lang = gnome_get_language_from_locale (key, key);
973 label_current_lang = gnome_get_language_from_locale (key, NULL);
974-@@ -625,9 +688,18 @@
975+@@ -630,9 +693,18 @@
976 cc_common_language_get_initial_languages (void)
977 {
978 GHashTable *ht;
979@@ -188,7 +188,7 @@
980 insert_language (ht, "en_US");
981 insert_language (ht, "en_GB");
982 insert_language (ht, "de_DE");
983-@@ -637,7 +709,7 @@
984+@@ -642,7 +714,7 @@
985 insert_language (ht, "ja_JP");
986 insert_language (ht, "ru_RU");
987 insert_language (ht, "ar_EG");
988@@ -197,7 +197,7 @@
989 return ht;
990 }
991
992-@@ -651,10 +723,10 @@
993+@@ -656,10 +728,10 @@
994 ht = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
995
996 /* Add the languages used by other users on the system */
997@@ -210,7 +210,7 @@
998 if (g_hash_table_lookup (ht, name) == NULL) {
999 language = gnome_get_language_from_locale (name, NULL);
1000 g_hash_table_insert (ht, name, language);
1001-@@ -703,6 +775,28 @@
1002+@@ -708,6 +780,28 @@
1003 return ht;
1004 }
1005
1006@@ -239,7 +239,7 @@
1007 static void
1008 foreach_user_lang_cb (gpointer key,
1009 gpointer value,
1010-@@ -734,7 +828,7 @@
1011+@@ -739,7 +833,7 @@
1012 user_langs = cc_common_language_get_initial_languages ();
1013
1014 /* Add the current locale first */
1015@@ -248,7 +248,7 @@
1016 display = g_hash_table_lookup (user_langs, name);
1017 if (!display) {
1018 insert_language (user_langs, name);
1019-@@ -750,8 +844,8 @@
1020+@@ -755,8 +849,8 @@
1021 g_hash_table_foreach (user_langs, (GHFunc) foreach_user_lang_cb, store);
1022
1023 /* And now the "Other…" selection */
1024@@ -287,8 +287,8 @@
1025 * Copyright (C) 2013 Red Hat, Inc
1026 *
1027 * This program is free software; you can redistribute it and/or modify
1028-@@ -79,7 +78,9 @@
1029- egg_list_box_refilter (EGG_LIST_BOX (priv->language_list));
1030+@@ -335,7 +334,9 @@
1031+ gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->language_list));
1032 }
1033 } else {
1034 +
1035@@ -299,7 +299,7 @@
1036 g_list_free (children);
1037 --- a/panels/region/cc-format-chooser.c
1038 +++ b/panels/region/cc-format-chooser.c
1039-@@ -170,7 +170,9 @@
1040+@@ -168,7 +168,9 @@
1041
1042 } else {
1043 /* mark as unselected */
1044@@ -311,7 +311,7 @@
1045 g_list_free (children);
1046 --- a/panels/region/cc-input-chooser.c
1047 +++ b/panels/region/cc-input-chooser.c
1048-@@ -909,7 +909,7 @@
1049+@@ -891,7 +891,7 @@
1050 lang_code != NULL &&
1051 country_code != NULL)
1052 {
1053@@ -320,7 +320,7 @@
1054
1055 info = g_hash_table_lookup (priv->locales, locale);
1056 if (info)
1057-@@ -1034,7 +1034,7 @@
1058+@@ -1016,7 +1016,7 @@
1059 if (!gnome_parse_locale (*locale, &lang_code, &country_code, NULL, NULL))
1060 continue;
1061
1062@@ -331,7 +331,7 @@
1063 g_free (simple_locale);
1064 --- a/panels/region/cc-region-panel.c
1065 +++ b/panels/region/cc-region-panel.c
1066-@@ -404,14 +404,55 @@
1067+@@ -424,6 +424,47 @@
1068 }
1069
1070 static void
1071@@ -379,17 +379,15 @@
1072 update_region (CcRegionPanel *self,
1073 const gchar *region)
1074 {
1075-- CcRegionPanelPrivate *priv = self->priv;
1076-+ CcRegionPanelPrivate *priv = self->priv;
1077-
1078- if (g_strcmp0 (region, priv->region) == 0)
1079- return;
1080--
1081-+ set_formats_locale(region);
1082- g_settings_set_string (priv->locale_settings, KEY_REGION, region);
1083- maybe_notify (self, LC_TIME, region);
1084- }
1085-@@ -545,7 +586,7 @@
1086+@@ -434,6 +475,7 @@
1087+ } else {
1088+ if (g_strcmp0 (region, priv->region) == 0)
1089+ return;
1090++ set_formats_locale(region);
1091+ g_settings_set_string (priv->locale_settings, KEY_REGION, region);
1092+ if (priv->login_auto_apply)
1093+ set_system_region (self, region);
1094+@@ -595,7 +637,7 @@
1095 CcRegionPanelPrivate *priv = self->priv;
1096
1097 g_free (priv->region);
1098@@ -398,20 +396,21 @@
1099 update_region_label (self);
1100 }
1101
1102-@@ -576,14 +617,16 @@
1103+@@ -628,15 +670,17 @@
1104+ update_language_from_user (CcRegionPanel *self)
1105 {
1106 CcRegionPanelPrivate *priv = self->priv;
1107- const gchar *language;
1108--
1109+- const gchar *language;
1110++ const gchar *language, *locale;
1111+
1112 - if (act_user_is_loaded (priv->user))
1113-+ const gchar *locale;
1114 + if (act_user_is_loaded (priv->user)){
1115 language = act_user_get_language (priv->user);
1116 + cc_common_language_get_locale (language, &locale);
1117 + }
1118 else
1119-- language = "en_US.utf-8";
1120-+ locale = "en_US.UTF-8";
1121+- language = setlocale (LC_MESSAGES, NULL);
1122++ locale = setlocale (LC_MESSAGES, NULL);
1123
1124 g_free (priv->language);
1125 - priv->language = g_strdup (language);
1126@@ -419,7 +418,7 @@
1127 update_language_label (self);
1128 }
1129
1130-@@ -1428,6 +1471,16 @@
1131+@@ -1484,6 +1528,16 @@
1132 update_buttons (self);
1133 }
1134
1135@@ -436,7 +435,7 @@
1136 static void
1137 on_localed_properties_changed (GDBusProxy *proxy,
1138 GVariant *changed_properties,
1139-@@ -1442,34 +1495,49 @@
1140+@@ -1498,34 +1552,50 @@
1141 const gchar **strv;
1142 gsize len;
1143 gint i;
1144@@ -468,11 +467,12 @@
1145 + g_free (strv);
1146 +
1147 if (!lang) {
1148-- lang = "";
1149+- lang = setlocale (LC_MESSAGES, NULL);
1150 + lang = g_strdup ("en_US.UTF-8");
1151 }
1152 - if (!messages) {
1153 - messages = lang;
1154++
1155 + if (!language) {
1156 + if (messages)
1157 + language = g_strdup (messages);
1158@@ -496,7 +496,7 @@
1159
1160 update_language_label (self);
1161 }
1162-@@ -1539,29 +1607,28 @@
1163+@@ -1595,29 +1665,28 @@
1164 CcRegionPanelPrivate *priv = self->priv;
1165 GVariantBuilder *b;
1166 gchar *s;
1167@@ -542,7 +542,7 @@
1168 g_variant_new ("(asb)", b, TRUE),
1169 --- a/panels/user-accounts/um-user-panel.c
1170 +++ b/panels/user-accounts/um-user-panel.c
1171-@@ -697,8 +697,9 @@
1172+@@ -701,8 +701,9 @@
1173 cc_common_language_add_user_languages (model);
1174
1175 lang = g_strdup (act_user_get_language (user));
1176@@ -553,7 +553,7 @@
1177 if (cc_common_language_get_iter_for_language (model, lang, &iter))
1178 um_editable_combo_set_active_iter (UM_EDITABLE_COMBO (widget), &iter);
1179 g_free (lang);
1180-@@ -824,8 +825,9 @@
1181+@@ -828,8 +829,9 @@
1182 }
1183 else {
1184 lang = g_strdup (act_user_get_language (user));
1185@@ -564,7 +564,7 @@
1186 }
1187 }
1188 cc_common_language_get_iter_for_language (model, lang, &iter);
1189-@@ -845,6 +847,7 @@
1190+@@ -849,6 +851,7 @@
1191 GtkTreeModel *model;
1192 GtkTreeIter iter;
1193 gchar *lang;
1194@@ -572,7 +572,7 @@
1195 ActUser *user;
1196
1197 if (!um_editable_combo_get_active_iter (combo, &iter))
1198-@@ -855,8 +858,10 @@
1199+@@ -859,8 +862,10 @@
1200 model = um_editable_combo_get_model (combo);
1201
1202 gtk_tree_model_get (model, &iter, 0, &lang, -1);
1203
1204=== modified file 'debian/patches/99_add_lock-on-suspend.patch'
1205--- debian/patches/99_add_lock-on-suspend.patch 2014-02-12 00:19:03 +0000
1206+++ debian/patches/99_add_lock-on-suspend.patch 2014-09-30 05:25:02 +0000
1207@@ -12,11 +12,9 @@
1208 panels/privacy/privacy.ui | 31 +++++++++++++++++++++++++++++++
1209 2 files changed, 36 insertions(+)
1210
1211-diff --git a/panels/privacy/cc-privacy-panel.c b/panels/privacy/cc-privacy-panel.c
1212-index d92b9e4..fb1be4c 100644
1213 --- a/panels/privacy/cc-privacy-panel.c
1214 +++ b/panels/privacy/cc-privacy-panel.c
1215-@@ -299,6 +299,11 @@ add_screen_lock (CcPrivacyPanel *self)
1216+@@ -276,6 +276,11 @@
1217 g_settings_bind (self->priv->notification_settings, "show-in-lock-screen",
1218 w, "active",
1219 G_SETTINGS_BIND_DEFAULT);
1220@@ -28,11 +26,9 @@
1221 }
1222
1223 static void
1224-diff --git a/panels/privacy/privacy.ui b/panels/privacy/privacy.ui
1225-index ec62b70..b5d43f4 100644
1226 --- a/panels/privacy/privacy.ui
1227 +++ b/panels/privacy/privacy.ui
1228-@@ -612,6 +612,37 @@
1229+@@ -653,6 +653,37 @@
1230 <property name="height">1</property>
1231 </packing>
1232 </child>
1233@@ -70,6 +66,3 @@
1234 </object>
1235 <packing>
1236 <property name="expand">False</property>
1237---
1238-1.8.1.2
1239-
1240
1241=== removed file 'debian/patches/gcc_not_in_unity.patch'
1242--- debian/patches/gcc_not_in_unity.patch 2014-05-06 00:21:13 +0000
1243+++ debian/patches/gcc_not_in_unity.patch 1970-01-01 00:00:00 +0000
1244@@ -1,154 +0,0 @@
1245---- a/panels/bluetooth/gnome-bluetooth-panel.desktop.in.in
1246-+++ b/panels/bluetooth/gnome-bluetooth-panel.desktop.in.in
1247-@@ -6,7 +6,7 @@
1248- Terminal=false
1249- Type=Application
1250- Categories=GTK;GNOME;Settings;X-GNOME-NetworkSettings;HardwareSettings;X-GNOME-Settings-Panel;
1251--OnlyShowIn=GNOME;Unity;
1252-+OnlyShowIn=GNOME;
1253- StartupNotify=true
1254- X-GNOME-Bugzilla-Bugzilla=GNOME
1255- X-GNOME-Bugzilla-Product=gnome-bluetooth
1256---- a/panels/color/gnome-color-panel.desktop.in.in
1257-+++ b/panels/color/gnome-color-panel.desktop.in.in
1258-@@ -7,7 +7,7 @@
1259- Type=Application
1260- StartupNotify=true
1261- Categories=GNOME;GTK;Settings;X-GNOME-Settings-Panel;HardwareSettings;
1262--OnlyShowIn=GNOME;Unity;
1263-+OnlyShowIn=GNOME
1264- X-GNOME-Bugzilla-Bugzilla=GNOME
1265- X-GNOME-Bugzilla-Product=gnome-control-center
1266- X-GNOME-Bugzilla-Component=color
1267---- a/panels/display/gnome-display-panel.desktop.in.in
1268-+++ b/panels/display/gnome-display-panel.desktop.in.in
1269-@@ -7,7 +7,7 @@
1270- Type=Application
1271- StartupNotify=true
1272- Categories=GNOME;GTK;Settings;HardwareSettings;X-GNOME-Settings-Panel;
1273--OnlyShowIn=GNOME;Unity;
1274-+OnlyShowIn=GNOME;
1275- X-GNOME-Bugzilla-Bugzilla=GNOME
1276- X-GNOME-Bugzilla-Product=gnome-control-center
1277- X-GNOME-Bugzilla-Component=Screen resolution
1278---- a/panels/info/gnome-info-panel.desktop.in.in
1279-+++ b/panels/info/gnome-info-panel.desktop.in.in
1280-@@ -7,7 +7,7 @@
1281- Type=Application
1282- StartupNotify=true
1283- Categories=GNOME;GTK;Settings;X-GNOME-SystemSettings;X-GNOME-Settings-Panel;
1284--OnlyShowIn=GNOME;Unity;
1285-+OnlyShowIn=GNOME;
1286- X-GNOME-Bugzilla-Bugzilla=GNOME
1287- X-GNOME-Bugzilla-Product=gnome-control-center
1288- X-GNOME-Bugzilla-Component=info
1289---- a/panels/keyboard/gnome-keyboard-panel.desktop.in.in
1290-+++ b/panels/keyboard/gnome-keyboard-panel.desktop.in.in
1291-@@ -7,7 +7,7 @@
1292- Type=Application
1293- StartupNotify=true
1294- Categories=GNOME;GTK;Settings;HardwareSettings;X-GNOME-Settings-Panel;
1295--OnlyShowIn=GNOME;Unity;
1296-+OnlyShowIn=GNOME;
1297- X-GNOME-Bugzilla-Bugzilla=GNOME
1298- X-GNOME-Bugzilla-Product=gnome-control-center
1299- X-GNOME-Bugzilla-Component=keyboard
1300---- a/panels/mouse/gnome-mouse-panel.desktop.in.in
1301-+++ b/panels/mouse/gnome-mouse-panel.desktop.in.in
1302-@@ -7,7 +7,7 @@
1303- Type=Application
1304- StartupNotify=true
1305- Categories=GNOME;GTK;Settings;HardwareSettings;X-GNOME-Settings-Panel;
1306--OnlyShowIn=GNOME;Unity;
1307-+OnlyShowIn=GNOME;
1308- X-GNOME-Bugzilla-Bugzilla=GNOME
1309- X-GNOME-Bugzilla-Product=gnome-control-center
1310- X-GNOME-Bugzilla-Component=mouse
1311---- a/panels/network/gnome-network-panel.desktop.in.in
1312-+++ b/panels/network/gnome-network-panel.desktop.in.in
1313-@@ -7,7 +7,7 @@
1314- Type=Application
1315- StartupNotify=true
1316- Categories=GNOME;GTK;Settings;HardwareSettings;X-GNOME-Settings-Panel;
1317--OnlyShowIn=GNOME;Unity;
1318-+OnlyShowIn=GNOME;
1319- X-GNOME-Bugzilla-Bugzilla=GNOME
1320- X-GNOME-Bugzilla-Product=gnome-control-center
1321- X-GNOME-Bugzilla-Component=network
1322---- a/panels/power/gnome-power-panel.desktop.in.in
1323-+++ b/panels/power/gnome-power-panel.desktop.in.in
1324-@@ -7,7 +7,7 @@
1325- Type=Application
1326- StartupNotify=true
1327- Categories=GNOME;GTK;Settings;DesktopSettings;X-GNOME-Settings-Panel;HardwareSettings;
1328--OnlyShowIn=GNOME;Unity;
1329-+OnlyShowIn=GNOME;
1330- X-GNOME-Bugzilla-Bugzilla=GNOME
1331- X-GNOME-Bugzilla-Product=gnome-control-center
1332- X-GNOME-Bugzilla-Component=power
1333---- a/panels/universal-access/gnome-universal-access-panel.desktop.in.in
1334-+++ b/panels/universal-access/gnome-universal-access-panel.desktop.in.in
1335-@@ -7,7 +7,7 @@
1336- Type=Application
1337- StartupNotify=true
1338- Categories=GNOME;GTK;Settings;X-GNOME-SystemSettings;X-GNOME-Settings-Panel;
1339--OnlyShowIn=GNOME;Unity;
1340-+OnlyShowIn=GNOME;
1341- X-GNOME-Bugzilla-Bugzilla=GNOME
1342- X-GNOME-Bugzilla-Product=gnome-control-center
1343- X-GNOME-Bugzilla-Component=Universal Access
1344---- a/panels/user-accounts/data/gnome-user-accounts-panel.desktop.in.in
1345-+++ b/panels/user-accounts/data/gnome-user-accounts-panel.desktop.in.in
1346-@@ -7,7 +7,7 @@
1347- Type=Application
1348- StartupNotify=true
1349- Categories=System;Settings;X-GNOME-Settings-Panel;X-GNOME-SystemSettings;
1350--OnlyShowIn=GNOME;Unity;
1351-+OnlyShowIn=GNOME;
1352- X-GNOME-Bugzilla-Bugzilla=GNOME
1353- X-GNOME-Bugzilla-Product=gnome-control-center
1354- X-GNOME-Bugzilla-Component=user-accounts
1355---- a/panels/wacom/gnome-wacom-panel.desktop.in.in
1356-+++ b/panels/wacom/gnome-wacom-panel.desktop.in.in
1357-@@ -7,7 +7,7 @@
1358- Type=Application
1359- StartupNotify=true
1360- Categories=GNOME;GTK;Settings;HardwareSettings;X-GNOME-Settings-Panel;
1361--OnlyShowIn=GNOME;Unity;
1362-+OnlyShowIn=GNOME;
1363- X-GNOME-Bugzilla-Bugzilla=GNOME
1364- X-GNOME-Bugzilla-Product=gnome-control-center
1365- X-GNOME-Bugzilla-Component=wacom
1366---- a/shell/gnome-control-center.desktop.in.in
1367-+++ b/shell/gnome-control-center.desktop.in.in
1368-@@ -6,7 +6,7 @@
1369- Type=Application
1370- StartupNotify=true
1371- Categories=GNOME;GTK;System;
1372--OnlyShowIn=GNOME;Unity;
1373-+OnlyShowIn=GNOME;
1374- X-GNOME-Bugzilla-Bugzilla=GNOME
1375- X-GNOME-Bugzilla-Product=gnome-control-center
1376- X-GNOME-Bugzilla-Component=shell
1377---- a/panels/region/gnome-region-panel.desktop.in.in
1378-+++ b/panels/region/gnome-region-panel.desktop.in.in
1379-@@ -7,7 +7,7 @@
1380- Type=Application
1381- StartupNotify=true
1382- Categories=GNOME;GTK;Settings;DesktopSettings;X-GNOME-Settings-Panel;X-GNOME-PersonalSettings;
1383--OnlyShowIn=GNOME;Unity;
1384-+OnlyShowIn=GNOME;
1385- X-GNOME-Bugzilla-Bugzilla=GNOME
1386- X-GNOME-Bugzilla-Product=gnome-control-center
1387- X-GNOME-Bugzilla-Component=region
1388---- a/panels/sound/data/gnome-sound-panel.desktop.in.in
1389-+++ b/panels/sound/data/gnome-sound-panel.desktop.in.in
1390-@@ -7,7 +7,7 @@
1391- Type=Application
1392- StartupNotify=true
1393- Categories=GNOME;GTK;Settings;HardwareSettings;X-GNOME-Settings-Panel;
1394--OnlyShowIn=GNOME;Unity;
1395-+OnlyShowIn=GNOME;
1396- X-GNOME-Bugzilla-Bugzilla=GNOME
1397- X-GNOME-Bugzilla-Product=gnome-control-center
1398- X-GNOME-Bugzilla-Component=sound
1399
1400=== removed file 'debian/patches/git-background-lock-screen.patch'
1401--- debian/patches/git-background-lock-screen.patch 2014-02-12 00:19:03 +0000
1402+++ debian/patches/git-background-lock-screen.patch 1970-01-01 00:00:00 +0000
1403@@ -1,862 +0,0 @@
1404-From 5e7afdf89c5722f494ecaac6179e2aed256d1976 Mon Sep 17 00:00:00 2001
1405-From: Bastien Nocera <hadess@hadess.net>
1406-Date: Mon, 19 Aug 2013 21:00:48 +0200
1407-Subject: [PATCH] background: Add support for lock screen background
1408-
1409-https://bugzilla.gnome.org/show_bug.cgi?id=696166
1410----
1411- panels/background/background.ui | 289 +++++++++++++++++++++++++-------
1412- panels/background/cc-background-panel.c | 208 ++++++++++++++++-------
1413- 2 files changed, 375 insertions(+), 122 deletions(-)
1414-
1415-diff --git a/panels/background/background.ui b/panels/background/background.ui
1416-index 77e9968..2b72502 100644
1417---- a/panels/background/background.ui
1418-+++ b/panels/background/background.ui
1419-@@ -4,115 +4,286 @@
1420- <object class="GtkHBox" id="background-panel">
1421- <property name="visible">True</property>
1422- <property name="can_focus">False</property>
1423-+ <property name="margin_left">6</property>
1424-+ <property name="margin_right">6</property>
1425-+ <property name="margin_top">6</property>
1426-+ <property name="margin_bottom">6</property>
1427- <property name="border_width">10</property>
1428- <property name="spacing">12</property>
1429-- <property name="margin-left">6</property>
1430-- <property name="margin-right">6</property>
1431-- <property name="margin-top">6</property>
1432-- <property name="margin-bottom">6</property>
1433- <child>
1434-- <object class="GtkVBox" id="vbox3">
1435-+ <object class="GtkBox" id="box1">
1436- <property name="visible">True</property>
1437- <property name="can_focus">False</property>
1438-- <property name="spacing">6</property>
1439-+ <property name="margin_top">100</property>
1440-+ <property name="margin_bottom">100</property>
1441- <child>
1442-- <object class="GtkAspectFrame" id="aspectframe1">
1443-+ <object class="GtkVBox" id="vbox3">
1444- <property name="visible">True</property>
1445- <property name="can_focus">False</property>
1446-- <property name="margin_left">12</property>
1447-- <property name="label_xalign">0</property>
1448-- <property name="shadow_type">none</property>
1449- <child>
1450-- <object class="GtkButton" id="background-set-button">
1451-- <property name="use_action_appearance">False</property>
1452-+ <object class="GtkAspectFrame" id="aspectframe1">
1453- <property name="visible">True</property>
1454-- <property name="can_focus">True</property>
1455-- <property name="receives_default">True</property>
1456-- <property name="valign">center</property>
1457-+ <property name="can_focus">False</property>
1458-+ <property name="margin_right">12</property>
1459-+ <property name="label_xalign">0</property>
1460-+ <property name="shadow_type">none</property>
1461- <child>
1462-- <object class="GtkDrawingArea" id="background-desktop-drawingarea">
1463-- <property name="width_request">417</property>
1464-- <property name="height_request">250</property>
1465-+ <object class="GtkButton" id="background-set-button">
1466- <property name="visible">True</property>
1467-- <property name="can_focus">False</property>
1468-+ <property name="can_focus">True</property>
1469-+ <property name="receives_default">True</property>
1470- <property name="valign">center</property>
1471-- <property name="margin_left">6</property>
1472-- <property name="margin_right">6</property>
1473-- <property name="margin_top">6</property>
1474-- <property name="margin_bottom">6</property>
1475-- <property name="hexpand">True</property>
1476-- <property name="vexpand">True</property>
1477-+ <child>
1478-+ <object class="GtkBox" id="box2">
1479-+ <property name="visible">True</property>
1480-+ <property name="can_focus">False</property>
1481-+ <property name="orientation">vertical</property>
1482-+ <child>
1483-+ <object class="GtkDrawingArea" id="background-desktop-drawingarea">
1484-+ <property name="width_request">310</property>
1485-+ <property name="height_request">170</property>
1486-+ <property name="visible">True</property>
1487-+ <property name="can_focus">False</property>
1488-+ <property name="valign">center</property>
1489-+ <property name="margin_left">6</property>
1490-+ <property name="margin_right">6</property>
1491-+ <property name="margin_top">6</property>
1492-+ <property name="margin_bottom">6</property>
1493-+ <property name="hexpand">True</property>
1494-+ <property name="vexpand">True</property>
1495-+ </object>
1496-+ <packing>
1497-+ <property name="expand">False</property>
1498-+ <property name="fill">True</property>
1499-+ <property name="position">0</property>
1500-+ </packing>
1501-+ </child>
1502-+ <child>
1503-+ <object class="GtkLabel" id="label1">
1504-+ <property name="visible">True</property>
1505-+ <property name="can_focus">False</property>
1506-+ <property name="label" translatable="yes">Background</property>
1507-+ </object>
1508-+ <packing>
1509-+ <property name="expand">False</property>
1510-+ <property name="fill">True</property>
1511-+ <property name="position">1</property>
1512-+ </packing>
1513-+ </child>
1514-+ </object>
1515-+ </child>
1516- </object>
1517- </child>
1518- </object>
1519-+ <packing>
1520-+ <property name="expand">True</property>
1521-+ <property name="fill">True</property>
1522-+ <property name="position">0</property>
1523-+ </packing>
1524- </child>
1525-- </object>
1526-- <packing>
1527-- <property name="expand">True</property>
1528-- <property name="fill">True</property>
1529-- <property name="position">0</property>
1530-- </packing>
1531-- </child>
1532-- <child>
1533-- <object class="GtkHBox" id="bottom-hbox">
1534-- <property name="visible">True</property>
1535-- <property name="can_focus">False</property>
1536-- <property name="spacing">12</property>
1537- <child>
1538-- <object class="GtkHBox" id="hbox2">
1539-+ <object class="GtkHBox" id="bottom-hbox">
1540- <property name="visible">True</property>
1541- <property name="can_focus">False</property>
1542-- <property name="halign">center</property>
1543-- <property name="spacing">2</property>
1544-+ <property name="spacing">12</property>
1545- <child>
1546-- <object class="GtkImage" id="slide_image">
1547-+ <object class="GtkHBox" id="hbox2">
1548- <property name="visible">True</property>
1549- <property name="can_focus">False</property>
1550-- <property name="icon_name">slideshow-symbolic</property>
1551-+ <property name="halign">center</property>
1552-+ <property name="margin_top">12</property>
1553-+ <property name="spacing">2</property>
1554-+ <child>
1555-+ <object class="GtkImage" id="slide_image">
1556-+ <property name="visible">True</property>
1557-+ <property name="can_focus">False</property>
1558-+ <property name="icon_name">slideshow-symbolic</property>
1559-+ </object>
1560-+ <packing>
1561-+ <property name="expand">False</property>
1562-+ <property name="fill">True</property>
1563-+ <property name="position">0</property>
1564-+ </packing>
1565-+ </child>
1566-+ <child>
1567-+ <object class="GtkLabel" id="strut">
1568-+ <property name="visible">True</property>
1569-+ <property name="can_focus">False</property>
1570-+ <property name="label"> </property>
1571-+ </object>
1572-+ <packing>
1573-+ <property name="expand">False</property>
1574-+ <property name="fill">True</property>
1575-+ <property name="position">1</property>
1576-+ </packing>
1577-+ </child>
1578-+ <child>
1579-+ <object class="GtkLabel" id="slide-label">
1580-+ <property name="visible">True</property>
1581-+ <property name="can_focus">False</property>
1582-+ <property name="xalign">0</property>
1583-+ <property name="label" translatable="yes" comments="This refers to a slideshow background">Changes throughout the day</property>
1584-+ </object>
1585-+ <packing>
1586-+ <property name="expand">False</property>
1587-+ <property name="fill">True</property>
1588-+ <property name="position">1</property>
1589-+ </packing>
1590-+ </child>
1591- </object>
1592- <packing>
1593-- <property name="expand">False</property>
1594-+ <property name="expand">True</property>
1595- <property name="fill">True</property>
1596- <property name="position">0</property>
1597- </packing>
1598- </child>
1599-+ </object>
1600-+ <packing>
1601-+ <property name="expand">False</property>
1602-+ <property name="fill">True</property>
1603-+ <property name="position">2</property>
1604-+ </packing>
1605-+ </child>
1606-+ </object>
1607-+ <packing>
1608-+ <property name="expand">False</property>
1609-+ <property name="fill">True</property>
1610-+ <property name="position">0</property>
1611-+ </packing>
1612-+ </child>
1613-+ <child>
1614-+ <object class="GtkVBox" id="vbox1">
1615-+ <property name="visible">True</property>
1616-+ <property name="can_focus">False</property>
1617-+ <child>
1618-+ <object class="GtkAspectFrame" id="aspectframe2">
1619-+ <property name="visible">True</property>
1620-+ <property name="can_focus">False</property>
1621-+ <property name="margin_left">12</property>
1622-+ <property name="label_xalign">0</property>
1623-+ <property name="shadow_type">none</property>
1624- <child>
1625-- <object class="GtkLabel" id="strut">
1626-+ <object class="GtkButton" id="background-lock-set-button">
1627- <property name="visible">True</property>
1628-- <property name="can_focus">False</property>
1629-- <property name="label"> </property>
1630-+ <property name="can_focus">True</property>
1631-+ <property name="receives_default">True</property>
1632-+ <property name="valign">center</property>
1633-+ <child>
1634-+ <object class="GtkBox" id="box3">
1635-+ <property name="visible">True</property>
1636-+ <property name="can_focus">False</property>
1637-+ <property name="orientation">vertical</property>
1638-+ <child>
1639-+ <object class="GtkDrawingArea" id="background-lock-drawingarea">
1640-+ <property name="width_request">310</property>
1641-+ <property name="height_request">170</property>
1642-+ <property name="visible">True</property>
1643-+ <property name="can_focus">False</property>
1644-+ <property name="valign">center</property>
1645-+ <property name="margin_left">6</property>
1646-+ <property name="margin_right">6</property>
1647-+ <property name="margin_top">6</property>
1648-+ <property name="margin_bottom">6</property>
1649-+ <property name="hexpand">True</property>
1650-+ <property name="vexpand">True</property>
1651-+ </object>
1652-+ <packing>
1653-+ <property name="expand">False</property>
1654-+ <property name="fill">True</property>
1655-+ <property name="position">0</property>
1656-+ </packing>
1657-+ </child>
1658-+ <child>
1659-+ <object class="GtkLabel" id="label2">
1660-+ <property name="visible">True</property>
1661-+ <property name="can_focus">False</property>
1662-+ <property name="label" translatable="yes">Lock Screen</property>
1663-+ </object>
1664-+ <packing>
1665-+ <property name="expand">False</property>
1666-+ <property name="fill">True</property>
1667-+ <property name="position">1</property>
1668-+ </packing>
1669-+ </child>
1670-+ </object>
1671-+ </child>
1672- </object>
1673-- <packing>
1674-- <property name="expand">False</property>
1675-- <property name="fill">True</property>
1676-- <property name="position">1</property>
1677-- </packing>
1678- </child>
1679-+ </object>
1680-+ <packing>
1681-+ <property name="expand">True</property>
1682-+ <property name="fill">True</property>
1683-+ <property name="position">0</property>
1684-+ </packing>
1685-+ </child>
1686-+ <child>
1687-+ <object class="GtkHBox" id="bottom-hbox1">
1688-+ <property name="visible">True</property>
1689-+ <property name="can_focus">False</property>
1690-+ <property name="spacing">12</property>
1691- <child>
1692-- <object class="GtkLabel" id="slide-label">
1693-+ <object class="GtkHBox" id="hbox1">
1694- <property name="visible">True</property>
1695- <property name="can_focus">False</property>
1696-- <property name="xalign">0</property>
1697-- <property name="label" translatable="yes" comments="This refers to a slideshow background">Changes throughout the day</property>
1698-+ <property name="halign">center</property>
1699-+ <property name="margin_top">12</property>
1700-+ <property name="spacing">2</property>
1701-+ <child>
1702-+ <object class="GtkImage" id="slide_image1">
1703-+ <property name="visible">True</property>
1704-+ <property name="can_focus">False</property>
1705-+ <property name="icon_name">slideshow-symbolic</property>
1706-+ </object>
1707-+ <packing>
1708-+ <property name="expand">False</property>
1709-+ <property name="fill">True</property>
1710-+ <property name="position">0</property>
1711-+ </packing>
1712-+ </child>
1713-+ <child>
1714-+ <object class="GtkLabel" id="strut1">
1715-+ <property name="visible">True</property>
1716-+ <property name="can_focus">False</property>
1717-+ <property name="label"> </property>
1718-+ </object>
1719-+ <packing>
1720-+ <property name="expand">False</property>
1721-+ <property name="fill">True</property>
1722-+ <property name="position">1</property>
1723-+ </packing>
1724-+ </child>
1725-+ <child>
1726-+ <object class="GtkLabel" id="slide-label1">
1727-+ <property name="visible">True</property>
1728-+ <property name="can_focus">False</property>
1729-+ <property name="xalign">0</property>
1730-+ <property name="label" translatable="yes" comments="This refers to a slideshow background">Changes throughout the day</property>
1731-+ </object>
1732-+ <packing>
1733-+ <property name="expand">False</property>
1734-+ <property name="fill">True</property>
1735-+ <property name="position">1</property>
1736-+ </packing>
1737-+ </child>
1738- </object>
1739- <packing>
1740-- <property name="expand">False</property>
1741-+ <property name="expand">True</property>
1742- <property name="fill">True</property>
1743-- <property name="position">1</property>
1744-+ <property name="position">0</property>
1745- </packing>
1746- </child>
1747- </object>
1748- <packing>
1749-- <property name="expand">True</property>
1750-+ <property name="expand">False</property>
1751- <property name="fill">True</property>
1752-- <property name="position">0</property>
1753-+ <property name="position">2</property>
1754- </packing>
1755- </child>
1756- </object>
1757- <packing>
1758- <property name="expand">False</property>
1759- <property name="fill">True</property>
1760-- <property name="position">2</property>
1761-+ <property name="position">1</property>
1762- </packing>
1763- </child>
1764- </object>
1765-diff --git a/panels/background/cc-background-panel.c b/panels/background/cc-background-panel.c
1766-index 14fa244..8de6e23 100644
1767---- a/panels/background/cc-background-panel.c
1768-+++ b/panels/background/cc-background-panel.c
1769-@@ -38,6 +38,7 @@
1770- #include "bg-pictures-source.h"
1771-
1772- #define WP_PATH_ID "org.gnome.desktop.background"
1773-+#define WP_LOCK_PATH_ID "org.gnome.desktop.screensaver"
1774- #define WP_URI_KEY "picture-uri"
1775- #define WP_OPTIONS_KEY "picture-options"
1776- #define WP_SHADING_KEY "color-shading-type"
1777-@@ -55,10 +56,12 @@ struct _CcBackgroundPanelPrivate
1778- GDBusConnection *connection;
1779-
1780- GSettings *settings;
1781-+ GSettings *lock_settings;
1782-
1783- GnomeDesktopThumbnailFactory *thumb_factory;
1784-
1785- CcBackgroundItem *current_background;
1786-+ CcBackgroundItem *current_lock_background;
1787-
1788- GCancellable *copy_cancellable;
1789- GCancellable *capture_cancellable;
1790-@@ -71,6 +74,8 @@ struct _CcBackgroundPanelPrivate
1791- };
1792-
1793- #define WID(y) (GtkWidget *) gtk_builder_get_object (priv->builder, y)
1794-+#define CURRENT_BG (settings == priv->settings ? priv->current_background : priv->current_lock_background)
1795-+#define SAVE_PATH (settings == priv->settings ? "last-edited.xml" : "last-edited-lock.xml")
1796-
1797- static const char *
1798- cc_background_panel_get_help_uri (CcPanel *panel)
1799-@@ -89,6 +94,7 @@ cc_background_panel_dispose (GObject *object)
1800- priv->spinner = NULL;
1801-
1802- g_clear_object (&priv->settings);
1803-+ g_clear_object (&priv->lock_settings);
1804-
1805- if (priv->copy_cancellable)
1806- {
1807-@@ -131,6 +137,7 @@ cc_background_panel_finalize (GObject *object)
1808- CcBackgroundPanelPrivate *priv = CC_BACKGROUND_PANEL (object)->priv;
1809-
1810- g_clear_object (&priv->current_background);
1811-+ g_clear_object (&priv->current_lock_background);
1812-
1813- G_OBJECT_CLASS (cc_background_panel_parent_class)->finalize (object);
1814- }
1815-@@ -151,59 +158,77 @@ cc_background_panel_class_init (CcBackgroundPanelClass *klass)
1816-
1817- static void
1818- update_preview (CcBackgroundPanelPrivate *priv,
1819-+ GSettings *settings,
1820- CcBackgroundItem *item)
1821- {
1822- gboolean changes_with_time;
1823-+ CcBackgroundItem *current_background;
1824-+
1825-+ current_background = CURRENT_BG;
1826-
1827-- if (item && priv->current_background)
1828-+ if (item && current_background)
1829- {
1830-- g_object_unref (priv->current_background);
1831-- priv->current_background = cc_background_item_copy (item);
1832-- cc_background_item_load (priv->current_background, NULL);
1833-+ g_object_unref (current_background);
1834-+ current_background = cc_background_item_copy (item);
1835-+ if (settings == priv->settings)
1836-+ priv->current_background = current_background;
1837-+ else
1838-+ priv->current_lock_background = current_background;
1839-+ cc_background_item_load (current_background, NULL);
1840- }
1841-
1842- changes_with_time = FALSE;
1843-
1844-- if (priv->current_background)
1845-+ if (current_background)
1846- {
1847-- changes_with_time = cc_background_item_changes_with_time (priv->current_background);
1848-+ changes_with_time = cc_background_item_changes_with_time (current_background);
1849- }
1850-
1851-- gtk_widget_set_visible (WID ("slide_image"), changes_with_time);
1852-- gtk_widget_set_visible (WID ("slide-label"), changes_with_time);
1853-+ if (settings == priv->settings)
1854-+ {
1855-+ gtk_widget_set_visible (WID ("slide_image"), changes_with_time);
1856-+ gtk_widget_set_visible (WID ("slide-label"), changes_with_time);
1857-+
1858-+ gtk_widget_queue_draw (WID ("background-desktop-drawingarea"));
1859-+ }
1860-+ else
1861-+ {
1862-+ gtk_widget_set_visible (WID ("slide_image1"), changes_with_time);
1863-+ gtk_widget_set_visible (WID ("slide-label1"), changes_with_time);
1864-
1865-- gtk_widget_queue_draw (WID ("background-desktop-drawingarea"));
1866-+ gtk_widget_queue_draw (WID ("background-lock-drawingarea"));
1867-+ }
1868- }
1869-
1870- static char *
1871--get_save_path (void)
1872-+get_save_path (const char *filename)
1873- {
1874- return g_build_filename (g_get_user_config_dir (),
1875- "gnome-control-center",
1876- "backgrounds",
1877-- "last-edited.xml",
1878-+ filename,
1879- NULL);
1880- }
1881-
1882- static void
1883--update_display_preview (CcBackgroundPanel *panel)
1884-+update_display_preview (CcBackgroundPanel *panel,
1885-+ GtkWidget *widget,
1886-+ CcBackgroundItem *current_background)
1887- {
1888- CcBackgroundPanelPrivate *priv = panel->priv;
1889-- GtkWidget *widget;
1890- GtkAllocation allocation;
1891-- const gint preview_width = 416;
1892-- const gint preview_height = 248;
1893-+ const gint preview_width = 309;
1894-+ const gint preview_height = 168;
1895- GdkPixbuf *pixbuf;
1896- GIcon *icon;
1897- cairo_t *cr;
1898-
1899-- widget = WID ("background-desktop-drawingarea");
1900- gtk_widget_get_allocation (widget, &allocation);
1901-
1902-- if (!priv->current_background)
1903-+ if (!current_background)
1904- return;
1905-
1906-- icon = cc_background_item_get_frame_thumbnail (priv->current_background,
1907-+ icon = cc_background_item_get_frame_thumbnail (current_background,
1908- priv->thumb_factory,
1909- preview_width,
1910- preview_height,
1911-@@ -218,11 +243,14 @@ update_display_preview (CcBackgroundPanel *panel)
1912- g_object_unref (pixbuf);
1913-
1914- pixbuf = NULL;
1915-- if (panel->priv->display_screenshot != NULL)
1916-- pixbuf = gdk_pixbuf_scale_simple (panel->priv->display_screenshot,
1917-- preview_width,
1918-- preview_height,
1919-- GDK_INTERP_BILINEAR);
1920-+ if (current_background == priv->current_background &&
1921-+ panel->priv->display_screenshot != NULL)
1922-+ {
1923-+ pixbuf = gdk_pixbuf_scale_simple (panel->priv->display_screenshot,
1924-+ preview_width,
1925-+ preview_height,
1926-+ GDK_INTERP_BILINEAR);
1927-+ }
1928-
1929- if (pixbuf)
1930- {
1931-@@ -271,6 +299,7 @@ on_screenshot_finished (GObject *source,
1932- error->message);
1933- g_error_free (error);
1934- /* fallback? */
1935-+ priv = panel->priv;
1936- goto out;
1937- }
1938- g_variant_unref (result);
1939-@@ -322,7 +351,7 @@ on_screenshot_finished (GObject *source,
1940- cairo_surface_destroy (surface);
1941-
1942- out:
1943-- update_display_preview (panel);
1944-+ update_display_preview (panel, WID ("background-desktop-drawingarea"), priv->current_background);
1945- }
1946-
1947- static gboolean
1948-@@ -407,6 +436,7 @@ on_preview_draw (GtkWidget *widget,
1949- cairo_t *cr,
1950- CcBackgroundPanel *panel)
1951- {
1952-+ CcBackgroundPanelPrivate *priv = panel->priv;
1953- /* we have another shot in flight or an existing cache */
1954- if (panel->priv->display_screenshot == NULL
1955- && panel->priv->screenshot_path == NULL)
1956-@@ -414,13 +444,24 @@ on_preview_draw (GtkWidget *widget,
1957- get_screenshot_async (panel);
1958- }
1959- else
1960-- update_display_preview (panel);
1961-+ update_display_preview (panel, widget, priv->current_background);
1962-+
1963-+ return TRUE;
1964-+}
1965-
1966-+static gboolean
1967-+on_lock_preview_draw (GtkWidget *widget,
1968-+ cairo_t *cr,
1969-+ CcBackgroundPanel *panel)
1970-+{
1971-+ CcBackgroundPanelPrivate *priv = panel->priv;
1972-+ update_display_preview (panel, widget, priv->current_lock_background);
1973- return TRUE;
1974- }
1975-
1976- static void
1977--reload_current_bg (CcBackgroundPanel *self)
1978-+reload_current_bg (CcBackgroundPanel *self,
1979-+ GSettings *settings)
1980- {
1981- CcBackgroundPanelPrivate *priv;
1982- CcBackgroundItem *saved, *configured;
1983-@@ -429,12 +470,12 @@ reload_current_bg (CcBackgroundPanel *self)
1984- priv = self->priv;
1985-
1986- /* Load the saved configuration */
1987-- uri = get_save_path ();
1988-+ uri = get_save_path (SAVE_PATH);
1989- saved = cc_background_xml_get_item (uri);
1990- g_free (uri);
1991-
1992- /* initalise the current background information from settings */
1993-- uri = g_settings_get_string (priv->settings, WP_URI_KEY);
1994-+ uri = g_settings_get_string (settings, WP_URI_KEY);
1995- if (uri && *uri == '\0')
1996- {
1997- g_free (uri);
1998-@@ -450,12 +491,12 @@ reload_current_bg (CcBackgroundPanel *self)
1999- configured = cc_background_item_new (uri);
2000- g_free (uri);
2001-
2002-- pcolor = g_settings_get_string (priv->settings, WP_PCOLOR_KEY);
2003-- scolor = g_settings_get_string (priv->settings, WP_SCOLOR_KEY);
2004-+ pcolor = g_settings_get_string (settings, WP_PCOLOR_KEY);
2005-+ scolor = g_settings_get_string (settings, WP_SCOLOR_KEY);
2006- g_object_set (G_OBJECT (configured),
2007- "name", _("Current background"),
2008-- "placement", g_settings_get_enum (priv->settings, WP_OPTIONS_KEY),
2009-- "shading", g_settings_get_enum (priv->settings, WP_SHADING_KEY),
2010-+ "placement", g_settings_get_enum (settings, WP_OPTIONS_KEY),
2011-+ "shading", g_settings_get_enum (settings, WP_SHADING_KEY),
2012- "primary-color", pcolor,
2013- "secondary-color", scolor,
2014- NULL);
2015-@@ -479,9 +520,17 @@ reload_current_bg (CcBackgroundPanel *self)
2016- if (saved != NULL)
2017- g_object_unref (saved);
2018-
2019-- g_clear_object (&priv->current_background);
2020-- priv->current_background = configured;
2021-- cc_background_item_load (priv->current_background, NULL);
2022-+ if (settings == priv->settings)
2023-+ {
2024-+ g_clear_object (&priv->current_background);
2025-+ priv->current_background = configured;
2026-+ }
2027-+ else
2028-+ {
2029-+ g_clear_object (&priv->current_lock_background);
2030-+ priv->current_lock_background = configured;
2031-+ }
2032-+ cc_background_item_load (configured, NULL);
2033- }
2034-
2035- static gboolean
2036-@@ -512,6 +561,8 @@ copy_finished_cb (GObject *source_object,
2037- CcBackgroundPanel *panel = (CcBackgroundPanel *) pointer;
2038- CcBackgroundPanelPrivate *priv = panel->priv;
2039- CcBackgroundItem *item;
2040-+ CcBackgroundItem *current_background;
2041-+ GSettings *settings;
2042-
2043- if (!g_file_copy_finish (G_FILE (source_object), result, &err))
2044- {
2045-@@ -523,8 +574,10 @@ copy_finished_cb (GObject *source_object,
2046- g_error_free (err);
2047- }
2048- item = g_object_get_data (source_object, "item");
2049-+ settings = g_object_get_data (source_object, "settings");
2050-+ current_background = CURRENT_BG;
2051-
2052-- g_settings_apply (priv->settings);
2053-+ g_settings_apply (settings);
2054-
2055- /* the panel may have been destroyed before the callback is run, so be sure
2056- * to check the widgets are not NULL */
2057-@@ -535,19 +588,19 @@ copy_finished_cb (GObject *source_object,
2058- priv->spinner = NULL;
2059- }
2060-
2061-- if (priv->current_background)
2062-- cc_background_item_load (priv->current_background, NULL);
2063-+ if (current_background)
2064-+ cc_background_item_load (current_background, NULL);
2065-
2066- if (priv->builder)
2067- {
2068- char *filename;
2069-
2070-- update_preview (priv, item);
2071-+ update_preview (priv, settings, item);
2072-
2073- /* Save the source XML if there is one */
2074-- filename = get_save_path ();
2075-+ filename = get_save_path (SAVE_PATH);
2076- if (create_save_dir ())
2077-- cc_background_xml_save (priv->current_background, filename);
2078-+ cc_background_xml_save (current_background, filename);
2079- }
2080-
2081- /* remove the reference taken when the copy was set up */
2082-@@ -556,6 +609,7 @@ copy_finished_cb (GObject *source_object,
2083-
2084- static void
2085- set_background (CcBackgroundPanel *panel,
2086-+ GSettings *settings,
2087- CcBackgroundItem *item)
2088- {
2089- CcBackgroundPanelPrivate *priv = panel->priv;
2090-@@ -573,8 +627,8 @@ set_background (CcBackgroundPanel *panel,
2091-
2092- if ((flags & CC_BACKGROUND_ITEM_HAS_URI) && uri == NULL)
2093- {
2094-- g_settings_set_enum (priv->settings, WP_OPTIONS_KEY, G_DESKTOP_BACKGROUND_STYLE_NONE);
2095-- g_settings_set_string (priv->settings, WP_URI_KEY, "");
2096-+ g_settings_set_enum (settings, WP_OPTIONS_KEY, G_DESKTOP_BACKGROUND_STYLE_NONE);
2097-+ g_settings_set_string (settings, WP_URI_KEY, "");
2098- }
2099- else if (cc_background_item_get_source_url (item) != NULL &&
2100- cc_background_item_get_needs_download (item))
2101-@@ -631,6 +685,7 @@ set_background (CcBackgroundPanel *panel,
2102- * finished */
2103- g_object_ref (panel);
2104- g_object_set_data_full (G_OBJECT (source), "item", g_object_ref (item), g_object_unref);
2105-+ g_object_set_data (G_OBJECT (source), "settings", settings);
2106- g_file_copy_async (source, dest, G_FILE_COPY_OVERWRITE,
2107- G_PRIORITY_DEFAULT, priv->copy_cancellable,
2108- NULL, NULL,
2109-@@ -639,7 +694,7 @@ set_background (CcBackgroundPanel *panel,
2110- dest_uri = g_file_get_uri (dest);
2111- g_object_unref (dest);
2112-
2113-- g_settings_set_string (priv->settings, WP_URI_KEY, dest_uri);
2114-+ g_settings_set_string (settings, WP_URI_KEY, dest_uri);
2115- g_object_set (G_OBJECT (item),
2116- "uri", dest_uri,
2117- "needs-download", FALSE,
2118-@@ -653,37 +708,37 @@ set_background (CcBackgroundPanel *panel,
2119- }
2120- else
2121- {
2122-- g_settings_set_string (priv->settings, WP_URI_KEY, uri);
2123-+ g_settings_set_string (settings, WP_URI_KEY, uri);
2124- }
2125-
2126- /* Also set the placement if we have a URI and the previous value was none */
2127- if (flags & CC_BACKGROUND_ITEM_HAS_PLACEMENT)
2128- {
2129-- g_settings_set_enum (priv->settings, WP_OPTIONS_KEY, cc_background_item_get_placement (item));
2130-+ g_settings_set_enum (settings, WP_OPTIONS_KEY, cc_background_item_get_placement (item));
2131- }
2132- else if (uri != NULL)
2133- {
2134-- style = g_settings_get_enum (priv->settings, WP_OPTIONS_KEY);
2135-+ style = g_settings_get_enum (settings, WP_OPTIONS_KEY);
2136- if (style == G_DESKTOP_BACKGROUND_STYLE_NONE)
2137-- g_settings_set_enum (priv->settings, WP_OPTIONS_KEY, cc_background_item_get_placement (item));
2138-+ g_settings_set_enum (settings, WP_OPTIONS_KEY, cc_background_item_get_placement (item));
2139- }
2140-
2141- if (flags & CC_BACKGROUND_ITEM_HAS_SHADING)
2142-- g_settings_set_enum (priv->settings, WP_SHADING_KEY, cc_background_item_get_shading (item));
2143-+ g_settings_set_enum (settings, WP_SHADING_KEY, cc_background_item_get_shading (item));
2144-
2145-- g_settings_set_string (priv->settings, WP_PCOLOR_KEY, cc_background_item_get_pcolor (item));
2146-- g_settings_set_string (priv->settings, WP_SCOLOR_KEY, cc_background_item_get_scolor (item));
2147-+ g_settings_set_string (settings, WP_PCOLOR_KEY, cc_background_item_get_pcolor (item));
2148-+ g_settings_set_string (settings, WP_SCOLOR_KEY, cc_background_item_get_scolor (item));
2149-
2150- /* update the preview information */
2151- if (save_settings != FALSE)
2152- {
2153- /* Apply all changes */
2154-- g_settings_apply (priv->settings);
2155-+ g_settings_apply (settings);
2156-
2157- /* Save the source XML if there is one */
2158-- filename = get_save_path ();
2159-+ filename = get_save_path (SAVE_PATH);
2160- if (create_save_dir ())
2161-- cc_background_xml_save (priv->current_background, filename);
2162-+ cc_background_xml_save (CURRENT_BG, filename);
2163- }
2164- }
2165-
2166-@@ -699,7 +754,7 @@ on_chooser_dialog_response (GtkDialog *dialog,
2167- item = cc_background_chooser_dialog_get_item (CC_BACKGROUND_CHOOSER_DIALOG (dialog));
2168- if (item != NULL)
2169- {
2170-- set_background (self, item);
2171-+ set_background (self, g_object_get_data (G_OBJECT (dialog), "settings"), item);
2172- g_object_unref (item);
2173- }
2174- }
2175-@@ -708,13 +763,14 @@ on_chooser_dialog_response (GtkDialog *dialog,
2176- }
2177-
2178- static void
2179--on_background_button_clicked (GtkButton *button,
2180-- CcBackgroundPanel *self)
2181-+launch_chooser (CcBackgroundPanel *self,
2182-+ GSettings *settings)
2183- {
2184- CcBackgroundPanelPrivate *priv = self->priv;
2185- GtkWidget *dialog;
2186-
2187- dialog = cc_background_chooser_dialog_new ();
2188-+ g_object_set_data (G_OBJECT (dialog), "settings", settings);
2189- gtk_window_set_transient_for (GTK_WINDOW (dialog),
2190- GTK_WINDOW (gtk_widget_get_toplevel (WID ("background-panel"))));
2191- gtk_widget_show (dialog);
2192-@@ -724,12 +780,26 @@ on_background_button_clicked (GtkButton *button,
2193- }
2194-
2195- static void
2196-+on_background_button_clicked (GtkButton *button,
2197-+ CcBackgroundPanel *self)
2198-+{
2199-+ launch_chooser (self, self->priv->settings);
2200-+}
2201-+
2202-+static void
2203-+on_lock_button_clicked (GtkButton *button,
2204-+ CcBackgroundPanel *self)
2205-+{
2206-+ launch_chooser (self, self->priv->lock_settings);
2207-+}
2208-+
2209-+static void
2210- on_settings_changed (GSettings *settings,
2211- gchar *key,
2212- CcBackgroundPanel *self)
2213- {
2214-- reload_current_bg (self);
2215-- update_preview (self->priv, NULL);
2216-+ reload_current_bg (self, settings);
2217-+ update_preview (self->priv, settings, NULL);
2218- }
2219-
2220- static void
2221-@@ -760,6 +830,9 @@ cc_background_panel_init (CcBackgroundPanel *self)
2222- priv->settings = g_settings_new (WP_PATH_ID);
2223- g_settings_delay (priv->settings);
2224-
2225-+ priv->lock_settings = g_settings_new (WP_LOCK_PATH_ID);
2226-+ g_settings_delay (priv->lock_settings);
2227-+
2228- /* add the top level widget */
2229- widget = WID ("background-panel");
2230-
2231-@@ -768,19 +841,28 @@ cc_background_panel_init (CcBackgroundPanel *self)
2232-
2233- /* setup preview area */
2234- widget = WID ("background-desktop-drawingarea");
2235-- g_signal_connect (widget, "draw", G_CALLBACK (on_preview_draw),
2236-- self);
2237-+ g_signal_connect (widget, "draw", G_CALLBACK (on_preview_draw), self);
2238-+ widget = WID ("background-lock-drawingarea");
2239-+ g_signal_connect (widget, "draw", G_CALLBACK (on_lock_preview_draw), self);
2240-
2241- priv->copy_cancellable = g_cancellable_new ();
2242- priv->capture_cancellable = g_cancellable_new ();
2243-
2244- priv->thumb_factory = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE);
2245-
2246-- reload_current_bg (self);
2247-- update_preview (priv, NULL);
2248-+ /* Load the backgrounds */
2249-+ reload_current_bg (self, priv->settings);
2250-+ update_preview (priv, priv->settings, NULL);
2251-+ reload_current_bg (self, priv->lock_settings);
2252-+ update_preview (priv, priv->lock_settings, NULL);
2253-
2254-+ /* Background settings */
2255- g_signal_connect (priv->settings, "changed", G_CALLBACK (on_settings_changed), self);
2256-+ g_signal_connect (priv->lock_settings, "changed", G_CALLBACK (on_settings_changed), self);
2257-
2258-+ /* Background buttons */
2259- widget = WID ("background-set-button");
2260- g_signal_connect (widget, "clicked", G_CALLBACK (on_background_button_clicked), self);
2261-+ widget = WID ("background-lock-set-button");
2262-+ g_signal_connect (widget, "clicked", G_CALLBACK (on_lock_button_clicked), self);
2263- }
2264---
2265-1.8.3.1
2266
2267=== removed file 'debian/patches/git-background-remove-unused-widget.patch'
2268--- debian/patches/git-background-remove-unused-widget.patch 2014-02-12 00:19:03 +0000
2269+++ debian/patches/git-background-remove-unused-widget.patch 1970-01-01 00:00:00 +0000
2270@@ -1,111 +0,0 @@
2271-From dd56de9653361d17a300aeb7872f152a7e2de356 Mon Sep 17 00:00:00 2001
2272-From: Bastien Nocera <hadess@hadess.net>
2273-Date: Mon, 19 Aug 2013 20:55:29 +0200
2274-Subject: [PATCH] background: Remove unused "lock" preview widgets
2275-
2276-https://bugzilla.gnome.org/show_bug.cgi?id=696166
2277----
2278- panels/background/background.ui | 60 ++++++++++-------------------------------
2279- 1 file changed, 14 insertions(+), 46 deletions(-)
2280-
2281-diff --git a/panels/background/background.ui b/panels/background/background.ui
2282-index 651cf69..77e9968 100644
2283---- a/panels/background/background.ui
2284-+++ b/panels/background/background.ui
2285-@@ -30,48 +30,18 @@
2286- <property name="receives_default">True</property>
2287- <property name="valign">center</property>
2288- <child>
2289-- <object class="GtkBox" id="box1">
2290-+ <object class="GtkDrawingArea" id="background-desktop-drawingarea">
2291-+ <property name="width_request">417</property>
2292-+ <property name="height_request">250</property>
2293- <property name="visible">True</property>
2294- <property name="can_focus">False</property>
2295-+ <property name="valign">center</property>
2296-+ <property name="margin_left">6</property>
2297-+ <property name="margin_right">6</property>
2298-+ <property name="margin_top">6</property>
2299-+ <property name="margin_bottom">6</property>
2300- <property name="hexpand">True</property>
2301-- <property name="spacing">18</property>
2302-- <child>
2303-- <object class="GtkDrawingArea" id="background-desktop-drawingarea">
2304-- <property name="width_request">417</property>
2305-- <property name="height_request">250</property>
2306-- <property name="visible">True</property>
2307-- <property name="can_focus">False</property>
2308-- <property name="valign">center</property>
2309-- <property name="margin_left">6</property>
2310-- <property name="margin_right">6</property>
2311-- <property name="margin_top">6</property>
2312-- <property name="margin_bottom">6</property>
2313-- <property name="hexpand">True</property>
2314-- <property name="vexpand">True</property>
2315-- </object>
2316-- <packing>
2317-- <property name="expand">True</property>
2318-- <property name="fill">True</property>
2319-- <property name="position">0</property>
2320-- </packing>
2321-- </child>
2322-- <child>
2323-- <object class="GtkDrawingArea" id="background-lock-drawingarea">
2324-- <property name="can_focus">False</property>
2325-- <property name="no_show_all">True</property>
2326-- <property name="valign">center</property>
2327-- <property name="margin_left">6</property>
2328-- <property name="margin_right">6</property>
2329-- <property name="margin_top">6</property>
2330-- <property name="hexpand">True</property>
2331-- <property name="vexpand">True</property>
2332-- </object>
2333-- <packing>
2334-- <property name="expand">True</property>
2335-- <property name="fill">True</property>
2336-- <property name="position">1</property>
2337-- </packing>
2338-- </child>
2339-+ <property name="vexpand">True</property>
2340- </object>
2341- </child>
2342- </object>
2343-@@ -107,11 +77,10 @@
2344- </packing>
2345- </child>
2346- <child>
2347-- <object class="GtkLabel" id="slide-label">
2348-+ <object class="GtkLabel" id="strut">
2349- <property name="visible">True</property>
2350- <property name="can_focus">False</property>
2351-- <property name="xalign">0</property>
2352-- <property name="label" translatable="yes" comments="This refers to a slideshow background">Changes throughout the day</property>
2353-+ <property name="label"> </property>
2354- </object>
2355- <packing>
2356- <property name="expand">False</property>
2357-@@ -120,10 +89,11 @@
2358- </packing>
2359- </child>
2360- <child>
2361-- <object class="GtkLabel" id="strut">
2362-+ <object class="GtkLabel" id="slide-label">
2363- <property name="visible">True</property>
2364- <property name="can_focus">False</property>
2365-- <property name="label"> </property>
2366-+ <property name="xalign">0</property>
2367-+ <property name="label" translatable="yes" comments="This refers to a slideshow background">Changes throughout the day</property>
2368- </object>
2369- <packing>
2370- <property name="expand">False</property>
2371-@@ -200,8 +170,6 @@
2372- <object class="GtkSizeGroup" id="sizegroup">
2373- <property name="mode">vertical</property>
2374- <widgets>
2375-- <widget name="sources-combobox"/>
2376-- <widget name="heading-hbox"/>
2377- <widget name="slide-label"/>
2378- <widget name="strut"/>
2379- </widgets>
2380---
2381-1.8.3.1
2382
2383=== removed file 'debian/patches/git-online-accounts-chat-providers.patch'
2384--- debian/patches/git-online-accounts-chat-providers.patch 2014-05-27 07:29:07 +0000
2385+++ debian/patches/git-online-accounts-chat-providers.patch 1970-01-01 00:00:00 +0000
2386@@ -1,51 +0,0 @@
2387-From 570611752e1bf1a0cf01f2581ec03525381066bd Mon Sep 17 00:00:00 2001
2388-From: Marco Barisione <marco.barisione@collabora.co.uk>
2389-Date: Thu, 25 Jul 2013 13:08:58 +0100
2390-Subject: online-accounts: handle unbranded chat providers
2391-
2392-https://bugzilla.gnome.org/show_bug.cgi?id=706148
2393-
2394-Index: gnome-control-center-3.8.6/panels/online-accounts/cc-online-accounts-add-account-dialog.c
2395-===================================================================
2396---- gnome-control-center-3.8.6.orig/panels/online-accounts/cc-online-accounts-add-account-dialog.c
2397-+++ gnome-control-center-3.8.6/panels/online-accounts/cc-online-accounts-add-account-dialog.c
2398-@@ -41,6 +41,7 @@ struct _GoaPanelAddAccountDialogPrivate
2399- EggListBox *branded_list_box;
2400- EggListBox *contacts_list_box;
2401- EggListBox *mail_list_box;
2402-+ EggListBox *chat_list_box;
2403- EggListBox *ticketing_list_box;
2404- GError *error;
2405- GoaClient *client;
2406-@@ -48,6 +49,7 @@ struct _GoaPanelAddAccountDialogPrivate
2407- GtkListStore *list_store;
2408- GtkWidget *contacts_grid;
2409- GtkWidget *mail_grid;
2410-+ GtkWidget *chat_grid;
2411- GtkWidget *ticketing_grid;
2412- GtkWidget *stack;
2413- gboolean add_other;
2414-@@ -336,6 +338,12 @@ goa_panel_add_account_dialog_init (GoaPa
2415- _("Contacts"));
2416-
2417- add_account_dialog_create_group_ui (add_account,
2418-+ &priv->chat_list_box,
2419-+ &priv->chat_grid,
2420-+ grid,
2421-+ _("Chat"));
2422-+
2423-+ add_account_dialog_create_group_ui (add_account,
2424- &priv->ticketing_list_box,
2425- &priv->ticketing_grid,
2426- grid,
2427-@@ -414,6 +422,10 @@ goa_panel_add_account_dialog_add_provide
2428- group_grid = priv->mail_grid;
2429- list_box = priv->mail_list_box;
2430- break;
2431-+ case GOA_PROVIDER_GROUP_CHAT:
2432-+ group_grid = priv->chat_grid;
2433-+ list_box = priv->chat_list_box;
2434-+ break;
2435- case GOA_PROVIDER_GROUP_TICKETING:
2436- group_grid = priv->ticketing_grid;
2437- list_box = priv->ticketing_list_box;
2438
2439=== removed file 'debian/patches/git_fix_libbackground_linking.patch'
2440--- debian/patches/git_fix_libbackground_linking.patch 2014-02-12 00:19:03 +0000
2441+++ debian/patches/git_fix_libbackground_linking.patch 1970-01-01 00:00:00 +0000
2442@@ -1,24 +0,0 @@
2443-From acd7785692109a8ad2590e19302ce34170e610f2 Mon Sep 17 00:00:00 2001
2444-From: Kalev Lember <kalevlember@gmail.com>
2445-Date: Wed, 16 Oct 2013 10:01:36 +0000
2446-Subject: background: Fix test-chooser-dialog build with some linkers
2447-
2448-List missing libs for the libbackground-chooser.la convenience library.
2449-
2450-https://bugzilla.gnome.org/show_bug.cgi?id=709302
2451----
2452-diff --git a/panels/background/Makefile.am b/panels/background/Makefile.am
2453-index f24f8b3..2766207 100644
2454---- a/panels/background/Makefile.am
2455-+++ b/panels/background/Makefile.am
2456-@@ -40,6 +40,8 @@ libbackground_chooser_la_SOURCES = \
2457- bg-colors-source.c \
2458- bg-colors-source.h
2459-
2460-+libbackground_chooser_la_LIBADD = $(PANEL_LIBS) $(BACKGROUND_PANEL_LIBS)
2461-+
2462- libbackground_la_SOURCES = \
2463- cc-background-panel.c \
2464- cc-background-panel.h
2465---
2466-cgit v0.9.2
2467
2468=== removed file 'debian/patches/git_iconview_columns.patch'
2469--- debian/patches/git_iconview_columns.patch 2014-02-12 00:19:03 +0000
2470+++ debian/patches/git_iconview_columns.patch 1970-01-01 00:00:00 +0000
2471@@ -1,16 +0,0 @@
2472-# Description: git patch, updated for our layout
2473-diff --git a/shell/cc-shell-category-view.c b/shell/cc-shell-category-view.c
2474-index 4b05d8c..d7094ab 100644
2475---- a/shell/cc-shell-category-view.c
2476-+++ b/shell/cc-shell-category-view.c
2477-@@ -138,6 +138,7 @@ cc_shell_category_view_constructed (GObject *object)
2478- gtk_icon_view_set_text_column (GTK_ICON_VIEW (iconview), COL_NAME);
2479- gtk_icon_view_set_item_width (GTK_ICON_VIEW (iconview), 100);
2480- cc_shell_item_view_update_cells (CC_SHELL_ITEM_VIEW (iconview));
2481-+ gtk_icon_view_set_columns (GTK_ICON_VIEW (iconview), 7);
2482-
2483- /* create the header if required */
2484- if (priv->name)
2485---
2486-cgit v0.9.2
2487-
2488
2489=== removed file 'debian/patches/git_rename_natural_scrolling.patch'
2490--- debian/patches/git_rename_natural_scrolling.patch 2014-02-12 00:19:03 +0000
2491+++ debian/patches/git_rename_natural_scrolling.patch 1970-01-01 00:00:00 +0000
2492@@ -1,26 +0,0 @@
2493-From 92148a4be791614eaf4582ea540cff82e27134de Mon Sep 17 00:00:00 2001
2494-From: Ondrej Holy <oholy@redhat.com>
2495-Date: Tue, 11 Jun 2013 12:58:28 +0000
2496-Subject: mouse: Rename "Content sticks to fingers"
2497-
2498-...to "Natural scrolling". The previous name was a little bit
2499-disgusting, and people didn't understand its purpose. Using the
2500-same name as OSX means that people will either know it, or be less
2501-afraid of testing it.
2502-
2503-https://bugzilla.gnome.org/show_bug.cgi?id=689128
2504----
2505-diff --git a/panels/mouse/gnome-mouse-properties.ui b/panels/mouse/gnome-mouse-properties.ui
2506-index cd77080..3735903 100644
2507---- a/panels/mouse/gnome-mouse-properties.ui
2508-+++ b/panels/mouse/gnome-mouse-properties.ui
2509-@@ -655,7 +655,7 @@
2510- </child>
2511- <child>
2512- <object class="GtkCheckButton" id="natural_scroll_toggle">
2513-- <property name="label" translatable="yes">C_ontent sticks to fingers</property>
2514-+ <property name="label" translatable="yes" comments="Translators: This switch reverses the scrolling direction for touchpads. The term used comes from OS X so use the same translation if possible. ">_Natural scrolling</property>
2515- <property name="use_action_appearance">False</property>
2516- <property name="visible">True</property>
2517- <property name="can_focus">True</property>
2518-
2519
2520=== added file 'debian/patches/power-panel-3.10.patch'
2521--- debian/patches/power-panel-3.10.patch 1970-01-01 00:00:00 +0000
2522+++ debian/patches/power-panel-3.10.patch 2014-09-30 05:25:02 +0000
2523@@ -0,0 +1,979 @@
2524+From b21275ac750465c36370834daf537b8a05adf4ad Mon Sep 17 00:00:00 2001
2525+From: Tim Lunn <tim@feathertop.org>
2526+Date: Thu, 18 Sep 2014 09:26:50 +1000
2527+Subject: [PATCH] Copy power panel from 3.10
2528+
2529+---
2530+ configure.ac | 2 +-
2531+ panels/power/cc-power-panel.c | 450 ++++++++++++++-------------
2532+ panels/power/cc-power-panel.h | 3 +-
2533+ panels/power/gnome-power-panel.desktop.in.in | 1 -
2534+ panels/power/power.ui | 13 +-
2535+ 5 files changed, 254 insertions(+), 215 deletions(-)
2536+
2537+Index: gnome-control-center/configure.ac
2538+===================================================================
2539+--- gnome-control-center.orig/configure.ac
2540++++ gnome-control-center/configure.ac
2541+@@ -128,7 +128,7 @@ PKG_CHECK_MODULES(DATETIME_PANEL, $COMMO
2542+ polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION
2543+ gdk-pixbuf-2.0 >= $GDKPIXBUF_REQUIRED_VERSION)
2544+ PKG_CHECK_MODULES(DISPLAY_PANEL, $COMMON_MODULES gnome-desktop-3.0 >= 3.1.0
2545+- upower-glib >= 0.99.0)
2546++ upower-glib >= 0.9.0)
2547+ PKG_CHECK_MODULES(INFO_PANEL, $COMMON_MODULES libgtop-2.0 gl
2548+ polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION)
2549+ PKG_CHECK_MODULES(KEYBOARD_PANEL, $COMMON_MODULES
2550+@@ -140,7 +140,7 @@ PKG_CHECK_MODULES(MOUSE_PANEL, $COMMON_M
2551+ PKG_CHECK_MODULES(NETWORK_PANEL, $COMMON_MODULES gmodule-2.0)
2552+ PKG_CHECK_MODULES(NOTIFICATIONS_PANEL, $COMMON_MODULES libgnome-menu-3.0)
2553+ PKG_CHECK_MODULES(ONLINE_ACCOUNTS_PANEL, $COMMON_MODULES goa-1.0 goa-backend-1.0 >= $GOA_REQUIRED_VERSION)
2554+-PKG_CHECK_MODULES(POWER_PANEL, $COMMON_MODULES upower-glib >= 0.99.0
2555++PKG_CHECK_MODULES(POWER_PANEL, $COMMON_MODULES upower-glib >= 0.9.0
2556+ gnome-settings-daemon >= $GSD_REQUIRED_VERSION)
2557+ PKG_CHECK_MODULES(COLOR_PANEL, $COMMON_MODULES
2558+ colord >= $COLORD_REQUIRED_VERSION
2559+Index: gnome-control-center/panels/power/cc-power-panel.c
2560+===================================================================
2561+--- gnome-control-center.orig/panels/power/cc-power-panel.c
2562++++ gnome-control-center/panels/power/cc-power-panel.c
2563+@@ -15,7 +15,8 @@
2564+ * GNU General Public License for more details.
2565+ *
2566+ * You should have received a copy of the GNU General Public License
2567+- * along with this program; if not, see <http://www.gnu.org/licenses/>.
2568++ * along with this program; if not, write to the Free Software
2569++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
2570+ *
2571+ */
2572+
2573+@@ -25,6 +26,16 @@
2574+ #include <glib/gi18n.h>
2575+ #include <gnome-settings-daemon/gsd-enums.h>
2576+
2577++#ifdef HAVE_BLUETOOTH
2578++/* Handling is broken:
2579++ * https://bugzilla.gnome.org/show_bug.cgi?id=691730
2580++ * https://bugzilla.gnome.org/show_bug.cgi?id=691151
2581++ * #include <bluetooth-client.h> */
2582++#undef HAVE_BLUETOOTH
2583++#endif
2584++
2585++
2586++
2587+ #ifdef HAVE_NETWORK_MANAGER
2588+ #include <nm-client.h>
2589+ #endif
2590+@@ -59,7 +70,6 @@ struct _CcPowerPanelPrivate
2591+ GtkBuilder *builder;
2592+ GtkWidget *automatic_suspend_dialog;
2593+ UpClient *up_client;
2594+- GPtrArray *devices;
2595+ GDBusProxy *screen_proxy;
2596+ GDBusProxy *kbd_proxy;
2597+ gboolean has_batteries;
2598+@@ -93,9 +103,10 @@ struct _CcPowerPanelPrivate
2599+ GtkWidget *critical_battery_row;
2600+ GtkWidget *critical_battery_combo;
2601+
2602+- GDBusProxy *bt_rfkill;
2603+- GDBusProxy *bt_properties;
2604+- GtkWidget *bt_switch;
2605++#ifdef HAVE_BLUETOOTH
2606++ BluetoothClient *bt_client;
2607++ GtkWidget *bt_switch;
2608++#endif
2609+
2610+ #ifdef HAVE_NETWORK_MANAGER
2611+ NMClient *nm_client;
2612+@@ -131,14 +142,10 @@ cc_power_panel_dispose (GObject *object)
2613+ g_clear_object (&priv->builder);
2614+ g_clear_object (&priv->screen_proxy);
2615+ g_clear_object (&priv->kbd_proxy);
2616+- if (priv->devices)
2617+- {
2618+- g_ptr_array_foreach (priv->devices, (GFunc) g_object_unref, NULL);
2619+- g_clear_pointer (&priv->devices, g_ptr_array_unref);
2620+- }
2621+ g_clear_object (&priv->up_client);
2622+- g_clear_object (&priv->bt_rfkill);
2623+- g_clear_object (&priv->bt_properties);
2624++#ifdef HAVE_BLUETOOTH
2625++ g_clear_object (&priv->bt_client);
2626++#endif
2627+ #ifdef HAVE_NETWORK_MANAGER
2628+ g_clear_object (&priv->nm_client);
2629+ #endif
2630+@@ -324,8 +331,8 @@ set_primary (CcPowerPanel *panel, UpDevi
2631+ box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
2632+ gtk_container_add (GTK_CONTAINER (row), box);
2633+
2634+- gtk_widget_set_margin_start (box, 20);
2635+- gtk_widget_set_margin_end (box, 20);
2636++ gtk_widget_set_margin_left (box, 20);
2637++ gtk_widget_set_margin_right (box, 20);
2638+ gtk_widget_set_margin_top (box, 6);
2639+ gtk_widget_set_margin_bottom (box, 6);
2640+
2641+@@ -380,7 +387,6 @@ add_battery (CcPowerPanel *panel, UpDevi
2642+ GtkWidget *widget;
2643+ gchar *s;
2644+ gchar *native_path;
2645+- gchar *icon_name;
2646+ const gchar *name;
2647+
2648+ g_object_get (device,
2649+@@ -388,7 +394,6 @@ add_battery (CcPowerPanel *panel, UpDevi
2650+ "state", &state,
2651+ "percentage", &percentage,
2652+ "native-path", &native_path,
2653+- "icon-name", &icon_name,
2654+ NULL);
2655+
2656+ if (native_path && strstr (native_path, "BAT0"))
2657+@@ -404,17 +409,18 @@ add_battery (CcPowerPanel *panel, UpDevi
2658+ label = gtk_label_new (name);
2659+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
2660+ gtk_size_group_add_widget (priv->battery_sizegroup, box2);
2661+- gtk_widget_set_margin_start (label, 20);
2662+- gtk_widget_set_margin_end (label, 20);
2663++ gtk_widget_set_margin_left (label, 20);
2664++ gtk_widget_set_margin_right (label, 20);
2665+ gtk_widget_set_margin_top (label, 6);
2666+ gtk_widget_set_margin_bottom (label, 6);
2667+ gtk_box_pack_start (GTK_BOX (box2), label, FALSE, TRUE, 0);
2668+ gtk_box_pack_start (GTK_BOX (box), box2, FALSE, TRUE, 0);
2669+
2670+ #if 1
2671+- if (icon_name != NULL && *icon_name != '\0')
2672++ if (state == UP_DEVICE_STATE_DISCHARGING ||
2673++ state == UP_DEVICE_STATE_CHARGING)
2674+ {
2675+- widget = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_BUTTON);
2676++ widget = gtk_image_new_from_icon_name ("battery-good-charging-symbolic", GTK_ICON_SIZE_BUTTON);
2677+ gtk_style_context_add_class (gtk_widget_get_style_context (widget), GTK_STYLE_CLASS_DIM_LABEL);
2678+ gtk_widget_set_halign (widget, GTK_ALIGN_END);
2679+ gtk_widget_set_valign (widget, GTK_ALIGN_CENTER);
2680+@@ -423,8 +429,8 @@ add_battery (CcPowerPanel *panel, UpDevi
2681+ #endif
2682+
2683+ box2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
2684+- gtk_widget_set_margin_start (box2, 20);
2685+- gtk_widget_set_margin_end (box2, 20);
2686++ gtk_widget_set_margin_left (box2, 20);
2687++ gtk_widget_set_margin_right (box2, 20);
2688+
2689+ s = g_strdup_printf ("%d%%", (int)percentage);
2690+ label = gtk_label_new (s);
2691+@@ -454,7 +460,6 @@ add_battery (CcPowerPanel *panel, UpDevi
2692+ gtk_widget_show_all (row);
2693+
2694+ g_free (native_path);
2695+- g_free (icon_name);
2696+
2697+ gtk_widget_set_visible (priv->battery_section, TRUE);
2698+ }
2699+@@ -578,16 +583,16 @@ add_device (CcPowerPanel *panel, UpDevic
2700+ widget = gtk_label_new ("");
2701+ gtk_misc_set_alignment (GTK_MISC (widget), 0.0f, 0.5f);
2702+ gtk_label_set_markup (GTK_LABEL (widget), description->str);
2703+- gtk_widget_set_margin_start (widget, 20);
2704+- gtk_widget_set_margin_end (widget, 20);
2705++ gtk_widget_set_margin_left (widget, 20);
2706++ gtk_widget_set_margin_right (widget, 20);
2707+ gtk_widget_set_margin_top (widget, 6);
2708+ gtk_widget_set_margin_bottom (widget, 6);
2709+ gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, TRUE, 0);
2710+ gtk_size_group_add_widget (priv->battery_sizegroup, widget);
2711+
2712+ box2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
2713+- gtk_widget_set_margin_start (box2, 20);
2714+- gtk_widget_set_margin_end (box2, 20);
2715++ gtk_widget_set_margin_left (box2, 20);
2716++ gtk_widget_set_margin_right (box2, 20);
2717+ s = g_strdup_printf ("%d%%", (int)percentage);
2718+ widget = gtk_label_new (s);
2719+ g_free (s);
2720+@@ -622,12 +627,26 @@ up_client_changed (UpClient *client,
2721+ CcPowerPanel *self)
2722+ {
2723+ CcPowerPanelPrivate *priv = self->priv;
2724++ GPtrArray *devices;
2725+ GList *children, *l;
2726+ gint i;
2727+ UpDeviceKind kind;
2728++ UpDeviceState state;
2729+ guint n_batteries;
2730+ gboolean on_ups;
2731+ UpDevice *composite;
2732++ gdouble percentage = 0.0;
2733++ gdouble energy = 0.0;
2734++ gdouble energy_full = 0.0;
2735++ gdouble energy_rate = 0.0;
2736++ gdouble energy_total = 0.0;
2737++ gdouble energy_full_total = 0.0;
2738++ gdouble energy_rate_total = 0.0;
2739++ gint64 time_to_empty = 0;
2740++ gint64 time_to_full = 0;
2741++ gboolean is_charging = FALSE;
2742++ gboolean is_discharging = FALSE;
2743++ gboolean is_fully_charged = TRUE;
2744+ gchar *s;
2745+
2746+ children = gtk_container_get_children (GTK_CONTAINER (priv->battery_list));
2747+@@ -642,6 +661,8 @@ up_client_changed (UpClient *client,
2748+ g_list_free (children);
2749+ gtk_widget_hide (priv->device_section);
2750+
2751++ devices = up_client_get_devices (client);
2752++
2753+ #ifdef TEST_FAKE_DEVICES
2754+ {
2755+ static gboolean fake_devices_added = FALSE;
2756+@@ -653,60 +674,68 @@ up_client_changed (UpClient *client,
2757+ device = up_device_new ();
2758+ g_object_set (device,
2759+ "kind", UP_DEVICE_KIND_MOUSE,
2760+- "native-path", "dummy:native-path1",
2761+- "model", "My mouse",
2762+ "percentage", 71.0,
2763+ "state", UP_DEVICE_STATE_DISCHARGING,
2764+ "time-to-empty", 287,
2765+- "icon-name", "battery-full-symbolic",
2766+ NULL);
2767+- g_ptr_array_add (priv->devices, device);
2768++ g_ptr_array_add (devices, device);
2769+ device = up_device_new ();
2770+ g_object_set (device,
2771+ "kind", UP_DEVICE_KIND_KEYBOARD,
2772+- "native-path", "dummy:native-path2",
2773+- "model", "My keyboard",
2774+- "percentage", 59.0,
2775++ "percentage", 69.0,
2776+ "state", UP_DEVICE_STATE_DISCHARGING,
2777+ "time-to-empty", 250,
2778+- "icon-name", "battery-good-symbolic",
2779+ NULL);
2780+- g_ptr_array_add (priv->devices, device);
2781++ g_ptr_array_add (devices, device);
2782+ device = up_device_new ();
2783+ g_object_set (device,
2784+ "kind", UP_DEVICE_KIND_BATTERY,
2785+- "native-path", "dummy:native-path3",
2786+- "model", "Battery from some factory",
2787+ "percentage", 100.0,
2788+ "state", UP_DEVICE_STATE_FULLY_CHARGED,
2789+ "energy", 55.0,
2790+ "energy-full", 55.0,
2791+ "energy-rate", 15.0,
2792+ "time-to-empty", 400,
2793+- "icon-name", "battery-full-charged-symbolic",
2794+ NULL);
2795+- g_ptr_array_add (priv->devices, device);
2796++ g_ptr_array_add (devices, device);
2797+ }
2798+ }
2799+ #endif
2800+
2801+ on_ups = FALSE;
2802+ n_batteries = 0;
2803+- composite = up_client_get_display_device (priv->up_client);
2804+- g_object_get (composite, "kind", &kind, NULL);
2805+- if (kind == UP_DEVICE_KIND_UPS)
2806+- {
2807+- on_ups = TRUE;
2808+- }
2809+- else
2810++ composite = up_device_new ();
2811++ g_object_set (composite,
2812++ "kind", UP_DEVICE_KIND_BATTERY,
2813++ "is-rechargeable", TRUE,
2814++ "native-path", "dummy:composite_battery",
2815++ "power-supply", TRUE,
2816++ "is-present", TRUE,
2817++ NULL);
2818++ for (i = 0; devices != NULL && i < devices->len; i++)
2819+ {
2820+- /* Count the batteries */
2821+- for (i = 0; priv->devices != NULL && i < priv->devices->len; i++)
2822++ UpDevice *device = (UpDevice*) g_ptr_array_index (devices, i);
2823++ g_object_get (device,
2824++ "kind", &kind,
2825++ "state", &state,
2826++ "energy", &energy,
2827++ "energy-full", &energy_full,
2828++ "energy-rate", &energy_rate,
2829++ NULL);
2830++ if (kind == UP_DEVICE_KIND_UPS && state == UP_DEVICE_STATE_DISCHARGING)
2831++ on_ups = TRUE;
2832++ if (kind == UP_DEVICE_KIND_BATTERY)
2833+ {
2834+- UpDevice *device = (UpDevice*) g_ptr_array_index (priv->devices, i);
2835+- g_object_get (device, "kind", &kind, NULL);
2836+- if (kind == UP_DEVICE_KIND_BATTERY)
2837+- n_batteries++;
2838++ if (state == UP_DEVICE_STATE_CHARGING)
2839++ is_charging = TRUE;
2840++ if (state == UP_DEVICE_STATE_DISCHARGING)
2841++ is_discharging = TRUE;
2842++ if (state != UP_DEVICE_STATE_FULLY_CHARGED)
2843++ is_fully_charged = FALSE;
2844++ energy_total += energy;
2845++ energy_full_total += energy_full;
2846++ energy_rate_total += energy_rate;
2847++ n_batteries++;
2848+ }
2849+ }
2850+
2851+@@ -717,12 +746,42 @@ up_client_changed (UpClient *client,
2852+ gtk_label_set_label (GTK_LABEL (priv->battery_heading), s);
2853+ g_free (s);
2854+
2855++ if (energy_full_total > 0.0)
2856++ percentage = 100.0 * energy_total / energy_full_total;
2857++
2858++ if (is_charging)
2859++ state = UP_DEVICE_STATE_CHARGING;
2860++ else if (is_discharging)
2861++ state = UP_DEVICE_STATE_DISCHARGING;
2862++ else if (is_fully_charged)
2863++ state = UP_DEVICE_STATE_FULLY_CHARGED;
2864++ else
2865++ state = UP_DEVICE_STATE_UNKNOWN;
2866++
2867++ if (energy_rate_total > 0)
2868++ {
2869++ if (state == UP_DEVICE_STATE_DISCHARGING)
2870++ time_to_empty = 3600 * (energy_total / energy_rate_total);
2871++ else if (state == UP_DEVICE_STATE_CHARGING)
2872++ time_to_full = 3600 * ((energy_full_total - energy_total) / energy_rate_total);
2873++ }
2874++
2875++ g_object_set (composite,
2876++ "energy", energy_total,
2877++ "energy-full", energy_full_total,
2878++ "energy-rate", energy_rate_total,
2879++ "time-to-empty", time_to_empty,
2880++ "time-to-full", time_to_full,
2881++ "percentage", percentage,
2882++ "state", state,
2883++ NULL);
2884++
2885+ if (!on_ups && n_batteries > 1)
2886+ set_primary (self, composite);
2887+
2888+- for (i = 0; priv->devices != NULL && i < priv->devices->len; i++)
2889++ for (i = 0; devices != NULL && i < devices->len; i++)
2890+ {
2891+- UpDevice *device = (UpDevice*) g_ptr_array_index (priv->devices, i);
2892++ UpDevice *device = (UpDevice*) g_ptr_array_index (devices, i);
2893+ g_object_get (device, "kind", &kind, NULL);
2894+ if (kind == UP_DEVICE_KIND_LINE_POWER)
2895+ {
2896+@@ -746,49 +805,11 @@ up_client_changed (UpClient *client,
2897+ }
2898+ }
2899+
2900++ g_clear_pointer (&devices, g_ptr_array_unref);
2901+ g_object_unref (composite);
2902+ }
2903+
2904+ static void
2905+-up_client_device_removed (UpClient *client,
2906+- const char *object_path,
2907+- CcPowerPanel *self)
2908+-{
2909+- CcPowerPanelPrivate *priv = self->priv;
2910+- guint i;
2911+-
2912+- if (priv->devices == NULL)
2913+- return;
2914+-
2915+- for (i = 0; i < priv->devices->len; i++)
2916+- {
2917+- UpDevice *device = g_ptr_array_index (priv->devices, i);
2918+-
2919+- if (g_strcmp0 (object_path, up_device_get_object_path (device)) == 0)
2920+- {
2921+- g_object_unref (device);
2922+- g_ptr_array_remove_index (priv->devices, i);
2923+- break;
2924+- }
2925+- }
2926+-
2927+- up_client_changed (self->priv->up_client, NULL, self);
2928+-}
2929+-
2930+-static void
2931+-up_client_device_added (UpClient *client,
2932+- UpDevice *device,
2933+- CcPowerPanel *self)
2934+-{
2935+- CcPowerPanelPrivate *priv = self->priv;
2936+-
2937+- g_ptr_array_add (priv->devices, g_object_ref (device));
2938+- g_signal_connect (G_OBJECT (device), "notify",
2939+- G_CALLBACK (up_client_changed), self);
2940+- up_client_changed (priv->up_client, NULL, self);
2941+-}
2942+-
2943+-static void
2944+ set_brightness_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
2945+ {
2946+ GError *error = NULL;
2947+@@ -1077,11 +1098,22 @@ static void
2948+ set_ac_battery_ui_mode (CcPowerPanel *self)
2949+ {
2950+ gboolean has_batteries = FALSE;
2951++ gboolean ret;
2952++ GError *error = NULL;
2953+ GPtrArray *devices;
2954+ guint i;
2955+ UpDevice *device;
2956+ UpDeviceKind kind;
2957+
2958++ /* this is sync, but it's cached in the daemon and so quick */
2959++ ret = up_client_enumerate_devices_sync (self->priv->up_client, NULL, &error);
2960++ if (!ret)
2961++ {
2962++ g_warning ("failed to get device list: %s", error->message);
2963++ g_error_free (error);
2964++ goto out;
2965++ }
2966++
2967+ devices = up_client_get_devices (self->priv->up_client);
2968+ g_debug ("got %d devices from upower\n", devices->len);
2969+
2970+@@ -1102,6 +1134,7 @@ set_ac_battery_ui_mode (CcPowerPanel *se
2971+ has_batteries = FALSE;
2972+ #endif
2973+
2974++out:
2975+ self->priv->has_batteries = has_batteries;
2976+
2977+ gtk_widget_set_visible (self->priv->critical_battery_row, has_batteries);
2978+@@ -1136,18 +1169,41 @@ update_header_func (GtkListBoxRow *row,
2979+ }
2980+ }
2981+
2982++#ifdef HAVE_BLUETOOTH
2983+ static void
2984+-bt_set_powered (CcPowerPanel *self,
2985+- gboolean powered)
2986++bt_set_powered (BluetoothClient *client,
2987++ gboolean powered)
2988+ {
2989+- g_dbus_proxy_call (self->priv->bt_properties,
2990+- "Set",
2991+- g_variant_new_parsed ("('org.gnome.SettingsDaemon.Rfkill', 'BluetoothAirplaneMode', %v)",
2992+- g_variant_new_boolean (!powered)),
2993+- G_DBUS_CALL_FLAGS_NONE,
2994+- -1,
2995+- self->priv->cancellable,
2996+- NULL, NULL);
2997++ GVariant *ret;
2998++ const gchar *adapter_path;
2999++ GDBusConnection *bus;
3000++
3001++ bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
3002++
3003++ ret = g_dbus_connection_call_sync (bus,
3004++ "org.bluez",
3005++ "/",
3006++ "org.bluez.Manager",
3007++ "DefaultAdapter",
3008++ NULL,
3009++ NULL,
3010++ 0,
3011++ G_MAXINT,
3012++ NULL, NULL);
3013++ g_variant_get (ret, "(&o)", &adapter_path);
3014++
3015++ g_dbus_connection_call (bus,
3016++ "org.bluez",
3017++ adapter_path,
3018++ "org.freedesktop.Properties",
3019++ "SetProperty",
3020++ g_variant_new ("(sv)", "Powered", g_variant_new_boolean (powered)),
3021++ NULL,
3022++ 0,
3023++ G_MAXINT,
3024++ NULL, NULL, NULL);
3025++
3026++ g_variant_unref (ret);
3027+ }
3028+
3029+ static void
3030+@@ -1161,26 +1217,25 @@ bt_switch_changed (GtkSwitch *sw,
3031+
3032+ g_debug ("Setting bt power %s", powered ? "on" : "off");
3033+
3034+- bt_set_powered (panel, powered);
3035++ bt_set_powered (panel->priv->bt_client, powered);
3036+ }
3037+
3038+ static void
3039+-bt_powered_state_changed (CcPowerPanel *panel)
3040++bt_powered_state_changed (GObject *client,
3041++ GParamSpec *pspec,
3042++ CcPowerPanel *panel)
3043+ {
3044+ CcPowerPanelPrivate *priv = panel->priv;
3045+ gboolean powered;
3046+- GVariant *v;
3047+-
3048+- v = g_dbus_proxy_get_cached_property (priv->bt_rfkill, "BluetoothAirplaneMode");
3049+- powered = !g_variant_get_boolean (v);
3050+- g_variant_unref (v);
3051+
3052++ g_object_get (client, "default-adapter-powered", &powered, NULL);
3053+ g_debug ("bt powered state changed to %s", powered ? "on" : "off");
3054+
3055+ g_signal_handlers_block_by_func (priv->bt_switch, bt_switch_changed, panel);
3056+ gtk_switch_set_active (GTK_SWITCH (priv->bt_switch), powered);
3057+ g_signal_handlers_unblock_by_func (priv->bt_switch, bt_switch_changed, panel);
3058+ }
3059++#endif
3060+
3061+ #ifdef HAVE_NETWORK_MANAGER
3062+ static gboolean
3063+@@ -1419,8 +1474,8 @@ add_brightness_row (CcPowerPanel *self,
3064+ label = gtk_label_new (text);
3065+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
3066+ gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
3067+- gtk_widget_set_margin_start (label, 20);
3068+- gtk_widget_set_margin_end (label, 20);
3069++ gtk_widget_set_margin_left (label, 20);
3070++ gtk_widget_set_margin_right (label, 20);
3071+ gtk_widget_set_margin_top (label, 6);
3072+ gtk_widget_set_margin_bottom (label, 6);
3073+ gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE, 0);
3074+@@ -1433,8 +1488,8 @@ add_brightness_row (CcPowerPanel *self,
3075+ *brightness_scale = scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0, 100, 1);
3076+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), scale);
3077+ gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
3078+- gtk_widget_set_margin_start (scale, 20);
3079+- gtk_widget_set_margin_end (scale, 20);
3080++ gtk_widget_set_margin_left (scale, 20);
3081++ gtk_widget_set_margin_right (scale, 20);
3082+ gtk_box_pack_start (GTK_BOX (box2), scale, TRUE, TRUE, 0);
3083+ gtk_size_group_add_widget (priv->level_sizegroup, scale);
3084+ g_signal_connect (scale, "value-changed",
3085+@@ -1465,8 +1520,8 @@ add_power_saving_section (CcPowerPanel *
3086+ g_free (s);
3087+ gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
3088+ gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5);
3089+- gtk_widget_set_margin_start (widget, 56);
3090+- gtk_widget_set_margin_end (widget, 56);
3091++ gtk_widget_set_margin_left (widget, 56);
3092++ gtk_widget_set_margin_right (widget, 56);
3093+ gtk_widget_set_margin_bottom (widget, 6);
3094+ gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, TRUE, 0);
3095+ gtk_widget_show (widget);
3096+@@ -1481,8 +1536,8 @@ add_power_saving_section (CcPowerPanel *
3097+
3098+ box = gtk_frame_new (NULL);
3099+ gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_IN);
3100+- gtk_widget_set_margin_start (box, 50);
3101+- gtk_widget_set_margin_end (box, 50);
3102++ gtk_widget_set_margin_left (box, 50);
3103++ gtk_widget_set_margin_right (box, 50);
3104+ gtk_widget_set_margin_bottom (box, 24);
3105+ gtk_widget_show (box);
3106+ gtk_container_add (GTK_CONTAINER (box), widget);
3107+@@ -1507,8 +1562,8 @@ add_power_saving_section (CcPowerPanel *
3108+ label = gtk_label_new (_("_Dim screen when inactive"));
3109+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
3110+ gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
3111+- gtk_widget_set_margin_start (label, 20);
3112+- gtk_widget_set_margin_end (label, 20);
3113++ gtk_widget_set_margin_left (label, 20);
3114++ gtk_widget_set_margin_right (label, 20);
3115+ gtk_widget_set_margin_top (label, 6);
3116+ gtk_widget_set_margin_bottom (label, 6);
3117+ gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
3118+@@ -1517,8 +1572,8 @@ add_power_saving_section (CcPowerPanel *
3119+ g_settings_bind (priv->gsd_settings, "idle-dim",
3120+ sw, "active",
3121+ G_SETTINGS_BIND_DEFAULT);
3122+- gtk_widget_set_margin_start (sw, 20);
3123+- gtk_widget_set_margin_end (sw, 20);
3124++ gtk_widget_set_margin_left (sw, 20);
3125++ gtk_widget_set_margin_right (sw, 20);
3126+ gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
3127+ gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
3128+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
3129+@@ -1532,8 +1587,8 @@ add_power_saving_section (CcPowerPanel *
3130+ label = gtk_label_new (_("_Blank screen"));
3131+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
3132+ gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
3133+- gtk_widget_set_margin_start (label, 20);
3134+- gtk_widget_set_margin_end (label, 20);
3135++ gtk_widget_set_margin_left (label, 20);
3136++ gtk_widget_set_margin_right (label, 20);
3137+ gtk_widget_set_margin_top (label, 6);
3138+ gtk_widget_set_margin_bottom (label, 6);
3139+ gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
3140+@@ -1546,8 +1601,8 @@ add_power_saving_section (CcPowerPanel *
3141+ set_value_for_combo (GTK_COMBO_BOX (combo), value);
3142+ g_signal_connect (combo, "changed",
3143+ G_CALLBACK (combo_idle_delay_changed_cb), self);
3144+- gtk_widget_set_margin_start (combo, 20);
3145+- gtk_widget_set_margin_end (combo, 20);
3146++ gtk_widget_set_margin_left (combo, 20);
3147++ gtk_widget_set_margin_right (combo, 20);
3148+ gtk_widget_set_valign (combo, GTK_ALIGN_CENTER);
3149+ gtk_box_pack_start (GTK_BOX (box), combo, FALSE, TRUE, 0);
3150+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo);
3151+@@ -1560,8 +1615,8 @@ add_power_saving_section (CcPowerPanel *
3152+ gtk_container_add (GTK_CONTAINER (row), box);
3153+
3154+ box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
3155+- gtk_widget_set_margin_start (box2, 20);
3156+- gtk_widget_set_margin_end (box2, 20);
3157++ gtk_widget_set_margin_left (box2, 20);
3158++ gtk_widget_set_margin_right (box2, 20);
3159+ gtk_widget_set_margin_top (box2, 6);
3160+ gtk_widget_set_margin_bottom (box2, 6);
3161+ gtk_box_pack_start (GTK_BOX (box), box2, TRUE, TRUE, 0);
3162+@@ -1577,8 +1632,8 @@ add_power_saving_section (CcPowerPanel *
3163+ gtk_box_pack_start (GTK_BOX (box2), w, TRUE, TRUE, 0);
3164+
3165+ priv->wifi_switch = sw = gtk_switch_new ();
3166+- gtk_widget_set_margin_start (sw, 20);
3167+- gtk_widget_set_margin_end (sw, 20);
3168++ gtk_widget_set_margin_left (sw, 20);
3169++ gtk_widget_set_margin_right (sw, 20);
3170+ gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
3171+ gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
3172+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
3173+@@ -1590,8 +1645,8 @@ add_power_saving_section (CcPowerPanel *
3174+ gtk_container_add (GTK_CONTAINER (row), box);
3175+
3176+ box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
3177+- gtk_widget_set_margin_start (box2, 20);
3178+- gtk_widget_set_margin_end (box2, 20);
3179++ gtk_widget_set_margin_left (box2, 20);
3180++ gtk_widget_set_margin_right (box2, 20);
3181+ gtk_widget_set_margin_top (box2, 6);
3182+ gtk_widget_set_margin_bottom (box2, 6);
3183+ gtk_box_pack_start (GTK_BOX (box), box2, TRUE, TRUE, 0);
3184+@@ -1607,8 +1662,8 @@ add_power_saving_section (CcPowerPanel *
3185+ gtk_box_pack_start (GTK_BOX (box2), w, TRUE, TRUE, 0);
3186+
3187+ priv->mobile_switch = sw = gtk_switch_new ();
3188+- gtk_widget_set_margin_start (sw, 20);
3189+- gtk_widget_set_margin_end (sw, 20);
3190++ gtk_widget_set_margin_left (sw, 20);
3191++ gtk_widget_set_margin_right (sw, 20);
3192+ gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
3193+ gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
3194+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
3195+@@ -1631,47 +1686,33 @@ add_power_saving_section (CcPowerPanel *
3196+ G_CALLBACK (wifi_switch_changed), self);
3197+ #endif
3198+
3199+- priv->bt_rfkill = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
3200+- G_DBUS_PROXY_FLAGS_NONE,
3201+- NULL,
3202+- "org.gnome.SettingsDaemon.Rfkill",
3203+- "/org/gnome/SettingsDaemon/Rfkill",
3204+- "org.gnome.SettingsDaemon.Rfkill",
3205+- NULL, NULL);
3206+- if (priv->bt_rfkill)
3207+- {
3208+- priv->bt_properties = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
3209+- G_DBUS_PROXY_FLAGS_NONE,
3210+- NULL,
3211+- "org.gnome.SettingsDaemon.Rfkill",
3212+- "/org/gnome/SettingsDaemon/Rfkill",
3213+- "org.freedesktop.DBus.Properties",
3214+- NULL, NULL);
3215+- row = gtk_list_box_row_new ();
3216+- box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 50);
3217+- gtk_container_add (GTK_CONTAINER (row), box);
3218+- label = gtk_label_new (_("_Bluetooth"));
3219+- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
3220+- gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
3221+- gtk_widget_set_margin_start (label, 20);
3222+- gtk_widget_set_margin_end (label, 20);
3223+- gtk_widget_set_margin_top (label, 6);
3224+- gtk_widget_set_margin_bottom (label, 6);
3225+- gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
3226+-
3227+- priv->bt_switch = sw = gtk_switch_new ();
3228+- gtk_widget_set_margin_start (sw, 20);
3229+- gtk_widget_set_margin_end (sw, 20);
3230+- gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
3231+- gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
3232+- gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
3233+- gtk_container_add (GTK_CONTAINER (widget), row);
3234+- gtk_size_group_add_widget (priv->row_sizegroup, row);
3235+- g_signal_connect_swapped (G_OBJECT (priv->bt_rfkill), "g-properties-changed",
3236+- G_CALLBACK (bt_powered_state_changed), self);
3237+- g_signal_connect (G_OBJECT (priv->bt_switch), "notify::active",
3238+- G_CALLBACK (bt_switch_changed), self);
3239+- }
3240++#ifdef HAVE_BLUETOOTH
3241++ priv->bt_client = bluetooth_client_new ();
3242++ row = gtk_list_box_row_new ();
3243++ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 50);
3244++ gtk_container_add (GTK_CONTAINER (row), box);
3245++ label = gtk_label_new (_("_Bluetooth"));
3246++ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
3247++ gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
3248++ gtk_widget_set_margin_left (label, 20);
3249++ gtk_widget_set_margin_right (label, 20);
3250++ gtk_widget_set_margin_top (label, 6);
3251++ gtk_widget_set_margin_bottom (label, 6);
3252++ gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
3253++
3254++ priv->bt_switch = sw = gtk_switch_new ();
3255++ gtk_widget_set_margin_left (sw, 20);
3256++ gtk_widget_set_margin_right (sw, 20);
3257++ gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
3258++ gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
3259++ gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
3260++ gtk_container_add (GTK_CONTAINER (widget), row);
3261++ gtk_size_group_add_widget (priv->row_sizegroup, row);
3262++ g_signal_connect (G_OBJECT (priv->bt_client), "notify::default-adapter-powered",
3263++ G_CALLBACK (bt_powered_state_changed), self);
3264++ g_signal_connect (G_OBJECT (priv->bt_switch), "notify::active",
3265++ G_CALLBACK (bt_switch_changed), self);
3266++#endif
3267+
3268+ gtk_widget_show_all (widget);
3269+ }
3270+@@ -1837,8 +1878,8 @@ add_automatic_suspend_section (CcPowerPa
3271+ g_free (s);
3272+ gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
3273+ gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5);
3274+- gtk_widget_set_margin_start (widget, 56);
3275+- gtk_widget_set_margin_end (widget, 50);
3276++ gtk_widget_set_margin_left (widget, 56);
3277++ gtk_widget_set_margin_right (widget, 50);
3278+ gtk_widget_set_margin_bottom (widget, 6);
3279+ gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, TRUE, 0);
3280+ gtk_widget_show (widget);
3281+@@ -1855,8 +1896,8 @@ add_automatic_suspend_section (CcPowerPa
3282+
3283+ box = gtk_frame_new (NULL);
3284+ gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_IN);
3285+- gtk_widget_set_margin_start (box, 50);
3286+- gtk_widget_set_margin_end (box, 50);
3287++ gtk_widget_set_margin_left (box, 50);
3288++ gtk_widget_set_margin_right (box, 50);
3289+ gtk_widget_set_margin_bottom (box, 24);
3290+ gtk_widget_show (box);
3291+ gtk_container_add (GTK_CONTAINER (box), widget);
3292+@@ -1868,8 +1909,8 @@ add_automatic_suspend_section (CcPowerPa
3293+ label = gtk_label_new (_("_Automatic suspend"));
3294+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
3295+ gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
3296+- gtk_widget_set_margin_start (label, 20);
3297+- gtk_widget_set_margin_end (label, 20);
3298++ gtk_widget_set_margin_left (label, 20);
3299++ gtk_widget_set_margin_right (label, 20);
3300+ gtk_widget_set_margin_top (label, 6);
3301+ gtk_widget_set_margin_bottom (label, 6);
3302+ gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
3303+@@ -1879,8 +1920,8 @@ add_automatic_suspend_section (CcPowerPa
3304+ g_signal_connect (sw, "mnemonic-activate",
3305+ G_CALLBACK (automatic_suspend_activate), self);
3306+ gtk_misc_set_alignment (GTK_MISC (sw), 1, 0.5);
3307+- gtk_widget_set_margin_start (sw, 24);
3308+- gtk_widget_set_margin_end (sw, 24);
3309++ gtk_widget_set_margin_left (sw, 24);
3310++ gtk_widget_set_margin_right (sw, 24);
3311+ gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
3312+ gtk_container_add (GTK_CONTAINER (widget), row);
3313+ gtk_size_group_add_widget (priv->row_sizegroup, row);
3314+@@ -1892,8 +1933,8 @@ add_automatic_suspend_section (CcPowerPa
3315+ label = gtk_label_new (_("When battery power is _critical"));
3316+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
3317+ gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
3318+- gtk_widget_set_margin_start (label, 20);
3319+- gtk_widget_set_margin_end (label, 20);
3320++ gtk_widget_set_margin_left (label, 20);
3321++ gtk_widget_set_margin_right (label, 20);
3322+ gtk_widget_set_margin_top (label, 6);
3323+ gtk_widget_set_margin_bottom (label, 6);
3324+ gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
3325+@@ -1930,8 +1971,8 @@ add_automatic_suspend_section (CcPowerPa
3326+ cell = gtk_cell_renderer_text_new ();
3327+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (sw), cell, TRUE);
3328+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (sw), cell, "text", 0);
3329+- gtk_widget_set_margin_start (sw, 20);
3330+- gtk_widget_set_margin_end (sw, 20);
3331++ gtk_widget_set_margin_left (sw, 20);
3332++ gtk_widget_set_margin_right (sw, 20);
3333+ gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
3334+
3335+ g_object_set_data (G_OBJECT (sw), "_gsettings_key", "critical-battery-action");
3336+@@ -1947,8 +1988,8 @@ add_automatic_suspend_section (CcPowerPa
3337+ else
3338+ {
3339+ label = gtk_label_new (_("Power Off"));
3340+- gtk_widget_set_margin_start (label, 20);
3341+- gtk_widget_set_margin_end (label, 20);
3342++ gtk_widget_set_margin_left (label, 20);
3343++ gtk_widget_set_margin_right (label, 20);
3344+ gtk_widget_set_margin_top (label, 6);
3345+ gtk_widget_set_margin_bottom (label, 6);
3346+ gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE, 0);
3347+@@ -2030,8 +2071,8 @@ add_battery_section (CcPowerPanel *self)
3348+ vbox = WID (priv->builder, "vbox_power");
3349+
3350+ priv->battery_section = box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
3351+- gtk_widget_set_margin_start (box, 50);
3352+- gtk_widget_set_margin_end (box, 50);
3353++ gtk_widget_set_margin_left (box, 50);
3354++ gtk_widget_set_margin_right (box, 50);
3355+ gtk_widget_set_margin_bottom (box, 6);
3356+ gtk_widget_set_margin_bottom (box, 24);
3357+ gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, TRUE, 0);
3358+@@ -2041,8 +2082,8 @@ add_battery_section (CcPowerPanel *self)
3359+ g_free (s);
3360+ gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
3361+ gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5);
3362+- gtk_widget_set_margin_start (widget, 6);
3363+- gtk_widget_set_margin_end (widget, 6);
3364++ gtk_widget_set_margin_left (widget, 6);
3365++ gtk_widget_set_margin_right (widget, 6);
3366+ gtk_widget_set_margin_bottom (widget, 6);
3367+ gtk_widget_set_margin_bottom (box, 24);
3368+ gtk_box_pack_start (GTK_BOX (box), widget, FALSE, TRUE, 0);
3369+@@ -2077,8 +2118,8 @@ add_device_section (CcPowerPanel *self)
3370+ vbox = WID (priv->builder, "vbox_power");
3371+
3372+ priv->device_section = box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
3373+- gtk_widget_set_margin_start (box, 50);
3374+- gtk_widget_set_margin_end (box, 50);
3375++ gtk_widget_set_margin_left (box, 50);
3376++ gtk_widget_set_margin_right (box, 50);
3377+ gtk_widget_set_margin_top (box, 6);
3378+ gtk_widget_set_margin_bottom (box, 24);
3379+ gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, TRUE, 0);
3380+@@ -2088,8 +2129,8 @@ add_device_section (CcPowerPanel *self)
3381+ g_free (s);
3382+ gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
3383+ gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5);
3384+- gtk_widget_set_margin_start (widget, 6);
3385+- gtk_widget_set_margin_end (widget, 6);
3386++ gtk_widget_set_margin_left (widget, 6);
3387++ gtk_widget_set_margin_right (widget, 6);
3388+ gtk_widget_set_margin_bottom (widget, 6);
3389+ gtk_box_pack_start (GTK_BOX (box), widget, FALSE, TRUE, 0);
3390+
3391+@@ -2137,7 +2178,6 @@ cc_power_panel_init (CcPowerPanel *self)
3392+ GError *error;
3393+ GtkWidget *widget;
3394+ GtkWidget *box;
3395+- guint i;
3396+
3397+ priv = self->priv = POWER_PANEL_PRIVATE (self);
3398+ g_resources_register (cc_power_get_resource ());
3399+@@ -2201,15 +2241,9 @@ cc_power_panel_init (CcPowerPanel *self)
3400+ update_automatic_suspend_label (self);
3401+
3402+ /* populate batteries */
3403+- g_signal_connect (priv->up_client, "device-added", G_CALLBACK (up_client_device_added), self);
3404+- g_signal_connect (priv->up_client, "device-removed", G_CALLBACK (up_client_device_removed), self);
3405+-
3406+- priv->devices = up_client_get_devices (priv->up_client);
3407+- for (i = 0; priv->devices != NULL && i < priv->devices->len; i++) {
3408+- UpDevice *device = g_ptr_array_index (priv->devices, i);
3409+- g_signal_connect (G_OBJECT (device), "notify",
3410+- G_CALLBACK (up_client_changed), self);
3411+- }
3412++ g_signal_connect (priv->up_client, "device-added", G_CALLBACK (up_client_changed), self);
3413++ g_signal_connect (priv->up_client, "device-changed", G_CALLBACK (up_client_changed), self);
3414++ g_signal_connect (priv->up_client, "device-removed", G_CALLBACK (up_client_changed), self);
3415+ up_client_changed (priv->up_client, NULL, self);
3416+
3417+ widget = WID (priv->builder, "vbox_power");
3418+Index: gnome-control-center/panels/power/cc-power-panel.h
3419+===================================================================
3420+--- gnome-control-center.orig/panels/power/cc-power-panel.h
3421++++ gnome-control-center/panels/power/cc-power-panel.h
3422+@@ -13,7 +13,8 @@
3423+ * GNU General Public License for more details.
3424+ *
3425+ * You should have received a copy of the GNU General Public License
3426+- * along with this program; if not, see <http://www.gnu.org/licenses/>.
3427++ * along with this program; if not, write to the Free Software
3428++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
3429+ *
3430+ */
3431+
3432+Index: gnome-control-center/panels/power/gnome-power-panel.desktop.in.in
3433+===================================================================
3434+--- gnome-control-center.orig/panels/power/gnome-power-panel.desktop.in.in
3435++++ gnome-control-center/panels/power/gnome-power-panel.desktop.in.in
3436+@@ -5,7 +5,6 @@ Exec=gnome-control-center power
3437+ Icon=gnome-power-manager
3438+ Terminal=false
3439+ Type=Application
3440+-NoDisplay=true
3441+ StartupNotify=true
3442+ Categories=GNOME;GTK;Settings;DesktopSettings;X-GNOME-Settings-Panel;HardwareSettings;
3443+ OnlyShowIn=GNOME;Unity;
3444+Index: gnome-control-center/panels/power/power.ui
3445+===================================================================
3446+--- gnome-control-center.orig/panels/power/power.ui
3447++++ gnome-control-center/panels/power/power.ui
3448+@@ -129,6 +129,7 @@
3449+ <child internal-child="vbox">
3450+ <object class="GtkBox" id="asdf">
3451+ <property name="can_focus">False</property>
3452++ <property name="resize_mode">immediate</property>
3453+ <property name="orientation">vertical</property>
3454+ <property name="spacing">2</property>
3455+ <child internal-child="action_area">
3456+@@ -163,8 +164,8 @@
3457+ <object class="GtkGrid" id="grid1">
3458+ <property name="visible">True</property>
3459+ <property name="can_focus">False</property>
3460+- <property name="margin_start">12</property>
3461+- <property name="margin_end">6</property>
3462++ <property name="margin_left">12</property>
3463++ <property name="margin_right">6</property>
3464+ <property name="margin_top">12</property>
3465+ <property name="margin_bottom">12</property>
3466+ <property name="row_spacing">12</property>
3467+@@ -219,6 +220,8 @@
3468+ <object class="GtkComboBoxText" id="suspend_on_battery_delay_combo">
3469+ <property name="visible">True</property>
3470+ <property name="can_focus">False</property>
3471++ <property name="margin_left">4</property>
3472++ <property name="margin_right">4</property>
3473+ <property name="entry_text_column">0</property>
3474+ <property name="id_column">1</property>
3475+ <property name="model">liststore_time</property>
3476+@@ -234,7 +237,7 @@
3477+ <object class="GtkLabel" id="suspend_on_battery_delay_label">
3478+ <property name="visible">True</property>
3479+ <property name="can_focus">False</property>
3480+- <property name="margin_start">20</property>
3481++ <property name="margin_left">20</property>
3482+ <property name="xalign">1</property>
3483+ <property name="label" translatable="yes">Delay</property>
3484+ <property name="mnemonic_widget">suspend_on_battery_delay_combo</property>
3485+@@ -267,6 +270,8 @@
3486+ <object class="GtkComboBoxText" id="suspend_on_ac_delay_combo">
3487+ <property name="visible">True</property>
3488+ <property name="can_focus">False</property>
3489++ <property name="margin_left">4</property>
3490++ <property name="margin_right">4</property>
3491+ <property name="entry_text_column">0</property>
3492+ <property name="id_column">1</property>
3493+ <property name="model">liststore_time</property>
3494+@@ -294,7 +299,7 @@
3495+ <object class="GtkLabel" id="suspend_on_ac_delay_label">
3496+ <property name="visible">True</property>
3497+ <property name="can_focus">False</property>
3498+- <property name="margin_start">20</property>
3499++ <property name="margin_left">20</property>
3500+ <property name="xalign">1</property>
3501+ <property name="label" translatable="yes">Delay</property>
3502+ <property name="mnemonic_widget">suspend_on_ac_delay_combo</property>
3503
3504=== added file 'debian/patches/revert-bluetooth-BlueZ5-interface.patch'
3505--- debian/patches/revert-bluetooth-BlueZ5-interface.patch 1970-01-01 00:00:00 +0000
3506+++ debian/patches/revert-bluetooth-BlueZ5-interface.patch 2014-09-30 05:25:02 +0000
3507@@ -0,0 +1,34 @@
3508+From d15a9709f2782dc36b8d86905507a014922f01ed Mon Sep 17 00:00:00 2001
3509+From: Tim Lunn <tim@feathertop.org>
3510+Date: Wed, 23 Oct 2013 07:39:24 +1100
3511+Subject: [PATCH] Revert "Update adapter interface for BlueZ 5"
3512+
3513+This reverts commit ac43647ac01cb990555c7b4ff7b8bf5fb8b17b83.
3514+---
3515+ panels/bluetooth/cc-bluetooth-panel.c | 7 ++-----
3516+ 1 file changed, 2 insertions(+), 5 deletions(-)
3517+
3518+--- a/panels/bluetooth/cc-bluetooth-panel.c
3519++++ b/panels/bluetooth/cc-bluetooth-panel.c
3520+@@ -43,9 +43,6 @@
3521+
3522+ #define WID(s) GTK_WIDGET (gtk_builder_get_object (self->priv->builder, s))
3523+
3524+-#define BLUEZ_SERVICE "org.bluez"
3525+-#define ADAPTER_IFACE "org.bluez.Adapter1"
3526+-
3527+ #define KEYBOARD_PREFS "keyboard"
3528+ #define MOUSE_PREFS "mouse"
3529+ #define SOUND_PREFS "sound"
3530+@@ -675,9 +672,9 @@
3531+ adapter_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
3532+ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
3533+ NULL,
3534+- BLUEZ_SERVICE,
3535++ "org.bluez",
3536+ adapter,
3537+- ADAPTER_IFACE,
3538++ "org.bluez.Adapter",
3539+ NULL,
3540+ &error);
3541+ g_free (adapter);
3542
3543=== modified file 'debian/patches/revert_git_dont_hide_zoom.patch'
3544--- debian/patches/revert_git_dont_hide_zoom.patch 2014-02-12 00:19:03 +0000
3545+++ debian/patches/revert_git_dont_hide_zoom.patch 2014-09-30 05:25:02 +0000
3546@@ -7,19 +7,17 @@
3547
3548 https://bugzilla.gnome.org/show_bug.cgi?id=682862
3549 ---
3550-Index: gnome-control-center-3.8.3/panels/universal-access/cc-ua-panel.c
3551-===================================================================
3552---- gnome-control-center-3.8.3.orig/panels/universal-access/cc-ua-panel.c 2013-06-11 20:04:34.087380775 -0400
3553-+++ gnome-control-center-3.8.3/panels/universal-access/cc-ua-panel.c 2013-06-11 20:04:34.083380775 -0400
3554-@@ -60,6 +60,7 @@
3555- GSettings *mediakeys_settings;
3556+--- a/panels/universal-access/cc-ua-panel.c
3557++++ b/panels/universal-access/cc-ua-panel.c
3558+@@ -102,6 +102,7 @@
3559+ GSettings *application_settings;
3560
3561 ZoomOptions *zoom_options;
3562 + guint shell_watch_id;
3563- };
3564-
3565-
3566-@@ -94,6 +95,12 @@
3567+
3568+ GtkAdjustment *focus_adjustment;
3569+
3570+@@ -116,6 +117,12 @@
3571 {
3572 CcUaPanelPrivate *priv = CC_UA_PANEL (object)->priv;
3573
3574@@ -29,11 +27,11 @@
3575 + priv->shell_watch_id = 0;
3576 + }
3577 +
3578- if (priv->builder)
3579- {
3580- g_object_unref (priv->builder);
3581-@@ -300,6 +307,29 @@
3582- g_free (text);
3583+ g_clear_object (&priv->builder);
3584+ g_slist_free_full (priv->toplevels, (GDestroyNotify)gtk_widget_destroy);
3585+ priv->toplevels = NULL;
3586+@@ -177,6 +184,29 @@
3587+ return (factor > DPI_FACTOR_NORMAL);
3588 }
3589
3590 +static void
3591@@ -43,8 +41,8 @@
3592 +{
3593 + CcUaPanelPrivate *priv = self->priv;
3594 +
3595-+ gtk_widget_hide (WID (priv->builder, "zoom_label_box"));
3596-+ gtk_widget_hide (WID (priv->builder, "zoom_value_box"));
3597++ gtk_widget_hide (WID ("zoom_label_box"));
3598++ gtk_widget_hide (WID ("zoom_value_box"));
3599 +}
3600 +
3601 +static void
3602@@ -55,17 +53,17 @@
3603 +{
3604 + CcUaPanelPrivate *priv = self->priv;
3605 +
3606-+ gtk_widget_show (WID (priv->builder, "zoom_label_box"));
3607-+ gtk_widget_show (WID (priv->builder, "zoom_value_box"));
3608++ gtk_widget_show (WID ("zoom_label_box"));
3609++ gtk_widget_show (WID ("zoom_value_box"));
3610 +}
3611 +
3612 static gboolean
3613 get_large_text_mapping (GValue *value,
3614 GVariant *variant,
3615-@@ -401,6 +431,13 @@
3616- WID (priv->builder, "seeing_toggle_keys_switch"), "active",
3617- G_SETTINGS_BIND_DEFAULT);
3618+@@ -445,6 +475,13 @@
3619+ NULL);
3620
3621+ /* zoom */
3622 + priv->shell_watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
3623 + "org.gnome.Shell",
3624 + G_BUS_NAME_WATCHER_FLAGS_NONE,
3625@@ -73,6 +71,6 @@
3626 + (GBusNameVanishedCallback) shell_vanished_cb,
3627 + self,
3628 + NULL);
3629- g_signal_connect (WID (priv->builder, "seeing_zoom_preferences_button"),
3630- "clicked",
3631- G_CALLBACK (zoom_options_launch_cb), self);
3632+
3633+ g_settings_bind_with_mapping (priv->application_settings, "screen-magnifier-enabled",
3634+ WID ("value_zoom"),
3635
3636=== modified file 'debian/patches/revert_git_drop_library.patch'
3637--- debian/patches/revert_git_drop_library.patch 2014-02-12 00:19:03 +0000
3638+++ debian/patches/revert_git_drop_library.patch 2014-09-30 05:25:02 +0000
3639@@ -29,7 +29,7 @@
3640 # Internationalization support
3641
3642 IT_PROG_INTLTOOL([0.40.1])
3643-@@ -326,9 +335,12 @@
3644+@@ -334,9 +343,12 @@
3645 PANEL_CFLAGS="-I\$(top_srcdir)/ -DG_LOG_DOMAIN=\"\\\"\$(cappletname)-cc-panel\\\"\" -DPANEL_ID=\"\\\"\$(cappletname)\\\"\""
3646 AC_SUBST(PANEL_CFLAGS)
3647
3648@@ -40,10 +40,10 @@
3649 +PANEL_LDFLAGS="-export_dynamic -avoid-version -module -no-undefined -export-symbols-regex '^g_io_module_(load|unload)'"
3650 +AC_SUBST(PANEL_LDFLAGS)
3651 +
3652- dnl ==============================================
3653- dnl libsocialweb
3654- dnl ==============================================
3655-@@ -426,6 +438,7 @@
3656+ dnl =======================================
3657+ dnl Update Mime Database
3658+ dnl =======================================
3659+@@ -416,6 +428,7 @@
3660
3661 AC_CONFIG_FILES([
3662 Makefile
3663@@ -67,7 +67,7 @@
3664 $(AM_V_GEN) glib-compile-resources --target=$@ --sourcedir=$(srcdir) --generate-source --c-name cc_common $<
3665 --- a/shell/Makefile.am
3666 +++ b/shell/Makefile.am
3667-@@ -28,14 +28,8 @@
3668+@@ -29,14 +29,8 @@
3669 cc-shell-category-view.h \
3670 cc-shell-item-view.c \
3671 cc-shell-item-view.h \
3672@@ -84,7 +84,7 @@
3673 hostname-helper.c \
3674 hostname-helper.h \
3675 cc-hostname-entry.c \
3676-@@ -44,8 +38,43 @@
3677+@@ -45,8 +39,43 @@
3678
3679 gnome_control_center_LDFLAGS = -export-dynamic
3680
3681@@ -128,15 +128,14 @@
3682 $(SHELL_LIBS) \
3683 $(CHEESE_LIBS) \
3684 $(top_builddir)/libgd/libgd.la \
3685-@@ -99,6 +128,8 @@
3686+@@ -107,6 +136,7 @@
3687
3688 EXTRA_DIST = \
3689 gnome-control-center.desktop.in.in \
3690 + libgnome-control-center.pc.in \
3691-+ $(servicefile_in_files) \
3692+ $(servicefile_in_files) \
3693 $(completion_in_files) \
3694 list-panel.sh
3695-
3696 --- /dev/null
3697 +++ b/shell/libgnome-control-center.pc.in
3698 @@ -0,0 +1,12 @@
3699@@ -155,7 +154,7 @@
3700 \ No newline at end of file
3701 --- a/Makefile.am
3702 +++ b/Makefile.am
3703-@@ -34,6 +34,12 @@
3704+@@ -35,6 +35,12 @@
3705
3706 -include $(top_srcdir)/git.mk
3707
3708
3709=== added file 'debian/patches/revert_git_new_bluetooth_panel.patch'
3710--- debian/patches/revert_git_new_bluetooth_panel.patch 1970-01-01 00:00:00 +0000
3711+++ debian/patches/revert_git_new_bluetooth_panel.patch 2014-09-30 05:25:02 +0000
3712@@ -0,0 +1,1607 @@
3713+From 258759f58d7e4095de9bd4623cc9b8680f37bc52 Mon Sep 17 00:00:00 2001
3714+From: Tim Lunn <tim@feathertop.org>
3715+Date: Sun, 19 Jan 2014 09:29:54 +1100
3716+Subject: [PATCH] This reverts commit 07c354661102669d7ec8e7d1f00c2f70982ad226.
3717+
3718+Revert "bluetooth: Updated design"
3719+
3720+This reverts commit 28fecc01c46a7b082f9746744c938e499a522e4f.
3721+---
3722+ configure.ac | 2 +-
3723+ panels/bluetooth/bluetooth.ui | 641 ++++++++++++++++++++++++++-
3724+ panels/bluetooth/cc-bluetooth-panel.c | 799 +++++++++++++++++++++++++++++-----
3725+ 3 files changed, 1317 insertions(+), 125 deletions(-)
3726+
3727+--- a/configure.ac
3728++++ b/configure.ac
3729+@@ -206,7 +206,7 @@
3730+ AM_CONDITIONAL(HAVE_NM_UNSTABLE, [test x$nm_unstable = xyes])
3731+
3732+ # Check for gnome-bluetooth
3733+-PKG_CHECK_MODULES(BLUETOOTH, $COMMON_MODULES gnome-bluetooth-1.0 >= 3.11.1,
3734++PKG_CHECK_MODULES(BLUETOOTH, $COMMON_MODULES gnome-bluetooth-1.0 >= 3.9.3,
3735+ [have_bluetooth=yes], have_bluetooth=no)
3736+ if test "x$have_bluetooth" = xyes ; then
3737+ AC_DEFINE(BUILD_BLUETOOTH, 1, [Define to 1 to build the Bluetooth panel])
3738+--- a/panels/bluetooth/bluetooth.ui
3739++++ b/panels/bluetooth/bluetooth.ui
3740+@@ -1,5 +1,4 @@
3741+ <?xml version="1.0" encoding="UTF-8"?>
3742+-<!-- Generated with glade 3.16.0 on Fri Nov 29 16:46:49 2013 -->
3743+ <interface>
3744+ <!-- interface-requires gtk+ 3.0 -->
3745+ <object class="GtkBox" id="box_power">
3746+@@ -7,18 +6,654 @@
3747+ <property name="can_focus">False</property>
3748+ <child>
3749+ <object class="GtkSwitch" id="switch_bluetooth">
3750+- <property name="use_action_appearance">False</property>
3751+ <property name="visible">True</property>
3752+ <property name="can_focus">True</property>
3753+ <property name="valign">center</property>
3754++ <property name="use_action_appearance">False</property>
3755+ </object>
3756+ <packing>
3757+ <property name="expand">False</property>
3758+ <property name="fill">True</property>
3759+- <property name="padding">4</property>
3760+ <property name="pack_type">end</property>
3761+ <property name="position">2</property>
3762++ <property name="padding">4</property>
3763+ </packing>
3764+ </child>
3765+ </object>
3766++ <object class="GtkGrid" id="grid">
3767++ <property name="visible">True</property>
3768++ <property name="can_focus">False</property>
3769++ <property name="border_width">8</property>
3770++ <property name="margin-start">6</property>
3771++ <property name="margin-end">6</property>
3772++ <property name="margin-top">6</property>
3773++ <property name="margin-bottom">6</property>
3774++ <child>
3775++ <placeholder/>
3776++ </child>
3777++ <child>
3778++ <object class="GtkBox" id="vbox">
3779++ <property name="visible">True</property>
3780++ <property name="can_focus">False</property>
3781++ <property name="orientation">vertical</property>
3782++ <child>
3783++ <object class="GtkBox" id="box_devices">
3784++ <property name="visible">True</property>
3785++ <property name="can_focus">False</property>
3786++ <property name="orientation">vertical</property>
3787++ <child>
3788++ <object class="GtkScrolledWindow" id="message_scrolledwindow">
3789++ <property name="sensitive">False</property>
3790++ <property name="can_focus">True</property>
3791++ <property name="no_show_all">True</property>
3792++ <property name="hscrollbar_policy">never</property>
3793++ <property name="shadow_type">in</property>
3794++ <property name="min_content_width">200</property>
3795++ <property name="min_content_height">250</property>
3796++ <child>
3797++ <object class="GtkViewport" id="viewport2">
3798++ <property name="visible">True</property>
3799++ <property name="can_focus">False</property>
3800++ <property name="shadow_type">none</property>
3801++ <child>
3802++ <object class="GtkLabel" id="message_label">
3803++ <property name="visible">True</property>
3804++ <property name="can_focus">False</property>
3805++ <property name="xalign">0</property>
3806++ <property name="yalign">0</property>
3807++ <property name="xpad">12</property>
3808++ <property name="ypad">12</property>
3809++ <property name="label">Bluetooth is disabled by hardware switch</property>
3810++ <property name="wrap">True</property>
3811++ </object>
3812++ </child>
3813++ </object>
3814++ </child>
3815++ </object>
3816++ <packing>
3817++ <property name="expand">True</property>
3818++ <property name="fill">True</property>
3819++ <property name="position">0</property>
3820++ </packing>
3821++ </child>
3822++ </object>
3823++ <packing>
3824++ <property name="expand">True</property>
3825++ <property name="fill">True</property>
3826++ <property name="position">0</property>
3827++ </packing>
3828++ </child>
3829++ <child>
3830++ <object class="GtkToolbar" id="toolbar">
3831++ <property name="visible">True</property>
3832++ <property name="can_focus">False</property>
3833++ <property name="toolbar_style">icons</property>
3834++ <property name="icon_size">1</property>
3835++ <style>
3836++ <class name="inline-toolbar"/>
3837++ </style>
3838++ <child>
3839++ <object class="GtkToolButton" id="button_setup">
3840++ <property name="visible">True</property>
3841++ <property name="can_focus">False</property>
3842++ <property name="use_action_appearance">False</property>
3843++ <property name="use_underline">True</property>
3844++ <property name="icon_name">list-add-symbolic</property>
3845++ <property name="label" translatable="yes">Set Up New Device</property>
3846++ </object>
3847++ <packing>
3848++ <property name="expand">False</property>
3849++ <property name="homogeneous">True</property>
3850++ </packing>
3851++ </child>
3852++ <child>
3853++ <object class="GtkToolButton" id="button_delete">
3854++ <property name="visible">True</property>
3855++ <property name="sensitive">False</property>
3856++ <property name="can_focus">False</property>
3857++ <property name="use_action_appearance">False</property>
3858++ <property name="use_underline">True</property>
3859++ <property name="icon_name">list-remove-symbolic</property>
3860++ <property name="label" translatable="yes">Remove Device</property>
3861++ </object>
3862++ <packing>
3863++ <property name="expand">False</property>
3864++ <property name="homogeneous">True</property>
3865++ </packing>
3866++ </child>
3867++ </object>
3868++ <packing>
3869++ <property name="expand">False</property>
3870++ <property name="fill">True</property>
3871++ <property name="position">1</property>
3872++ </packing>
3873++ </child>
3874++ </object>
3875++ <packing>
3876++ <property name="left_attach">0</property>
3877++ <property name="top_attach">1</property>
3878++ <property name="width">1</property>
3879++ <property name="height">1</property>
3880++ </packing>
3881++ </child>
3882++ <child>
3883++ <object class="GtkNotebook" id="props_notebook">
3884++ <property name="visible">True</property>
3885++ <property name="can_focus">False</property>
3886++ <property name="margin_start">6</property>
3887++ <property name="hexpand">True</property>
3888++ <property name="vexpand">True</property>
3889++ <property name="show_tabs">False</property>
3890++ <property name="show_border">False</property>
3891++ <child>
3892++ <object class="GtkScrolledWindow" id="scrolledwindow2">
3893++ <property name="visible">True</property>
3894++ <property name="can_focus">True</property>
3895++ <property name="shadow_type">in</property>
3896++ <child>
3897++ <object class="GtkViewport" id="viewport3">
3898++ <property name="visible">True</property>
3899++ <property name="can_focus">False</property>
3900++ <property name="shadow_type">none</property>
3901++ <child>
3902++ <object class="GtkLabel" id="label8">
3903++ <property name="visible">True</property>
3904++ <property name="can_focus">False</property>
3905++ </object>
3906++ </child>
3907++ </object>
3908++ </child>
3909++ </object>
3910++ </child>
3911++ <child type="tab">
3912++ <object class="GtkLabel" id="label1">
3913++ <property name="visible">True</property>
3914++ <property name="can_focus">False</property>
3915++ <property name="label">empty</property>
3916++ </object>
3917++ <packing>
3918++ <property name="tab_fill">False</property>
3919++ </packing>
3920++ </child>
3921++ <child>
3922++ <object class="GtkScrolledWindow" id="scrolledwindow1">
3923++ <property name="visible">True</property>
3924++ <property name="can_focus">True</property>
3925++ <property name="hscrollbar_policy">never</property>
3926++ <property name="vscrollbar_policy">automatic</property>
3927++ <property name="shadow_type">in</property>
3928++ <child>
3929++ <object class="GtkViewport" id="viewport1">
3930++ <property name="visible">True</property>
3931++ <property name="can_focus">False</property>
3932++ <property name="shadow_type">none</property>
3933++ <child>
3934++ <object class="GtkBox" id="properties_vbox">
3935++ <property name="visible">True</property>
3936++ <property name="can_focus">False</property>
3937++ <property name="margin_top">8</property>
3938++ <property name="orientation">vertical</property>
3939++ <child>
3940++ <object class="GtkBox" id="box1">
3941++ <property name="visible">True</property>
3942++ <property name="can_focus">False</property>
3943++ <property name="orientation">vertical</property>
3944++ <property name="spacing">6</property>
3945++ <child>
3946++ <object class="GtkBox" id="box2">
3947++ <property name="visible">True</property>
3948++ <property name="can_focus">False</property>
3949++ <property name="spacing">18</property>
3950++ <property name="homogeneous">True</property>
3951++ <child>
3952++ <object class="GtkLabel" id="connection_label">
3953++ <property name="visible">True</property>
3954++ <property name="can_focus">False</property>
3955++ <property name="xalign">1</property>
3956++ <property name="label" translatable="yes">Connection</property>
3957++ <style>
3958++ <class name="dim-label"/>
3959++ </style>
3960++ </object>
3961++ <packing>
3962++ <property name="expand">False</property>
3963++ <property name="fill">True</property>
3964++ <property name="position">0</property>
3965++ </packing>
3966++ </child>
3967++ <child>
3968++ <object class="GtkNotebook" id="connecting_notebook">
3969++ <property name="visible">True</property>
3970++ <property name="can_focus">True</property>
3971++ <property name="show_tabs">False</property>
3972++ <property name="show_border">False</property>
3973++ <child>
3974++ <object class="GtkSwitch" id="switch_connection">
3975++ <property name="visible">True</property>
3976++ <property name="can_focus">True</property>
3977++ <property name="halign">start</property>
3978++ <property name="use_action_appearance">False</property>
3979++ </object>
3980++ </child>
3981++ <child type="tab">
3982++ <object class="GtkLabel" id="label3">
3983++ <property name="visible">True</property>
3984++ <property name="can_focus">False</property>
3985++ <property name="label" translatable="yes">page 1</property>
3986++ </object>
3987++ <packing>
3988++ <property name="tab_fill">False</property>
3989++ </packing>
3990++ </child>
3991++ <child>
3992++ <object class="GtkSpinner" id="connecting_spinner">
3993++ <property name="visible">True</property>
3994++ <property name="can_focus">False</property>
3995++ <property name="halign">start</property>
3996++ </object>
3997++ <packing>
3998++ <property name="position">1</property>
3999++ </packing>
4000++ </child>
4001++ <child type="tab">
4002++ <object class="GtkLabel" id="label9">
4003++ <property name="visible">True</property>
4004++ <property name="can_focus">False</property>
4005++ <property name="label" translatable="yes">page 2</property>
4006++ </object>
4007++ <packing>
4008++ <property name="position">1</property>
4009++ <property name="tab_fill">False</property>
4010++ </packing>
4011++ </child>
4012++ <child>
4013++ <placeholder/>
4014++ </child>
4015++ <child type="tab">
4016++ <placeholder/>
4017++ </child>
4018++ </object>
4019++ <packing>
4020++ <property name="expand">False</property>
4021++ <property name="fill">True</property>
4022++ <property name="position">1</property>
4023++ </packing>
4024++ </child>
4025++ </object>
4026++ <packing>
4027++ <property name="expand">False</property>
4028++ <property name="fill">True</property>
4029++ <property name="position">0</property>
4030++ </packing>
4031++ </child>
4032++ <child>
4033++ <object class="GtkBox" id="box3">
4034++ <property name="visible">True</property>
4035++ <property name="can_focus">False</property>
4036++ <property name="spacing">18</property>
4037++ <property name="homogeneous">True</property>
4038++ <child>
4039++ <object class="GtkLabel" id="label4">
4040++ <property name="visible">True</property>
4041++ <property name="can_focus">False</property>
4042++ <property name="xalign">1</property>
4043++ <property name="label" translatable="yes">Paired</property>
4044++ <style>
4045++ <class name="dim-label"/>
4046++ </style>
4047++ </object>
4048++ <packing>
4049++ <property name="expand">False</property>
4050++ <property name="fill">True</property>
4051++ <property name="position">0</property>
4052++ </packing>
4053++ </child>
4054++ <child>
4055++ <object class="GtkLabel" id="paired_label">
4056++ <property name="visible">True</property>
4057++ <property name="can_focus">False</property>
4058++ <property name="xalign">0</property>
4059++ <property name="label">Yes</property>
4060++ </object>
4061++ <packing>
4062++ <property name="expand">False</property>
4063++ <property name="fill">True</property>
4064++ <property name="position">1</property>
4065++ </packing>
4066++ </child>
4067++ </object>
4068++ <packing>
4069++ <property name="expand">False</property>
4070++ <property name="fill">True</property>
4071++ <property name="position">1</property>
4072++ </packing>
4073++ </child>
4074++ <child>
4075++ <object class="GtkBox" id="box4">
4076++ <property name="visible">True</property>
4077++ <property name="can_focus">False</property>
4078++ <property name="spacing">18</property>
4079++ <property name="homogeneous">True</property>
4080++ <child>
4081++ <object class="GtkLabel" id="label5">
4082++ <property name="visible">True</property>
4083++ <property name="can_focus">False</property>
4084++ <property name="xalign">1</property>
4085++ <property name="label" translatable="yes">Type</property>
4086++ <style>
4087++ <class name="dim-label"/>
4088++ </style>
4089++ </object>
4090++ <packing>
4091++ <property name="expand">False</property>
4092++ <property name="fill">True</property>
4093++ <property name="position">0</property>
4094++ </packing>
4095++ </child>
4096++ <child>
4097++ <object class="GtkLabel" id="type_label">
4098++ <property name="visible">True</property>
4099++ <property name="can_focus">False</property>
4100++ <property name="xalign">0</property>
4101++ <property name="label">Keyboard</property>
4102++ </object>
4103++ <packing>
4104++ <property name="expand">False</property>
4105++ <property name="fill">True</property>
4106++ <property name="position">1</property>
4107++ </packing>
4108++ </child>
4109++ </object>
4110++ <packing>
4111++ <property name="expand">False</property>
4112++ <property name="fill">True</property>
4113++ <property name="position">2</property>
4114++ </packing>
4115++ </child>
4116++ <child>
4117++ <object class="GtkBox" id="box5">
4118++ <property name="visible">True</property>
4119++ <property name="can_focus">False</property>
4120++ <property name="spacing">18</property>
4121++ <property name="homogeneous">True</property>
4122++ <child>
4123++ <object class="GtkLabel" id="label6">
4124++ <property name="visible">True</property>
4125++ <property name="can_focus">False</property>
4126++ <property name="xalign">1</property>
4127++ <property name="label" translatable="yes">Address</property>
4128++ <style>
4129++ <class name="dim-label"/>
4130++ </style>
4131++ </object>
4132++ <packing>
4133++ <property name="expand">False</property>
4134++ <property name="fill">True</property>
4135++ <property name="position">0</property>
4136++ </packing>
4137++ </child>
4138++ <child>
4139++ <object class="GtkLabel" id="address_label">
4140++ <property name="visible">True</property>
4141++ <property name="can_focus">False</property>
4142++ <property name="xalign">0</property>
4143++ <property name="label">00:00:00:00:00</property>
4144++ <property name="selectable">True</property>
4145++ </object>
4146++ <packing>
4147++ <property name="expand">False</property>
4148++ <property name="fill">True</property>
4149++ <property name="position">1</property>
4150++ </packing>
4151++ </child>
4152++ </object>
4153++ <packing>
4154++ <property name="expand">False</property>
4155++ <property name="fill">True</property>
4156++ <property name="position">3</property>
4157++ </packing>
4158++ </child>
4159++ </object>
4160++ <packing>
4161++ <property name="expand">False</property>
4162++ <property name="fill">True</property>
4163++ <property name="position">0</property>
4164++ </packing>
4165++ </child>
4166++ <child>
4167++ <object class="GtkBox" id="additional_setup_box">
4168++ <property name="can_focus">False</property>
4169++ <property name="no_show_all">True</property>
4170++ <property name="orientation">vertical</property>
4171++ <property name="spacing">8</property>
4172++ <child>
4173++ <placeholder/>
4174++ </child>
4175++ </object>
4176++ <packing>
4177++ <property name="expand">True</property>
4178++ <property name="fill">True</property>
4179++ <property name="position">1</property>
4180++ </packing>
4181++ </child>
4182++ <child>
4183++ <object class="GtkBox" id="vbox3">
4184++ <property name="visible">True</property>
4185++ <property name="can_focus">False</property>
4186++ <property name="margin_end">6</property>
4187++ <property name="margin_bottom">6</property>
4188++ <property name="orientation">vertical</property>
4189++ <property name="spacing">6</property>
4190++ <child>
4191++ <object class="GtkBox" id="mouse_box">
4192++ <property name="visible">True</property>
4193++ <property name="can_focus">False</property>
4194++ <child>
4195++ <placeholder/>
4196++ </child>
4197++ <child>
4198++ <object class="GtkLinkButton" id="mouse_link">
4199++ <property name="label" translatable="yes">Mouse &amp; Touchpad Settings</property>
4200++ <property name="visible">True</property>
4201++ <property name="can_focus">True</property>
4202++ <property name="receives_default">True</property>
4203++ <property name="has_tooltip">False</property>
4204++ <property name="use_action_appearance">False</property>
4205++ <property name="relief">none</property>
4206++ </object>
4207++ <packing>
4208++ <property name="expand">False</property>
4209++ <property name="fill">False</property>
4210++ <property name="pack_type">end</property>
4211++ <property name="position">1</property>
4212++ </packing>
4213++ </child>
4214++ </object>
4215++ <packing>
4216++ <property name="expand">False</property>
4217++ <property name="fill">True</property>
4218++ <property name="position">0</property>
4219++ </packing>
4220++ </child>
4221++ <child>
4222++ <object class="GtkBox" id="sound_box">
4223++ <property name="visible">True</property>
4224++ <property name="can_focus">False</property>
4225++ <child>
4226++ <placeholder/>
4227++ </child>
4228++ <child>
4229++ <object class="GtkLinkButton" id="sound_link">
4230++ <property name="label" translatable="yes">Sound Settings</property>
4231++ <property name="visible">True</property>
4232++ <property name="can_focus">True</property>
4233++ <property name="receives_default">True</property>
4234++ <property name="has_tooltip">False</property>
4235++ <property name="use_action_appearance">False</property>
4236++ <property name="relief">none</property>
4237++ </object>
4238++ <packing>
4239++ <property name="expand">False</property>
4240++ <property name="fill">False</property>
4241++ <property name="pack_type">end</property>
4242++ <property name="position">1</property>
4243++ </packing>
4244++ </child>
4245++ </object>
4246++ <packing>
4247++ <property name="expand">False</property>
4248++ <property name="fill">True</property>
4249++ <property name="position">1</property>
4250++ </packing>
4251++ </child>
4252++ <child>
4253++ <object class="GtkBox" id="keyboard_box">
4254++ <property name="visible">True</property>
4255++ <property name="can_focus">False</property>
4256++ <child>
4257++ <placeholder/>
4258++ </child>
4259++ <child>
4260++ <object class="GtkLinkButton" id="keyboard_link">
4261++ <property name="label" translatable="yes">Keyboard Settings</property>
4262++ <property name="visible">True</property>
4263++ <property name="can_focus">True</property>
4264++ <property name="receives_default">True</property>
4265++ <property name="has_tooltip">False</property>
4266++ <property name="use_action_appearance">False</property>
4267++ <property name="relief">none</property>
4268++ </object>
4269++ <packing>
4270++ <property name="expand">False</property>
4271++ <property name="fill">False</property>
4272++ <property name="pack_type">end</property>
4273++ <property name="position">1</property>
4274++ </packing>
4275++ </child>
4276++ </object>
4277++ <packing>
4278++ <property name="expand">False</property>
4279++ <property name="fill">True</property>
4280++ <property name="position">2</property>
4281++ </packing>
4282++ </child>
4283++ <child>
4284++ <object class="GtkBox" id="send_box">
4285++ <property name="visible">True</property>
4286++ <property name="can_focus">False</property>
4287++ <child>
4288++ <placeholder/>
4289++ </child>
4290++ <child>
4291++ <object class="GtkButton" id="send_button">
4292++ <property name="label" translatable="yes">Send Files…</property>
4293++ <property name="can_focus">True</property>
4294++ <property name="receives_default">True</property>
4295++ <property name="use_action_appearance">False</property>
4296++ </object>
4297++ <packing>
4298++ <property name="expand">False</property>
4299++ <property name="fill">False</property>
4300++ <property name="pack_type">end</property>
4301++ <property name="position">1</property>
4302++ </packing>
4303++ </child>
4304++ </object>
4305++ <packing>
4306++ <property name="expand">False</property>
4307++ <property name="fill">True</property>
4308++ <property name="position">3</property>
4309++ </packing>
4310++ </child>
4311++ </object>
4312++ <packing>
4313++ <property name="expand">False</property>
4314++ <property name="fill">True</property>
4315++ <property name="pack_type">end</property>
4316++ <property name="position">2</property>
4317++ </packing>
4318++ </child>
4319++ <child>
4320++ <object class="GtkLabel" id="label7">
4321++ <property name="visible">True</property>
4322++ <property name="can_focus">False</property>
4323++ </object>
4324++ <packing>
4325++ <property name="expand">True</property>
4326++ <property name="fill">True</property>
4327++ <property name="position">3</property>
4328++ </packing>
4329++ </child>
4330++ </object>
4331++ </child>
4332++ </object>
4333++ </child>
4334++ </object>
4335++ <packing>
4336++ <property name="position">1</property>
4337++ </packing>
4338++ </child>
4339++ <child type="tab">
4340++ <object class="GtkLabel" id="label2">
4341++ <property name="visible">True</property>
4342++ <property name="can_focus">False</property>
4343++ <property name="label">properties</property>
4344++ </object>
4345++ <packing>
4346++ <property name="position">1</property>
4347++ <property name="tab_fill">False</property>
4348++ </packing>
4349++ </child>
4350++ <child>
4351++ <placeholder/>
4352++ </child>
4353++ </object>
4354++ <packing>
4355++ <property name="left_attach">1</property>
4356++ <property name="top_attach">1</property>
4357++ <property name="width">1</property>
4358++ <property name="height">1</property>
4359++ </packing>
4360++ </child>
4361++ <child>
4362++ <object class="GtkBox" id="box_vis">
4363++ <property name="visible">True</property>
4364++ <property name="can_focus">False</property>
4365++ <property name="margin_bottom">12</property>
4366++ <child>
4367++ <object class="GtkLabel" id="visible_label">
4368++ <property name="visible">True</property>
4369++ <property name="can_focus">False</property>
4370++ <property name="xalign">1</property>
4371++ <property name="mnemonic-widget">switch_discoverable</property>
4372++ <property name="label">Visibility of “Bastien's computer”</property>
4373++ </object>
4374++ <packing>
4375++ <property name="expand">False</property>
4376++ <property name="fill">True</property>
4377++ <property name="padding">6</property>
4378++ <property name="position">0</property>
4379++ </packing>
4380++ </child>
4381++ <child>
4382++ <object class="GtkSwitch" id="switch_discoverable">
4383++ <property name="visible">True</property>
4384++ <property name="can_focus">True</property>
4385++ <property name="use_action_appearance">False</property>
4386++ </object>
4387++ <packing>
4388++ <property name="expand">False</property>
4389++ <property name="fill">True</property>
4390++ <property name="position">1</property>
4391++ </packing>
4392++ </child>
4393++ </object>
4394++ <packing>
4395++ <property name="left_attach">0</property>
4396++ <property name="top_attach">0</property>
4397++ <property name="width">1</property>
4398++ <property name="height">1</property>
4399++ </packing>
4400++ </child>
4401++ </object>
4402+ </interface>
4403+--- a/panels/bluetooth/cc-bluetooth-panel.c
4404++++ b/panels/bluetooth/cc-bluetooth-panel.c
4405+@@ -1,6 +1,9 @@
4406+ /*
4407+ *
4408+- * Copyright (C) 2013 Bastien Nocera <hadess@hadess.net>
4409++ * BlueZ - Bluetooth protocol stack for Linux
4410++ *
4411++ * Copyright (C) 2006-2010 Bastien Nocera <hadess@hadess.net>
4412++ *
4413+ *
4414+ * This program is free software; you can redistribute it and/or modify
4415+ * it under the terms of the GNU General Public License as published by
4416+@@ -24,11 +27,14 @@
4417+
4418+ #include <glib/gi18n-lib.h>
4419+ #include <shell/cc-shell.h>
4420+-#include <bluetooth-settings-widget.h>
4421+
4422+ #include "cc-bluetooth-panel.h"
4423+ #include "cc-bluetooth-resources.h"
4424+
4425++#include <bluetooth-client.h>
4426++#include <bluetooth-utils.h>
4427++#include <bluetooth-killswitch.h>
4428++#include <bluetooth-chooser.h>
4429+
4430+ CC_PANEL_REGISTER (CcBluetoothPanel, cc_bluetooth_panel)
4431+
4432+@@ -36,32 +42,44 @@
4433+
4434+ #define WID(s) GTK_WIDGET (gtk_builder_get_object (self->priv->builder, s))
4435+
4436+-#define BLUETOOTH_DISABLED_PAGE "disabled-page"
4437+-#define BLUETOOTH_HW_DISABLED_PAGE "hw-disabled-page"
4438+-#define BLUETOOTH_NO_DEVICES_PAGE "no-devices-page"
4439+-#define BLUETOOTH_WORKING_PAGE "working-page"
4440++#define BLUEZ_SERVICE "org.bluez"
4441++#define ADAPTER_IFACE "org.bluez.Adapter1"
4442++
4443++#define KEYBOARD_PREFS "keyboard"
4444++#define MOUSE_PREFS "mouse"
4445++#define SOUND_PREFS "sound"
4446++#define WIZARD "bluetooth-wizard"
4447+
4448+ struct CcBluetoothPanelPrivate {
4449+ GtkBuilder *builder;
4450+- GtkWidget *stack;
4451+- GtkWidget *widget;
4452+- GCancellable *cancellable;
4453+-
4454+- /* Killswitch */
4455++ GtkWidget *chooser;
4456++ char *selected_bdaddr;
4457++ BluetoothClient *client;
4458++ BluetoothKillswitch *killswitch;
4459++ gboolean debug;
4460++ GHashTable *connecting_devices;
4461+ GtkWidget *kill_switch_header;
4462+- GDBusProxy *rfkill, *properties;
4463+- gboolean airplane_mode;
4464+- gboolean hardware_airplane_mode;
4465+- gboolean has_airplane_mode;
4466++ GCancellable *cancellable;
4467+ };
4468+
4469+ static void cc_bluetooth_panel_finalize (GObject *object);
4470+ static void cc_bluetooth_panel_constructed (GObject *object);
4471+
4472++static void
4473++launch_command (const char *command)
4474++{
4475++ GError *error = NULL;
4476++
4477++ if (!g_spawn_command_line_async(command, &error)) {
4478++ g_warning ("Couldn't execute command '%s': %s\n", command, error->message);
4479++ g_error_free (error);
4480++ }
4481++}
4482++
4483+ static const char *
4484+ cc_bluetooth_panel_get_help_uri (CcPanel *panel)
4485+ {
4486+- return "help:gnome-help/bluetooth";
4487++ return "help:gnome-help/bluetooth";
4488+ }
4489+
4490+ static void
4491+@@ -84,17 +102,148 @@
4492+ CcBluetoothPanel *self;
4493+
4494+ self = CC_BLUETOOTH_PANEL (object);
4495+-
4496+ g_cancellable_cancel (self->priv->cancellable);
4497+ g_clear_object (&self->priv->cancellable);
4498+
4499+- g_clear_object (&self->priv->properties);
4500+- g_clear_object (&self->priv->rfkill);
4501++ g_clear_object (&self->priv->builder);
4502++ g_clear_object (&self->priv->killswitch);
4503++ g_clear_object (&self->priv->client);
4504++
4505++ g_clear_pointer (&self->priv->connecting_devices, g_hash_table_destroy);
4506++ g_clear_pointer (&self->priv->selected_bdaddr, g_free);
4507+ g_clear_object (&self->priv->kill_switch_header);
4508+
4509+ G_OBJECT_CLASS (cc_bluetooth_panel_parent_class)->finalize (object);
4510+ }
4511+
4512++enum {
4513++ CONNECTING_NOTEBOOK_PAGE_SWITCH = 0,
4514++ CONNECTING_NOTEBOOK_PAGE_SPINNER = 1
4515++};
4516++
4517++static void
4518++set_connecting_page (CcBluetoothPanel *self,
4519++ int page)
4520++{
4521++ if (page == CONNECTING_NOTEBOOK_PAGE_SPINNER)
4522++ gtk_spinner_start (GTK_SPINNER (WID ("connecting_spinner")));
4523++ gtk_notebook_set_current_page (GTK_NOTEBOOK (WID ("connecting_notebook")), page);
4524++ if (page == CONNECTING_NOTEBOOK_PAGE_SWITCH)
4525++ gtk_spinner_start (GTK_SPINNER (WID ("connecting_spinner")));
4526++}
4527++
4528++static void
4529++remove_connecting (CcBluetoothPanel *self,
4530++ const char *bdaddr)
4531++{
4532++ g_hash_table_remove (self->priv->connecting_devices, bdaddr);
4533++}
4534++
4535++static void
4536++add_connecting (CcBluetoothPanel *self,
4537++ const char *bdaddr)
4538++{
4539++ g_hash_table_insert (self->priv->connecting_devices,
4540++ g_strdup (bdaddr),
4541++ GINT_TO_POINTER (1));
4542++}
4543++
4544++static gboolean
4545++is_connecting (CcBluetoothPanel *self,
4546++ const char *bdaddr)
4547++{
4548++ return GPOINTER_TO_INT (g_hash_table_lookup (self->priv->connecting_devices,
4549++ bdaddr));
4550++}
4551++
4552++typedef struct {
4553++ char *bdaddr;
4554++ CcBluetoothPanel *self;
4555++} ConnectData;
4556++
4557++static void
4558++connect_done (GObject *source_object,
4559++ GAsyncResult *res,
4560++ gpointer user_data)
4561++{
4562++ CcBluetoothPanel *self;
4563++ char *bdaddr;
4564++ gboolean success;
4565++ GError *error = NULL;
4566++ ConnectData *data = (ConnectData *) user_data;
4567++
4568++ success = bluetooth_client_connect_service_finish (BLUETOOTH_CLIENT (source_object),
4569++ res, &error);
4570++ if (!success && g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
4571++ goto out;
4572++
4573++ self = data->self;
4574++
4575++ /* Check whether the same device is now selected, and update the UI */
4576++ bdaddr = bluetooth_chooser_get_selected_device (BLUETOOTH_CHOOSER (self->priv->chooser));
4577++ if (g_strcmp0 (bdaddr, data->bdaddr) == 0) {
4578++ GtkSwitch *button;
4579++
4580++ button = GTK_SWITCH (WID ("switch_connection"));
4581++ /* Reset the switch if it failed */
4582++ if (success == FALSE)
4583++ gtk_switch_set_active (button, !gtk_switch_get_active (button));
4584++ set_connecting_page (self, CONNECTING_NOTEBOOK_PAGE_SWITCH);
4585++ }
4586++
4587++ remove_connecting (self, data->bdaddr);
4588++
4589++ g_free (bdaddr);
4590++
4591++out:
4592++ g_clear_error (&error);
4593++ g_free (data->bdaddr);
4594++ g_free (data);
4595++}
4596++
4597++static void
4598++switch_connected_active_changed (GtkSwitch *button,
4599++ GParamSpec *spec,
4600++ CcBluetoothPanel *self)
4601++{
4602++ char *proxy;
4603++ GValue value = { 0, };
4604++ ConnectData *data;
4605++ char *bdaddr;
4606++
4607++ bdaddr = bluetooth_chooser_get_selected_device (BLUETOOTH_CHOOSER (self->priv->chooser));
4608++ if (is_connecting (self, bdaddr)) {
4609++ g_free (bdaddr);
4610++ return;
4611++ }
4612++
4613++ if (bluetooth_chooser_get_selected_device_info (BLUETOOTH_CHOOSER (self->priv->chooser),
4614++ "proxy", &value) == FALSE) {
4615++ g_warning ("Could not get D-Bus proxy for selected device");
4616++ return;
4617++ }
4618++ proxy = g_strdup (g_dbus_proxy_get_object_path (g_value_get_object (&value)));
4619++ g_value_unset (&value);
4620++
4621++ if (proxy == NULL)
4622++ return;
4623++
4624++ data = g_new0 (ConnectData, 1);
4625++ data->bdaddr = bdaddr;
4626++ data->self = self;
4627++
4628++ bluetooth_client_connect_service (self->priv->client,
4629++ proxy,
4630++ gtk_switch_get_active (button),
4631++ self->priv->cancellable,
4632++ connect_done,
4633++ data);
4634++
4635++ add_connecting (self, data->bdaddr);
4636++ set_connecting_page (self, CONNECTING_NOTEBOOK_PAGE_SPINNER);
4637++ g_free (proxy);
4638++}
4639++
4640+ static void
4641+ cc_bluetooth_panel_constructed (GObject *object)
4642+ {
4643+@@ -109,6 +258,120 @@
4644+ gtk_widget_show_all (self->priv->kill_switch_header);
4645+ }
4646+
4647++enum {
4648++ NOTEBOOK_PAGE_EMPTY = 0,
4649++ NOTEBOOK_PAGE_PROPS = 1
4650++};
4651++
4652++static void
4653++set_notebook_page (CcBluetoothPanel *self,
4654++ int page)
4655++{
4656++ gtk_notebook_set_current_page (GTK_NOTEBOOK (WID ("props_notebook")), page);
4657++}
4658++
4659++static void
4660++cc_bluetooth_panel_update_properties (CcBluetoothPanel *self)
4661++{
4662++ char *bdaddr;
4663++ GtkSwitch *button;
4664++
4665++ button = GTK_SWITCH (WID ("switch_connection"));
4666++ g_signal_handlers_block_by_func (button, switch_connected_active_changed, self);
4667++
4668++ /* Hide all the buttons now, and show them again if we need to */
4669++ gtk_widget_hide (WID ("keyboard_box"));
4670++ gtk_widget_hide (WID ("sound_box"));
4671++ gtk_widget_hide (WID ("mouse_box"));
4672++ gtk_widget_hide (WID ("send_box"));
4673++
4674++ bdaddr = bluetooth_chooser_get_selected_device (BLUETOOTH_CHOOSER (self->priv->chooser));
4675++
4676++ if (bdaddr == NULL) {
4677++ gtk_widget_set_sensitive (WID ("properties_vbox"), FALSE);
4678++ gtk_switch_set_active (button, FALSE);
4679++ gtk_widget_set_sensitive (WID ("button_delete"), FALSE);
4680++ set_notebook_page (self, NOTEBOOK_PAGE_EMPTY);
4681++ } else {
4682++ BluetoothType type;
4683++ gboolean connected;
4684++ GValue value = { 0 };
4685++
4686++ if (self->priv->debug)
4687++ bluetooth_chooser_dump_selected_device (BLUETOOTH_CHOOSER (self->priv->chooser));
4688++
4689++ gtk_widget_set_sensitive (WID ("properties_vbox"), TRUE);
4690++
4691++ if (is_connecting (self, bdaddr)) {
4692++ gtk_switch_set_active (button, TRUE);
4693++ set_connecting_page (self, CONNECTING_NOTEBOOK_PAGE_SPINNER);
4694++ } else {
4695++ connected = bluetooth_chooser_get_selected_device_is_connected (BLUETOOTH_CHOOSER (self->priv->chooser));
4696++ gtk_switch_set_active (button, connected);
4697++ set_connecting_page (self, CONNECTING_NOTEBOOK_PAGE_SWITCH);
4698++ }
4699++
4700++ /* Paired */
4701++ bluetooth_chooser_get_selected_device_info (BLUETOOTH_CHOOSER (self->priv->chooser),
4702++ "paired", &value);
4703++ gtk_label_set_text (GTK_LABEL (WID ("paired_label")),
4704++ g_value_get_boolean (&value) ? _("Yes") : _("No"));
4705++ g_value_unset (&value);
4706++
4707++ /* UUIDs */
4708++ if (bluetooth_chooser_get_selected_device_info (BLUETOOTH_CHOOSER (self->priv->chooser),
4709++ "uuids", &value)) {
4710++ const char **uuids;
4711++ guint i;
4712++
4713++ uuids = (const char **) g_value_get_boxed (&value);
4714++
4715++ gtk_widget_set_sensitive (GTK_WIDGET(button),
4716++ bluetooth_client_get_connectable (uuids));
4717++
4718++ for (i = 0; uuids && uuids[i] != NULL; i++) {
4719++ if (g_str_equal (uuids[i], "OBEXObjectPush")) {
4720++ gtk_widget_show (WID ("send_box"));
4721++ break;
4722++ }
4723++
4724++ }
4725++
4726++ g_value_unset (&value);
4727++ }
4728++
4729++ /* Type */
4730++ type = bluetooth_chooser_get_selected_device_type (BLUETOOTH_CHOOSER (self->priv->chooser));
4731++ gtk_label_set_text (GTK_LABEL (WID ("type_label")), bluetooth_type_to_string (type));
4732++ switch (type) {
4733++ case BLUETOOTH_TYPE_KEYBOARD:
4734++ gtk_widget_show (WID ("keyboard_box"));
4735++ break;
4736++ case BLUETOOTH_TYPE_MOUSE:
4737++ case BLUETOOTH_TYPE_TABLET:
4738++ gtk_widget_show (WID ("mouse_box"));
4739++ break;
4740++ case BLUETOOTH_TYPE_HEADSET:
4741++ case BLUETOOTH_TYPE_HEADPHONES:
4742++ case BLUETOOTH_TYPE_OTHER_AUDIO:
4743++ gtk_widget_show (WID ("sound_box"));
4744++ default:
4745++ /* others? */
4746++ ;
4747++ }
4748++
4749++ gtk_label_set_text (GTK_LABEL (WID ("address_label")), bdaddr);
4750++
4751++ gtk_widget_set_sensitive (WID ("button_delete"), TRUE);
4752++ set_notebook_page (self, NOTEBOOK_PAGE_PROPS);
4753++ }
4754++
4755++ g_free (self->priv->selected_bdaddr);
4756++ self->priv->selected_bdaddr = bdaddr;
4757++
4758++ g_signal_handlers_unblock_by_func (button, switch_connected_active_changed, self);
4759++}
4760++
4761+ static void
4762+ power_callback (GObject *object,
4763+ GParamSpec *spec,
4764+@@ -118,117 +381,375 @@
4765+
4766+ state = gtk_switch_get_active (GTK_SWITCH (WID ("switch_bluetooth")));
4767+ g_debug ("Power switched to %s", state ? "on" : "off");
4768+- g_dbus_proxy_call (self->priv->properties,
4769+- "Set",
4770+- g_variant_new_parsed ("('org.gnome.SettingsDaemon.Rfkill', 'BluetoothAirplaneMode', %v)",
4771+- g_variant_new_boolean (!state)),
4772+- G_DBUS_CALL_FLAGS_NONE,
4773+- -1,
4774+- self->priv->cancellable,
4775+- NULL, NULL);
4776++ bluetooth_killswitch_set_state (self->priv->killswitch,
4777++ state ? BLUETOOTH_KILLSWITCH_STATE_UNBLOCKED : BLUETOOTH_KILLSWITCH_STATE_SOFT_BLOCKED);
4778+ }
4779+
4780+ static void
4781+-cc_bluetooth_panel_update_power (CcBluetoothPanel *self)
4782++cc_bluetooth_panel_update_treeview_message (CcBluetoothPanel *self,
4783++ const char *message)
4784+ {
4785+- GObject *toggle;
4786+- gboolean sensitive, powered;
4787+- const char *page;
4788++ if (message != NULL) {
4789++ gtk_widget_hide (self->priv->chooser);
4790++ gtk_widget_show (WID ("message_scrolledwindow"));
4791+
4792+- g_debug ("Updating airplane mode: has_airplane_mode %d, hardware_airplane_mode %d, airplane_mode %d",
4793+- self->priv->has_airplane_mode, self->priv->hardware_airplane_mode, self->priv->airplane_mode);
4794++ gtk_label_set_text (GTK_LABEL (WID ("message_label")),
4795++ message);
4796++ } else {
4797++ gtk_widget_hide (WID ("message_scrolledwindow"));
4798++ gtk_widget_show (self->priv->chooser);
4799++ }
4800++}
4801+
4802+- if (self->priv->has_airplane_mode == FALSE) {
4803+- g_debug ("No Bluetooth available");
4804+- sensitive = FALSE;
4805+- powered = FALSE;
4806+- page = BLUETOOTH_NO_DEVICES_PAGE;
4807+- } else if (self->priv->hardware_airplane_mode) {
4808+- g_debug ("Bluetooth is Hard blocked");
4809+- sensitive = FALSE;
4810+- powered = FALSE;
4811+- page = BLUETOOTH_HW_DISABLED_PAGE;
4812+- } else if (self->priv->airplane_mode) {
4813++static void
4814++cc_bluetooth_panel_update_power (CcBluetoothPanel *self)
4815++{
4816++ BluetoothKillswitchState state;
4817++ char *path;
4818++ gboolean powered, sensitive;
4819++
4820++ g_object_get (G_OBJECT (self->priv->client),
4821++ "default-adapter", &path,
4822++ "default-adapter-powered", &powered,
4823++ NULL);
4824++ state = bluetooth_killswitch_get_state (self->priv->killswitch);
4825++
4826++ g_debug ("Updating power, default adapter: %s (powered: %s), killswitch: %s",
4827++ path ? path : "(none)",
4828++ powered ? "on" : "off",
4829++ bluetooth_killswitch_state_to_string (state));
4830++
4831++ if (path == NULL &&
4832++ bluetooth_killswitch_has_killswitches (self->priv->killswitch) &&
4833++ state != BLUETOOTH_KILLSWITCH_STATE_HARD_BLOCKED) {
4834+ g_debug ("Default adapter is unpowered, but should be available");
4835+ sensitive = TRUE;
4836+- powered = FALSE;
4837+- page = BLUETOOTH_DISABLED_PAGE;
4838++ cc_bluetooth_panel_update_treeview_message (self, _("Bluetooth is disabled"));
4839++ } else if (path == NULL &&
4840++ state == BLUETOOTH_KILLSWITCH_STATE_HARD_BLOCKED) {
4841++ g_debug ("Bluetooth is Hard blocked");
4842++ sensitive = FALSE;
4843++ cc_bluetooth_panel_update_treeview_message (self, _("Bluetooth is disabled by hardware switch"));
4844++ } else if (path == NULL) {
4845++ sensitive = FALSE;
4846++ g_debug ("No Bluetooth available");
4847++ cc_bluetooth_panel_update_treeview_message (self, _("No Bluetooth adapters found"));
4848+ } else {
4849+- g_debug ("Bluetooth is available and powered");
4850+ sensitive = TRUE;
4851+- powered = TRUE;
4852+- page = BLUETOOTH_WORKING_PAGE;
4853++ g_debug ("Bluetooth is available and powered");
4854++ cc_bluetooth_panel_update_treeview_message (self, NULL);
4855+ }
4856+
4857++ g_free (path);
4858+ gtk_widget_set_sensitive (WID ("box_power") , sensitive);
4859++ gtk_widget_set_sensitive (WID ("box_vis") , sensitive);
4860++}
4861+
4862+- toggle = G_OBJECT (WID ("switch_bluetooth"));
4863+- g_signal_handlers_block_by_func (toggle, power_callback, self);
4864+- gtk_switch_set_active (GTK_SWITCH (toggle), powered);
4865+- g_signal_handlers_unblock_by_func (toggle, power_callback, self);
4866++static void
4867++switch_panel (CcBluetoothPanel *self,
4868++ const char *panel)
4869++{
4870++ CcShell *shell;
4871++ GError *error = NULL;
4872++
4873++ shell = cc_panel_get_shell (CC_PANEL (self));
4874++ if (cc_shell_set_active_panel_from_id (shell, panel, NULL, &error) == FALSE)
4875++ {
4876++ g_warning ("Failed to activate '%s' panel: %s", panel, error->message);
4877++ g_error_free (error);
4878++ }
4879++}
4880++
4881++static gboolean
4882++keyboard_callback (GtkButton *button,
4883++ CcBluetoothPanel *self)
4884++{
4885++ switch_panel (self, KEYBOARD_PREFS);
4886++ return TRUE;
4887++}
4888++
4889++static gboolean
4890++mouse_callback (GtkButton *button,
4891++ CcBluetoothPanel *self)
4892++{
4893++ switch_panel (self, MOUSE_PREFS);
4894++ return TRUE;
4895++}
4896+
4897+- gtk_stack_set_visible_child_name (GTK_STACK (self->priv->stack), page);
4898++static gboolean
4899++sound_callback (GtkButton *button,
4900++ CcBluetoothPanel *self)
4901++{
4902++ switch_panel (self, SOUND_PREFS);
4903++ return TRUE;
4904+ }
4905+
4906+ static void
4907+-airplane_mode_changed (GDBusProxy *proxy,
4908+- GVariant *changed_properties,
4909+- GStrv invalidated_properties,
4910+- CcBluetoothPanel *self)
4911++send_callback (GtkButton *button,
4912++ CcBluetoothPanel *self)
4913+ {
4914+- GVariant *v;
4915++ char *bdaddr, *alias;
4916++
4917++ bdaddr = bluetooth_chooser_get_selected_device (BLUETOOTH_CHOOSER (self->priv->chooser));
4918++ alias = bluetooth_chooser_get_selected_device_name (BLUETOOTH_CHOOSER (self->priv->chooser));
4919+
4920+- v = g_dbus_proxy_get_cached_property (self->priv->rfkill, "BluetoothAirplaneMode");
4921+- self->priv->airplane_mode = g_variant_get_boolean (v);
4922+- g_variant_unref (v);
4923++ bluetooth_send_to_address (bdaddr, alias);
4924+
4925+- v = g_dbus_proxy_get_cached_property (self->priv->rfkill, "BluetoothHardwareAirplaneMode");
4926+- self->priv->hardware_airplane_mode = g_variant_get_boolean (v);
4927+- g_variant_unref (v);
4928++ g_free (bdaddr);
4929++ g_free (alias);
4930++}
4931+
4932+- v = g_dbus_proxy_get_cached_property (self->priv->rfkill, "BluetoothHasAirplaneMode");
4933+- self->priv->has_airplane_mode = g_variant_get_boolean (v);
4934+- g_variant_unref (v);
4935++/* Visibility/Discoverable */
4936++static void discoverable_changed (BluetoothClient *client,
4937++ GParamSpec *spec,
4938++ CcBluetoothPanel *self);
4939+
4940+- cc_bluetooth_panel_update_power (self);
4941++static void
4942++switch_discoverable_active_changed (GtkSwitch *button,
4943++ GParamSpec *spec,
4944++ CcBluetoothPanel *self)
4945++{
4946++ g_signal_handlers_block_by_func (self->priv->client, discoverable_changed, self);
4947++ g_object_set (G_OBJECT (self->priv->client), "default-adapter-discoverable",
4948++ gtk_switch_get_active (button), NULL);
4949++ g_signal_handlers_unblock_by_func (self->priv->client, discoverable_changed, self);
4950+ }
4951+
4952+ static void
4953+-add_stack_page (CcBluetoothPanel *self,
4954+- const char *message,
4955+- const char *name)
4956++cc_bluetooth_panel_update_visibility (CcBluetoothPanel *self)
4957+ {
4958+- GtkWidget *label;
4959++ gboolean discoverable;
4960++ GtkSwitch *button;
4961++ char *name;
4962++
4963++ button = GTK_SWITCH (WID ("switch_discoverable"));
4964++ g_object_get (G_OBJECT (self->priv->client), "default-adapter-discoverable", &discoverable, NULL);
4965++ g_signal_handlers_block_by_func (button, switch_discoverable_active_changed, self);
4966++ gtk_switch_set_active (button, discoverable);
4967++ g_signal_handlers_unblock_by_func (button, switch_discoverable_active_changed, self);
4968++
4969++ g_object_get (G_OBJECT (self->priv->client), "default-adapter-name", &name, NULL);
4970++ if (name == NULL) {
4971++ gtk_widget_set_sensitive (WID ("switch_discoverable"), FALSE);
4972++ gtk_widget_set_sensitive (WID ("visible_label"), FALSE);
4973++ gtk_label_set_text (GTK_LABEL (WID ("visible_label")), _("Visibility"));
4974++ } else {
4975++ char *label;
4976++
4977++ label = g_strdup_printf (_("Visibility of “%s”"), name);
4978++ g_free (name);
4979++ gtk_label_set_text (GTK_LABEL (WID ("visible_label")), label);
4980++ g_free (label);
4981+
4982+- label = gtk_label_new (message);
4983+- gtk_stack_add_named (GTK_STACK (self->priv->stack), label, name);
4984+- gtk_widget_show (label);
4985++ gtk_widget_set_sensitive (WID ("switch_discoverable"), TRUE);
4986++ gtk_widget_set_sensitive (WID ("visible_label"), TRUE);
4987++ }
4988+ }
4989+
4990+ static void
4991+-panel_changed (GtkWidget *settings_widget,
4992+- const char *panel,
4993+- CcBluetoothPanel *self)
4994++discoverable_changed (BluetoothClient *client,
4995++ GParamSpec *spec,
4996++ CcBluetoothPanel *self)
4997+ {
4998+- CcShell *shell;
4999++ cc_bluetooth_panel_update_visibility (self);
5000++}
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches