Merge lp:~darkxst/gnome-control-center/vanilla3.8 into lp:~ubuntu-desktop/gnome-control-center/ubuntu

Proposed by Tim Lunn
Status: Merged
Merged at revision: 642
Proposed branch: lp:~darkxst/gnome-control-center/vanilla3.8
Merge into: lp:~ubuntu-desktop/gnome-control-center/ubuntu
Diff against target: 10741 lines (+782/-7168)
75 files modified
debian/changelog (+54/-1)
debian/control (+33/-13)
debian/control.in (+20/-11)
debian/gnome-control-center-data.install (+0/-5)
debian/gnome-control-center.install (+1/-2)
debian/libgnome-control-center1.symbols (+6/-0)
debian/patches/0001-online-accounts-use-the-async-function-to-get-all-th.patch (+0/-86)
debian/patches/0001-rfkill-glib-Don-t-use-g_assert_not_reached-in-type_t.patch (+0/-27)
debian/patches/02_new_goa.patch (+46/-0)
debian/patches/05_run_update_manager.patch (+0/-13)
debian/patches/06_handle_passwd_with_ldap.patch (+0/-19)
debian/patches/11_power-configure_lid_action.patch (+0/-149)
debian/patches/12_add_never_turn_screen_off.patch (+0/-29)
debian/patches/51_unity_options_in_display_panel.patch (+0/-592)
debian/patches/52_region_language.patch (+0/-652)
debian/patches/53_use_ubuntu_help.patch (+0/-282)
debian/patches/54_enable_alt_tap_in_shortcut.patch (+0/-58)
debian/patches/55_user_accounts_hide_controls.patch (+0/-148)
debian/patches/56_use_ubuntu_info_branding.patch (+0/-26)
debian/patches/58_hide_gdm_notifications.patch (+0/-17)
debian/patches/58_ubuntu_icon_views_redesign.patch (+0/-70)
debian/patches/59_install_gcm_components_on_demand.patch (+0/-231)
debian/patches/60_ubuntu_nav_bar.patch (+0/-406)
debian/patches/61_workaround_online_account.patch (+0/-16)
debian/patches/64_restore_terminal_keyboard_shortcut.patch (+0/-13)
debian/patches/90_force_fallback.patch (+0/-22)
debian/patches/91_unity_no_printing_panel.patch (+0/-12)
debian/patches/92_ubuntu_system_proxy.patch (+0/-217)
debian/patches/97_unity_power_ui.patch (+0/-160)
debian/patches/98_default_sound_theme.patch (+0/-16)
debian/patches/99_add_lock-on-suspend.patch (+0/-77)
debian/patches/accounts_fix_unsetting_icon.patch (+0/-16)
debian/patches/classic_use_sound_indicator.patch (+0/-10)
debian/patches/deal_with_null_ssid.patch (+0/-33)
debian/patches/dont_download_local_image.patch (+0/-28)
debian/patches/gcc_not_in_unity.patch (+33/-74)
debian/patches/git-add-21_9_display.patch (+0/-18)
debian/patches/git-background-lock-screen.patch (+0/-854)
debian/patches/git-background-remove-unused-widget.patch (+0/-116)
debian/patches/git-fix-background-panel-crash.patch (+0/-65)
debian/patches/git-rename-bluetooth-panel.patch (+0/-94)
debian/patches/git-sound-fix-port-handling.patch (+0/-24)
debian/patches/git_add_printer_crash.patch (+0/-45)
debian/patches/git_drop_ibus_engine_whitelist.patch (+0/-245)
debian/patches/git_fix_libbackground_linking.patch (+24/-0)
debian/patches/git_hide_unavailable_layout_settings_btn.patch (+0/-27)
debian/patches/git_iconview_columns.patch (+0/-16)
debian/patches/git_keyboard_grp_xkb_option.patch (+0/-83)
debian/patches/git_keyboard_update_input_switch.patch (+0/-22)
debian/patches/git_move_rr_labeler.patch (+0/-801)
debian/patches/git_new_goa_build.patch (+0/-61)
debian/patches/git_no_glxinfo.patch (+0/-151)
debian/patches/git_power_gsd_proxies.patch (+0/-19)
debian/patches/git_region_update_input_switch.patch (+0/-54)
debian/patches/git_rename_natural_scrolling.patch (+0/-26)
debian/patches/git_restore_mouse_speed.patch (+0/-32)
debian/patches/git_set_a11y_wm_theme.patch (+0/-60)
debian/patches/git_shell_use_view_style_class.patch (+0/-32)
debian/patches/git_show_per_window_input_settings.patch (+0/-306)
debian/patches/more-power-suspend-options.patch (+0/-32)
debian/patches/rename_screenshot_media_keys.patch (+0/-26)
debian/patches/revert_git_dont_hide_zoom.patch (+78/-0)
debian/patches/revert_git_drop_library.patch (+0/-165)
debian/patches/sanitize_ssid_convert_utf8.patch (+0/-78)
debian/patches/series (+8/-50)
debian/patches/ubuntu-gnome-version.patch (+103/-0)
debian/patches/ubuntu_external_panels.patch (+372/-0)
debian/patches/ubuntu_update_lock_and_power_settings.patch (+0/-45)
debian/patches/ubuntu_update_translations_template.patch (+0/-26)
debian/patches/unity_background_is_appareance.patch (+0/-15)
debian/patches/unity_no_zoom_controls.patch (+0/-27)
debian/patches/zz_add_fallback_panels_dir.patch (+0/-18)
debian/rules (+4/-2)
debian/searchingthedashlegalnotice.html (+0/-1)
debian/source/include-binaries (+0/-1)
To merge this branch: bzr merge lp:~darkxst/gnome-control-center/vanilla3.8
Reviewer Review Type Date Requested Status
Ubuntu Desktop Pending
Review via email: mp+205876@code.launchpad.net
To post a comment you must log in.
634. By Tim Lunn

remove remaining ubuntu-isms

635. By Tim Lunn

Rebase on current gnome-control-center in utopic

636. By Tim Lunn

remaining minor fixes from merge

637. By Tim Lunn

clean up changelog

638. By Tim Lunn

Merge logo changes
* debian/patches/ubuntu-gnome-version.patch: Merge build-time versioned
  logo from unity-control-center (LP: #1299912)
* debian/rules: generate logo
* debian/control.in: build-depend on ubuntu font and valac, also add
  build-dep on libkrb5-dev to fix FTBS on utopic

639. By Tim Lunn

rebase patch

640. By Tim Lunn

debian/control.in: Add build-depends on libnm-glib-vpn-dev (>= 0.9.8),
libmm-glib-dev and libsmbclient-dev, remove a few duplicated build-deps

641. By Tim Lunn

missing comma

642. By Tim Lunn

Add bug ref (LP: #1316383)

643. By Tim Lunn

* debian/patches/56_use_ubuntu_info_branding.patch:
  - Keep using this branding patch for now

644. By Tim Lunn

missing patch

645. By Tim Lunn

fix up branding to use gresources

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== removed file 'debian/UbuntuLogo.png'
0Binary files debian/UbuntuLogo.png 2013-06-17 13:33:37 +0000 and debian/UbuntuLogo.png 1970-01-01 00:00:00 +0000 differ0Binary files debian/UbuntuLogo.png 2013-06-17 13:33:37 +0000 and debian/UbuntuLogo.png 1970-01-01 00:00:00 +0000 differ
=== added file 'debian/UbuntuLogoBlank.png'
1Binary files debian/UbuntuLogoBlank.png 1970-01-01 00:00:00 +0000 and debian/UbuntuLogoBlank.png 2014-05-06 09:05:46 +0000 differ1Binary files debian/UbuntuLogoBlank.png 1970-01-01 00:00:00 +0000 and debian/UbuntuLogoBlank.png 2014-05-06 09:05:46 +0000 differ
=== modified file 'debian/changelog'
--- debian/changelog 2014-04-10 15:24:53 +0000
+++ debian/changelog 2014-05-06 09:05:46 +0000
@@ -1,3 +1,57 @@
1gnome-control-center (1:3.8.6-0ubuntu1~utopic2) utopic; urgency=medium
2
3 [ Robert Ancell ]
4 * New upstream release (LP: #1316383)
5 * Drop all Unity customizations
6 * debian/control:
7 - Build-depend on valac, libgirepository1.0-dev
8 - Use standards-version 3.9.4
9 * debian/gnome-control-center.sh:
10 * debian/patches/02_new_goa.patch:
11 - Build against newer libgoa
12 * debian/patches/git_iconview_columns.patch:
13 - Set the number of columns, that seems needed with new GTK versions
14
15 [ Tim Lunn ]
16 * debian/control.in: Add build-depends on libnm-glib-vpn-dev (>= 0.9.8),
17 libmm-glib-dev and libsmbclient-dev, remove a few duplicated build-deps
18 * debian/patches: drop all Ubuntu specific patches
19 * debian/patches/52_region_language.patch:
20 - Adapt region panel to use Ubuntu style regions and UTF-8
21 * debian/patches/56_use_ubuntu_info_branding.patch:
22 - Keep using this branding patch for now
23 * debian/patches/64_restore_terminal_keyboard_shortcut.patch:
24 - Bring back terminal shortcut
25 * debian/patches/92_ubuntu_system_proxy.patch:
26 - Add system proxy support
27 * debian/patches/99_add_lock-on-suspend.patch:
28 - Add option to lock on suspend
29 * debian/patches/git_rename_natural_scrolling.patch:
30 - change potentially offensive string
31 * debian/patches/git-background-*.patch:
32 - Allow setting a different background for the GNOME Shell lock
33 screen (LP: #1219188)
34 * debian/patches/revert_git_dont_hide_zoom.patch:
35 - Bring back zoom settings
36 * debian/patches/ubuntu-external-panels.patch:
37 - Reimplement support for external panels
38 * debian/libgnome-control-center1.symbols:
39 - Add new symbols from external panel patch
40 * debian/patches/git_keyboard_grp_xkb_option.patch:
41 - Dropped, included in new version
42
43 -- Robert Ancell <robert.ancell@canonical.com> Wed, 04 Dec 2013 11:03:26 +1300
44
45gnome-control-center (1:3.6.3-0ubuntu57) utopic; urgency=medium
46
47 * debian/patches/ubuntu-gnome-version.patch: Merge build-time versioned
48 logo from unity-control-center (LP: #1299912)
49 * debian/rules: generate logo
50 * debian/control.in: build-depend on ubuntu font and valac, also add
51 build-dep on libkrb5-dev to fix FTBS on utopic
52
53 -- Tim Lunn <tim@feathertop.org> Mon, 05 May 2014 08:37:17 +1000
54
1gnome-control-center (1:3.6.3-0ubuntu56) trusty; urgency=medium55gnome-control-center (1:3.6.3-0ubuntu56) trusty; urgency=medium
256
3 * debian/patches/git_keyboard_grp_xkb_option.patch:57 * debian/patches/git_keyboard_grp_xkb_option.patch:
@@ -68,7 +122,6 @@
68122
69 -- Iain Lane <iain.lane@canonical.com> Fri, 06 Dec 2013 12:43:49 +0000123 -- Iain Lane <iain.lane@canonical.com> Fri, 06 Dec 2013 12:43:49 +0000
70124
71
72gnome-control-center (1:3.6.3-0ubuntu48) trusty; urgency=low125gnome-control-center (1:3.6.3-0ubuntu48) trusty; urgency=low
73126
74 * debian/patches/git_iconview_columns.patch:127 * debian/patches/git_iconview_columns.patch:
75128
=== modified file 'debian/control'
--- debian/control 2013-10-31 00:54:13 +0000
+++ debian/control 2014-05-06 09:05:46 +0000
@@ -7,14 +7,15 @@
7Priority: optional7Priority: optional
8Maintainer: Ubuntu Desktop Team <ubuntu-desktop@lists.ubuntu.com>8Maintainer: Ubuntu Desktop Team <ubuntu-desktop@lists.ubuntu.com>
9XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>9XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
10Uploaders: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>, Jeremy Bicha <jbicha@ubuntu.com>10Uploaders: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
11Standards-Version: 3.9.311Standards-Version: 3.9.4
12Build-Depends: autotools-dev,12Build-Depends: autotools-dev,
13 cdbs (>= 0.4.41),13 cdbs (>= 0.4.41),
14 debhelper (>= 9),14 debhelper (>= 9),
15 desktop-file-utils,15 desktop-file-utils,
16 dh-autoreconf,16 dh-autoreconf,
17 gtk-doc-tools,17 gtk-doc-tools,
18 libgirepository1.0-dev (>= 0.9.7),
18 gnome-common,19 gnome-common,
19 gnome-pkg-tools (>= 0.10),20 gnome-pkg-tools (>= 0.10),
20 gnome-settings-daemon-dev (>= 3.8.4),21 gnome-settings-daemon-dev (>= 3.8.4),
@@ -23,42 +24,50 @@
23 intltool (>= 0.37.1),24 intltool (>= 0.37.1),
24 libcanberra-gtk3-dev,25 libcanberra-gtk3-dev,
25 libcheese-gtk-dev (>= 2.91.91.1),26 libcheese-gtk-dev (>= 2.91.91.1),
26 libcolord-dev,27 libcolord-dev (>= 0.1.29),
28 libcolord-gtk-dev (>= 0.1.24),
27 libcups2-dev,29 libcups2-dev,
28 libdbus-1-dev (>= 0.32),30 libdbus-1-dev (>= 0.32),
29 libdbus-glib-1-dev (>= 0.32),31 libdbus-glib-1-dev (>= 0.32),
30 libgdk-pixbuf2.0-dev (>= 2.23.0),32 libgdk-pixbuf2.0-dev (>= 2.23.0),
31 libglib2.0-dev (>= 2.31.2),33 libglib2.0-dev (>= 2.35.1),
32 libgnome-bluetooth-dev (>= 3.3.4),34 libgnome-bluetooth-dev (>= 3.3.4),
33 libgnome-desktop-3-dev (>= 3.5.91),35 libgnome-desktop-3-dev (>= 3.7.5),
34 libgnome-menu-3-dev,36 libgnome-menu-3-dev,
35 libgnomekbd-dev,37 libgnomekbd-dev,
36 libgoa-1.0-dev (>= 3.5.90),38 libgoa-1.0-dev (>= 3.10.0),
39 libaccountsservice-dev (>= 0.6.30),
37 libgstreamer-plugins-base0.10-dev,40 libgstreamer-plugins-base0.10-dev,
38 libgtk-3-dev (>= 3.5.13),41 libgtk-3-dev (>= 3.7.7),
39 libgtop2-dev,42 libgtop2-dev,
40 libibus-1.0-dev (>= 1.5.0),43 libibus-1.0-dev (>= 1.5.0),
41 libnm-glib-dev (>= 0.9) [linux-any],44 libkrb5-dev,
42 libnm-gtk-dev (>= 0.9) [linux-any],45 libnm-glib-dev (>= 0.9.8) [linux-any],
43 libnm-util-dev (>= 0.9) [linux-any],46 libnm-glib-vpn-dev (>= 0.9.8) [linux-any],
47 libnm-gtk-dev (>= 0.9.7.995) [linux-any],
48 libnm-util-dev (>= 0.9.8) [linux-any],
49 libmm-glib-dev [linux-any],
44 libnotify-dev (>= 0.7.3),50 libnotify-dev (>= 0.7.3),
45 libpolkit-gobject-1-dev (>= 0.103),51 libpolkit-gobject-1-dev (>= 0.103),
46 libpulse-dev (>= 1:2.0),52 libpulse-dev (>= 1:2.0),
47 libpwquality-dev,53 libpwquality-dev,
54 libsmbclient-dev,
48# libsocialweb-client-dev,55# libsocialweb-client-dev,
49 libupower-glib-dev (>= 0.9.1),56 libupower-glib-dev (>= 0.9.1),
50 libsystemd-login-dev,57 libsystemd-login-dev,
51 libwacom-dev (>= 0.6),58 libwacom-dev (>= 0.7),
52 libx11-dev,59 libx11-dev,
53 libxft-dev (>= 2.1.2),60 libxft-dev (>= 2.1.2),
54 libxkbfile-dev,61 libxkbfile-dev,
55 libxklavier-dev (>= 5.1),62 libxklavier-dev (>= 5.1),
56 libxml2-dev,63 libxml2-dev,
57 locales,64 locales,
58 network-manager-dev (>= 0.9) [linux-any],65 network-manager-dev (>= 0.9.8) [linux-any],
59 shared-mime-info,66 shared-mime-info,
67 ttf-ubuntu-font-family,
60 libwebkitgtk-3.0-dev,68 libwebkitgtk-3.0-dev,
61 libgl1-mesa-dev,69 libgl1-mesa-dev,
70 valac (>= 0.20.0),
62Vcs-Bzr: http://code.launchpad.net/~ubuntu-desktop/gnome-control-center/ubuntu71Vcs-Bzr: http://code.launchpad.net/~ubuntu-desktop/gnome-control-center/ubuntu
6372
64Package: gnome-control-center73Package: gnome-control-center
@@ -86,7 +95,8 @@
86 mousetweaks,95 mousetweaks,
87 policykit-1-gnome,96 policykit-1-gnome,
88 libcanberra-pulse,97 libcanberra-pulse,
89 system-config-printer-gnome98 system-config-printer-gnome,
99 gnome-control-center-shared-data
90Replaces: gnome-bluetooth (<< 3.4.0)100Replaces: gnome-bluetooth (<< 3.4.0)
91Breaks: gnome-power-manager (<< 3.0),101Breaks: gnome-power-manager (<< 3.0),
92 gnome-session (<< 3.0),102 gnome-session (<< 3.0),
@@ -137,6 +147,16 @@
137 This package contains data files (icons, pixmaps, locales files) needed by147 This package contains data files (icons, pixmaps, locales files) needed by
138 the configuration applets in the gnome-control-center package.148 the configuration applets in the gnome-control-center package.
139149
150Package: gnome-control-center-shared-data
151Architecture: all
152Section: gnome
153Depends: ${misc:Depends}
154Replaces: gnome-control-center-data (<< 1:3.6.3-0ubuntu54)
155Conflicts: gnome-control-center-data (<< 1:3.6.3-0ubuntu54)
156Description: configuration applets for GNOME - shared data
157 This package contains datas that are used by gnome-control-center and the
158 new unity-control-center
159
140Package: libgnome-control-center-dev160Package: libgnome-control-center-dev
141Architecture: any161Architecture: any
142Section: libdevel162Section: libdevel
143163
=== modified file 'debian/control.in'
--- debian/control.in 2014-03-21 11:25:33 +0000
+++ debian/control.in 2014-05-06 09:05:46 +0000
@@ -4,13 +4,14 @@
4Maintainer: Ubuntu Desktop Team <ubuntu-desktop@lists.ubuntu.com>4Maintainer: Ubuntu Desktop Team <ubuntu-desktop@lists.ubuntu.com>
5XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>5XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
6Uploaders: @GNOME_TEAM@6Uploaders: @GNOME_TEAM@
7Standards-Version: 3.9.37Standards-Version: 3.9.4
8Build-Depends: autotools-dev,8Build-Depends: autotools-dev,
9 cdbs (>= 0.4.41),9 cdbs (>= 0.4.41),
10 debhelper (>= 9),10 debhelper (>= 9),
11 desktop-file-utils,11 desktop-file-utils,
12 dh-autoreconf,12 dh-autoreconf,
13 gtk-doc-tools,13 gtk-doc-tools,
14 libgirepository1.0-dev (>= 0.9.7),
14 gnome-common,15 gnome-common,
15 gnome-pkg-tools (>= 0.10),16 gnome-pkg-tools (>= 0.10),
16 gnome-settings-daemon-dev (>= 3.8.4),17 gnome-settings-daemon-dev (>= 3.8.4),
@@ -19,42 +20,50 @@
19 intltool (>= 0.37.1),20 intltool (>= 0.37.1),
20 libcanberra-gtk3-dev,21 libcanberra-gtk3-dev,
21 libcheese-gtk-dev (>= 2.91.91.1),22 libcheese-gtk-dev (>= 2.91.91.1),
22 libcolord-dev,23 libcolord-dev (>= 0.1.29),
24 libcolord-gtk-dev (>= 0.1.24),
23 libcups2-dev,25 libcups2-dev,
24 libdbus-1-dev (>= 0.32),26 libdbus-1-dev (>= 0.32),
25 libdbus-glib-1-dev (>= 0.32),27 libdbus-glib-1-dev (>= 0.32),
26 libgdk-pixbuf2.0-dev (>= 2.23.0),28 libgdk-pixbuf2.0-dev (>= 2.23.0),
27 libglib2.0-dev (>= 2.31.2),29 libglib2.0-dev (>= 2.35.1),
28 libgnome-bluetooth-dev (>= 3.3.4),30 libgnome-bluetooth-dev (>= 3.3.4),
29 libgnome-desktop-3-dev (>= 3.5.91),31 libgnome-desktop-3-dev (>= 3.7.5),
30 libgnome-menu-3-dev,32 libgnome-menu-3-dev,
31 libgnomekbd-dev,33 libgnomekbd-dev,
32 libgoa-1.0-dev (>= 3.5.90),34 libgoa-1.0-dev (>= 3.10.0),
35 libaccountsservice-dev (>= 0.6.30),
33 libgstreamer-plugins-base0.10-dev,36 libgstreamer-plugins-base0.10-dev,
34 libgtk-3-dev (>= 3.5.13),37 libgtk-3-dev (>= 3.7.7),
35 libgtop2-dev,38 libgtop2-dev,
36 libibus-1.0-dev (>= 1.5.0),39 libibus-1.0-dev (>= 1.5.0),
37 libnm-glib-dev (>= 0.9) [linux-any],40 libkrb5-dev,
38 libnm-gtk-dev (>= 0.9) [linux-any],41 libnm-glib-dev (>= 0.9.8) [linux-any],
39 libnm-util-dev (>= 0.9) [linux-any],42 libnm-glib-vpn-dev (>= 0.9.8) [linux-any],
43 libnm-gtk-dev (>= 0.9.7.995) [linux-any],
44 libnm-util-dev (>= 0.9.8) [linux-any],
45 libmm-glib-dev [linux-any],
40 libnotify-dev (>= 0.7.3),46 libnotify-dev (>= 0.7.3),
41 libpolkit-gobject-1-dev (>= 0.103),47 libpolkit-gobject-1-dev (>= 0.103),
42 libpulse-dev (>= 1:2.0),48 libpulse-dev (>= 1:2.0),
43 libpwquality-dev,49 libpwquality-dev,
50 libsmbclient-dev,
44# libsocialweb-client-dev,51# libsocialweb-client-dev,
45 libupower-glib-dev (>= 0.9.1),52 libupower-glib-dev (>= 0.9.1),
46 libsystemd-login-dev,53 libsystemd-login-dev,
47 libwacom-dev (>= 0.6),54 libwacom-dev (>= 0.7),
48 libx11-dev,55 libx11-dev,
49 libxft-dev (>= 2.1.2),56 libxft-dev (>= 2.1.2),
50 libxkbfile-dev,57 libxkbfile-dev,
51 libxklavier-dev (>= 5.1),58 libxklavier-dev (>= 5.1),
52 libxml2-dev,59 libxml2-dev,
53 locales,60 locales,
54 network-manager-dev (>= 0.9) [linux-any],61 network-manager-dev (>= 0.9.8) [linux-any],
55 shared-mime-info,62 shared-mime-info,
63 ttf-ubuntu-font-family,
56 libwebkitgtk-3.0-dev,64 libwebkitgtk-3.0-dev,
57 libgl1-mesa-dev,65 libgl1-mesa-dev,
66 valac (>= 0.20.0),
58Vcs-Bzr: http://code.launchpad.net/~ubuntu-desktop/gnome-control-center/ubuntu67Vcs-Bzr: http://code.launchpad.net/~ubuntu-desktop/gnome-control-center/ubuntu
5968
60Package: gnome-control-center69Package: gnome-control-center
6170
=== modified file 'debian/gnome-control-center-data.install'
--- debian/gnome-control-center-data.install 2014-03-21 11:25:33 +0000
+++ debian/gnome-control-center-data.install 2014-05-06 09:05:46 +0000
@@ -1,12 +1,7 @@
1etc/xdg/autostart
2etc/xdg/menus
3debian/searchingthedashlegalnotice.html /usr/share/gnome-control-center
4usr/share/gnome-control-center1usr/share/gnome-control-center
5usr/share/sounds2usr/share/sounds
6usr/share/desktop-directories
7usr/share/locale3usr/share/locale
8usr/share/icons4usr/share/icons
9usr/share/polkit-15usr/share/polkit-1
10#debian/gnome-control-center.pkla /var/lib/polkit-1/localauthority/10-vendor.d/6#debian/gnome-control-center.pkla /var/lib/polkit-1/localauthority/10-vendor.d/
11debian/source_gnome-control-center.py /usr/share/apport/package-hooks7debian/source_gnome-control-center.py /usr/share/apport/package-hooks
12debian/UbuntuLogo.png /usr/share/gnome-control-center/ui
138
=== modified file 'debian/gnome-control-center.install'
--- debian/gnome-control-center.install 2013-07-08 17:05:39 +0000
+++ debian/gnome-control-center.install 2014-05-06 09:05:46 +0000
@@ -1,4 +1,3 @@
1usr/bin1usr/bin/gnome-control-center
2usr/lib/*/control-center-1/panels/*.so
3usr/share/applications2usr/share/applications
4usr/share/man3usr/share/man
54
=== modified file 'debian/libgnome-control-center1.symbols'
--- debian/libgnome-control-center1.symbols 2014-02-26 18:20:56 +0000
+++ debian/libgnome-control-center1.symbols 2014-05-06 09:05:46 +0000
@@ -1,17 +1,23 @@
1libgnome-control-center.so.1 libgnome-control-center1 #MINVER#1libgnome-control-center.so.1 libgnome-control-center1 #MINVER#
2* Build-Depends-Package: libgnome-control-center-dev2* Build-Depends-Package: libgnome-control-center-dev
3 cc_editable_entry_get_editable@Base 1:3.1.33 cc_editable_entry_get_editable@Base 1:3.1.3
4 cc_editable_entry_get_ellipsize@Base 1:3.8.6
5 cc_editable_entry_get_max_width_chars@Base 1:3.8.6
4 cc_editable_entry_get_scale@Base 1:3.1.36 cc_editable_entry_get_scale@Base 1:3.1.3
5 cc_editable_entry_get_selectable@Base 1:3.1.47 cc_editable_entry_get_selectable@Base 1:3.1.4
6 cc_editable_entry_get_text@Base 1:3.1.38 cc_editable_entry_get_text@Base 1:3.1.3
7 cc_editable_entry_get_type@Base 1:3.1.39 cc_editable_entry_get_type@Base 1:3.1.3
8 cc_editable_entry_get_weight@Base 1:3.1.310 cc_editable_entry_get_weight@Base 1:3.1.3
11 cc_editable_entry_get_width_chars@Base 1:3.8.6
9 cc_editable_entry_new@Base 1:3.1.312 cc_editable_entry_new@Base 1:3.1.3
10 cc_editable_entry_set_editable@Base 1:3.1.313 cc_editable_entry_set_editable@Base 1:3.1.3
14 cc_editable_entry_set_ellipsize@Base 1:3.8.6
15 cc_editable_entry_set_max_width_chars@Base 1:3.8.6
11 cc_editable_entry_set_scale@Base 1:3.1.316 cc_editable_entry_set_scale@Base 1:3.1.3
12 cc_editable_entry_set_selectable@Base 1:3.1.417 cc_editable_entry_set_selectable@Base 1:3.1.4
13 cc_editable_entry_set_text@Base 1:3.1.318 cc_editable_entry_set_text@Base 1:3.1.3
14 cc_editable_entry_set_weight@Base 1:3.1.319 cc_editable_entry_set_weight@Base 1:3.1.3
20 cc_editable_entry_set_width_chars@Base 1:3.8.6
15 cc_panel_get_help_uri@Base 1:3.5.221 cc_panel_get_help_uri@Base 1:3.5.2
16 cc_panel_get_permission@Base 1:3.1.322 cc_panel_get_permission@Base 1:3.1.3
17 cc_panel_get_shell@Base 1:2.91.223 cc_panel_get_shell@Base 1:2.91.2
1824
=== removed file 'debian/patches/0001-online-accounts-use-the-async-function-to-get-all-th.patch'
--- debian/patches/0001-online-accounts-use-the-async-function-to-get-all-th.patch 2013-12-06 14:51:08 +0000
+++ debian/patches/0001-online-accounts-use-the-async-function-to-get-all-th.patch 1970-01-01 00:00:00 +0000
@@ -1,86 +0,0 @@
1From 82e6777cb1a32edb9c85b85c0c3768f9ca62c4c2 Mon Sep 17 00:00:00 2001
2From: Marco Barisione <marco.barisione@collabora.co.uk>
3Date: Wed, 21 Aug 2013 11:48:25 +0100
4Subject: [PATCH] online-accounts: use the async function to get all the
5 providers
6
7https://bugzilla.gnome.org/show_bug.cgi?id=706148
8---
9 panels/online-accounts/cc-online-accounts-panel.c | 49 ++++++++++++++++++-----
10 1 file changed, 40 insertions(+), 9 deletions(-)
11
12Index: b/panels/online-accounts/cc-online-accounts-panel.c
13===================================================================
14--- a/panels/online-accounts/cc-online-accounts-panel.c
15+++ b/panels/online-accounts/cc-online-accounts-panel.c
16@@ -596,9 +596,17 @@
17
18 /* ---------------------------------------------------------------------------------------------------- */
19
20+typedef struct
21+{
22+ GoaPanel *panel;
23+} AddAccountData;
24+
25 static void
26-add_account (GoaPanel *panel)
27+get_all_providers_cb (GObject *source,
28+ GAsyncResult *res,
29+ gpointer user_data)
30 {
31+ AddAccountData *data = user_data;
32 GtkWindow *parent;
33 GtkWidget *dialog;
34 gint response;
35@@ -609,12 +617,15 @@
36
37 providers = NULL;
38
39- parent = GTK_WINDOW (cc_shell_get_toplevel (cc_panel_get_shell (CC_PANEL (panel))));
40+ providers = NULL;
41+ if (!goa_provider_get_all_finish (&providers, res, NULL))
42+ goto out;
43+
44+ parent = GTK_WINDOW (cc_shell_get_toplevel (cc_panel_get_shell (CC_PANEL (data->panel))));
45
46- dialog = goa_panel_add_account_dialog_new (panel->client);
47+ dialog = goa_panel_add_account_dialog_new (data->panel->client);
48 gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
49
50- providers = goa_provider_get_all ();
51 for (l = providers; l != NULL; l = l->next)
52 {
53 GoaProvider *provider;
54@@ -643,11 +654,11 @@
55 {
56 GtkTreeIter iter;
57 /* navigate to newly created object */
58- if (goa_panel_accounts_model_get_iter_for_object (panel->accounts_model,
59+ if (goa_panel_accounts_model_get_iter_for_object (data->panel->accounts_model,
60 object,
61 &iter))
62 {
63- gtk_tree_selection_select_iter (gtk_tree_view_get_selection (GTK_TREE_VIEW (panel->accounts_treeview)),
64+ gtk_tree_selection_select_iter (gtk_tree_view_get_selection (GTK_TREE_VIEW (data->panel->accounts_treeview)),
65 &iter);
66 }
67 g_object_unref (object);
68@@ -675,6 +686,18 @@
69 out:
70 g_list_foreach (providers, (GFunc) g_object_unref, NULL);
71 g_list_free (providers);
72+ g_clear_object (&data->panel);
73+ g_slice_free (AddAccountData, data);
74+}
75+
76+static void
77+add_account (GoaPanel *panel)
78+{
79+ AddAccountData *data;
80+
81+ data = g_slice_new0 (AddAccountData);
82+ data->panel = g_object_ref_sink (panel);
83+ goa_provider_get_all (get_all_providers_cb, data);
84 }
85
86 /* ---------------------------------------------------------------------------------------------------- */
870
=== removed file 'debian/patches/0001-rfkill-glib-Don-t-use-g_assert_not_reached-in-type_t.patch'
--- debian/patches/0001-rfkill-glib-Don-t-use-g_assert_not_reached-in-type_t.patch 2013-10-23 17:02:34 +0000
+++ debian/patches/0001-rfkill-glib-Don-t-use-g_assert_not_reached-in-type_t.patch 1970-01-01 00:00:00 +0000
@@ -1,27 +0,0 @@
1From 90f49a4d5dd646b8fce10f61a9231db4973a907b Mon Sep 17 00:00:00 2001
2From: Adel Gadllah <adel.gadllah@gmail.com>
3Date: Thu, 16 May 2013 15:41:17 +0200
4Subject: [PATCH] rfkill-glib: Don't use g_assert_not_reached in type_to_string
5
6New kernel versions can add new RFKILL types, we should now crash here,
7just say that we don't know what the switch is.
8---
9 panels/network/rfkill-glib.c | 2 +-
10 1 file changed, 1 insertion(+), 1 deletion(-)
11
12diff --git a/panels/network/rfkill-glib.c b/panels/network/rfkill-glib.c
13index e27ca40..7c9ee3c 100644
14--- a/panels/network/rfkill-glib.c
15+++ b/panels/network/rfkill-glib.c
16@@ -80,7 +80,7 @@ type_to_string (unsigned int type)
17 case RFKILL_TYPE_WWAN:
18 return "WWAN";
19 default:
20- g_assert_not_reached ();
21+ return "UNKNOWN";
22 }
23 }
24
25--
261.8.3.2
27
280
=== added file 'debian/patches/02_new_goa.patch'
--- debian/patches/02_new_goa.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/02_new_goa.patch 2014-05-06 09:05:46 +0000
@@ -0,0 +1,46 @@
1Index: gnome-control-center-3.8.6/panels/online-accounts/cc-online-accounts-panel.c
2===================================================================
3--- gnome-control-center-3.8.6.orig/panels/online-accounts/cc-online-accounts-panel.c 2013-12-12 14:00:10.759923318 +1300
4+++ gnome-control-center-3.8.6/panels/online-accounts/cc-online-accounts-panel.c 2013-12-12 14:00:10.755923318 +1300
5@@ -617,8 +617,11 @@
6 /* ---------------------------------------------------------------------------------------------------- */
7
8 static void
9-add_account (CcGoaPanel *panel)
10+get_all_providers_cb (GObject *source,
11+ GAsyncResult *res,
12+ gpointer user_data)
13 {
14+ CcGoaPanel *panel = CC_GOA_PANEL (user_data);
15 GtkWindow *parent;
16 GtkWidget *dialog;
17 gint response;
18@@ -629,12 +632,14 @@
19
20 providers = NULL;
21
22+ if (!goa_provider_get_all_finish (&providers, res, NULL))
23+ goto out;
24+
25 parent = GTK_WINDOW (cc_shell_get_toplevel (cc_panel_get_shell (CC_PANEL (panel))));
26
27 dialog = goa_panel_add_account_dialog_new (panel->client);
28 gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
29
30- providers = goa_provider_get_all ();
31 for (l = providers; l != NULL; l = l->next)
32 {
33 GoaProvider *provider;
34@@ -697,6 +703,12 @@
35 g_list_free (providers);
36 }
37
38+static void
39+add_account (CcGoaPanel *panel)
40+{
41+ goa_provider_get_all (get_all_providers_cb, panel);
42+}
43+
44 /* ---------------------------------------------------------------------------------------------------- */
45
46 static void
047
=== removed file 'debian/patches/05_run_update_manager.patch'
--- debian/patches/05_run_update_manager.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/05_run_update_manager.patch 1970-01-01 00:00:00 +0000
@@ -1,13 +0,0 @@
1Index: b/panels/info/cc-info-panel.c
2===================================================================
3--- a/panels/info/cc-info-panel.c
4+++ b/panels/info/cc-info-panel.c
5@@ -1900,7 +1900,7 @@
6 {
7 GError *error;
8 error = NULL;
9- g_spawn_command_line_async ("gpk-update-viewer", &error);
10+ g_spawn_command_line_async ("update-manager", &error);
11 if (error != NULL)
12 {
13 g_warning ("unable to launch Software Updates: %s", error->message);
140
=== removed file 'debian/patches/06_handle_passwd_with_ldap.patch'
--- debian/patches/06_handle_passwd_with_ldap.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/06_handle_passwd_with_ldap.patch 1970-01-01 00:00:00 +0000
@@ -1,19 +0,0 @@
1Description: Handle the case where passwd re-asks for the current password when it was entered incorrectly (when using LDAP)
2 Based on a patch from Ryan Tandy
3Author: Chris Coulson <chris.coulson@canonical.com>
4Bug-Ubuntu: https:/launchpad.net/bugs/607357
5Forwarded: no
6
7Index: b/panels/user-accounts/run-passwd.c
8===================================================================
9--- a/panels/user-accounts/run-passwd.c
10+++ b/panels/user-accounts/run-passwd.c
11@@ -408,7 +408,7 @@
12
13 if (is_string_complete (str->str, "assword: ", "failure", "wrong", "error", NULL)) {
14
15- if (strstr (str->str, "assword: ") != NULL) {
16+ if (strstr (str->str, "assword: ") != NULL && strstr (str->str, "incorrect") == NULL) {
17 /* Authentication successful */
18
19 passwd_handler->backend_state = PASSWD_STATE_NEW;
200
=== removed file 'debian/patches/11_power-configure_lid_action.patch'
--- debian/patches/11_power-configure_lid_action.patch 2013-09-09 14:28:59 +0000
+++ debian/patches/11_power-configure_lid_action.patch 1970-01-01 00:00:00 +0000
@@ -1,149 +0,0 @@
1Subject: [PATCH] power: Add configuration for lid action
2Bug: https://bugzilla.gnome.org/show_bug.cgi?id=659045
3Bug-Ubuntu: https://bugs.launchpad.net/bugs/792636
4--- a/panels/power/cc-power-panel.c
5+++ b/panels/power/cc-power-panel.c
6@@ -932,6 +932,7 @@
7 set_ac_battery_ui_mode (CcPowerPanel *self)
8 {
9 gboolean has_batteries = FALSE;
10+ gboolean has_lid = FALSE;
11 gboolean ret;
12 GError *error = NULL;
13 GPtrArray *devices;
14@@ -964,7 +965,13 @@
15 }
16 }
17 g_ptr_array_unref (devices);
18+
19+ has_lid = up_client_get_lid_is_present (self->priv->up_client);
20+
21 out:
22+ gtk_widget_set_visible (WID (priv->builder, "combobox_lid_ac"), has_lid);
23+ gtk_widget_set_visible (WID (priv->builder, "label_lid_action"), has_lid);
24+ gtk_widget_set_visible (WID (priv->builder, "combobox_lid_battery"), has_batteries && has_lid);
25 gtk_widget_set_visible (WID (priv->builder, "label_header_battery"), has_batteries);
26 gtk_widget_set_visible (WID (priv->builder, "label_header_ac"), has_batteries);
27 gtk_widget_set_visible (WID (priv->builder, "combobox_sleep_battery"), has_batteries);
28@@ -1080,6 +1087,26 @@
29 G_CALLBACK (activate_link_cb),
30 self);
31
32+ value = g_settings_get_enum (self->priv->gsd_settings, "lid-close-ac-action");
33+ widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
34+ "combobox_lid_ac"));
35+ disable_unavailable_combo_items (self, GTK_COMBO_BOX (widget));
36+ set_value_for_combo (GTK_COMBO_BOX (widget), value);
37+ g_object_set_data (G_OBJECT(widget), "_gsettings_key", "lid-close-ac-action");
38+ g_signal_connect (widget, "changed",
39+ G_CALLBACK (combo_enum_changed_cb),
40+ self);
41+
42+ value = g_settings_get_enum (self->priv->gsd_settings, "lid-close-battery-action");
43+ widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
44+ "combobox_lid_battery"));
45+ disable_unavailable_combo_items (self, GTK_COMBO_BOX (widget));
46+ set_value_for_combo (GTK_COMBO_BOX (widget), value);
47+ g_object_set_data (G_OBJECT(widget), "_gsettings_key", "lid-close-battery-action");
48+ g_signal_connect (widget, "changed",
49+ G_CALLBACK (combo_enum_changed_cb),
50+ self);
51+
52 widget = WID (self->priv->builder, "vbox_power");
53 gtk_widget_reparent (widget, (GtkWidget *) self);
54 }
55--- a/panels/power/power.ui
56+++ b/panels/power/power.ui
57@@ -53,6 +53,28 @@
58 </row>
59 </data>
60 </object>
61+ <object class="GtkListStore" id="liststore_lid">
62+ <columns>
63+ <!-- column-name name -->
64+ <column type="gchararray"/>
65+ <!-- column-name value -->
66+ <column type="gint"/>
67+ <!-- column-name sensitive -->
68+ <column type="gboolean"/>
69+ </columns>
70+ <data>
71+ <row>
72+ <col id="0" translatable="yes">Suspend</col>
73+ <col id="1">1</col>
74+ <col id="2">True</col>
75+ </row>
76+ <row>
77+ <col id="0" translatable="yes">Do nothing</col>
78+ <col id="1">5</col>
79+ <col id="2">True</col>
80+ </row>
81+ </data>
82+ </object>
83 <object class="GtkWindow" id="window_power">
84 <property name="can_focus">False</property>
85 <property name="resizable">False</property>
86@@ -172,6 +194,50 @@
87 <property name="top_attach">2</property>
88 </packing>
89 </child>
90+ <child>
91+ <object class="GtkLabel" id="label_lid_action">
92+ <property name="visible">True</property>
93+ <property name="can_focus">False</property>
94+ <property name="halign">end</property>
95+ <property name="label" translatable="yes">When the lid is closed</property>
96+ </object>
97+ <packing>
98+ <property name="left_attach">0</property>
99+ <property name="top_attach">3</property>
100+ </packing>
101+ </child>
102+ <child>
103+ <object class="GtkComboBox" id="combobox_lid_battery">
104+ <property name="visible">True</property>
105+ <property name="can_focus">False</property>
106+ <property name="model">liststore_lid</property>
107+ <property name="hexpand">True</property>
108+ <accessibility>
109+ <relation type="labelled-by" target="label_header_battery"/>
110+ <relation type="labelled-by" target="label_lid_action"/>
111+ </accessibility>
112+ </object>
113+ <packing>
114+ <property name="left_attach">1</property>
115+ <property name="top_attach">3</property>
116+ </packing>
117+ </child>
118+ <child>
119+ <object class="GtkComboBox" id="combobox_lid_ac">
120+ <property name="visible">True</property>
121+ <property name="can_focus">False</property>
122+ <property name="model">liststore_lid</property>
123+ <property name="hexpand">True</property>
124+ <accessibility>
125+ <relation type="labelled-by" target="label_header_ac"/>
126+ <relation type="labelled-by" target="label_lid_action"/>
127+ </accessibility>
128+ </object>
129+ <packing>
130+ <property name="left_attach">2</property>
131+ <property name="top_attach">3</property>
132+ </packing>
133+ </child>
134 </object>
135 <packing>
136 <property name="expand">False</property>
137@@ -352,9 +418,12 @@
138 </object>
139 <object class="GtkSizeGroup" id="sizegroup_combos">
140 <widgets>
141+ <widget name="combobox_lid_battery"/>
142+ <widget name="combobox_lid_ac"/>
143 <widget name="combobox_critical"/>
144 <widget name="combobox_sleep_battery"/>
145 <widget name="combobox_sleep_ac"/>
146+ <widget name="combobox_sleep_ac"/>
147 </widgets>
148 </object>
149 </interface>
1500
=== removed file 'debian/patches/12_add_never_turn_screen_off.patch'
--- debian/patches/12_add_never_turn_screen_off.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/12_add_never_turn_screen_off.patch 1970-01-01 00:00:00 +0000
@@ -1,29 +0,0 @@
1Index: b/panels/screen/cc-screen-panel.c
2===================================================================
3--- a/panels/screen/cc-screen-panel.c
4+++ b/panels/screen/cc-screen-panel.c
5@@ -402,8 +402,7 @@
6 gtk_tree_model_get (model, &iter,
7 1, &value_tmp,
8 -1);
9- if (value == value_tmp ||
10- (value_tmp > value_prev && value < value_tmp))
11+ if (value == value_tmp)
12 {
13 gtk_combo_box_set_active_iter (combo_box, &iter);
14 return;
15Index: b/panels/screen/screen.ui
16===================================================================
17--- a/panels/screen/screen.ui
18+++ b/panels/screen/screen.ui
19@@ -84,6 +84,10 @@
20 <col id="0" translatable="yes">1 hour</col>
21 <col id="1">3600</col>
22 </row>
23+ <row>
24+ <col id="0" translatable="yes">Never</col>
25+ <col id="1">0</col>
26+ </row>
27 </data>
28 </object>
29 <object class="GtkWindow" id="window1">
300
=== removed file 'debian/patches/51_unity_options_in_display_panel.patch'
--- debian/patches/51_unity_options_in_display_panel.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/51_unity_options_in_display_panel.patch 1970-01-01 00:00:00 +0000
@@ -1,592 +0,0 @@
1Index: gnome-control-center-3.4.2/panels/display/cc-display-panel.c
2===================================================================
3--- gnome-control-center-3.4.2.orig/panels/display/cc-display-panel.c 2012-05-15 12:18:30.000000000 +0200
4+++ gnome-control-center-3.4.2/panels/display/cc-display-panel.c 2012-07-23 10:26:57.281976435 +0200
5@@ -54,6 +54,13 @@
6 #define MINIMUM_WIDTH 675
7 #define MINIMUM_HEIGHT 530
8
9+#define UNITY_GSETTINGS_SCHEMA "org.compiz.unityshell"
10+#define UNITY_GSETTINGS_PATH "/org/compiz/profiles/unity/plugins/unityshell/"
11+#define UNITY_LAUNCHER_ALL_MONITORS_KEY "num-launchers"
12+#define UNITY_STICKY_EDGE_KEY "launcher-capture-mouse"
13+#define UNITY2D_GSETTINGS_MAIN "com.canonical.Unity2d"
14+#define UNITY2D_GSETTINGS_LAUNCHER "com.canonical.Unity2d.Launcher"
15+
16 enum {
17 TEXT_COL,
18 WIDTH_COL,
19@@ -72,6 +79,9 @@
20 GnomeRROutputInfo *current_output;
21
22 GSettings *clock_settings;
23+ GSettings *unity_settings;
24+ GSettings *unity2d_settings_main;
25+ GSettings *unity2d_settings_launcher;
26 GtkBuilder *builder;
27 guint focus_id;
28
29@@ -119,6 +129,8 @@
30 guint n_properties,
31 GObjectConstructParam *properties);
32 static void on_screen_changed (GnomeRRScreen *scr, gpointer data);
33+static void refresh_unity_launcher_placement (CcDisplayPanel *self);
34+static gboolean unity_launcher_on_all_monitors (GSettings *settings);
35
36 static void
37 cc_display_panel_get_property (GObject *object,
38@@ -168,6 +180,13 @@
39 if (self->priv->clock_settings != NULL)
40 g_object_unref (self->priv->clock_settings);
41
42+ if (self->priv->unity2d_settings_main != NULL)
43+ g_object_unref (self->priv->unity2d_settings_main);
44+ if (self->priv->unity2d_settings_launcher != NULL)
45+ g_object_unref (self->priv->unity2d_settings_launcher);
46+ if (self->priv->unity_settings != NULL)
47+ g_object_unref (self->priv->unity_settings);
48+
49 shell = cc_panel_get_shell (CC_PANEL (self));
50 if (shell != NULL)
51 {
52@@ -223,6 +242,12 @@
53 }
54
55 static gboolean
56+is_unity_session (void)
57+{
58+ return (g_strcmp0 (g_getenv("XDG_CURRENT_DESKTOP"), "Unity") == 0);
59+}
60+
61+static gboolean
62 should_show_resolution (gint output_width,
63 gint output_height,
64 gint width,
65@@ -262,6 +287,9 @@
66 gnome_rr_labeler_show (self->priv->labeler);
67
68 select_current_output_from_dialog_position (self);
69+
70+ if (is_unity_session ())
71+ refresh_unity_launcher_placement (self);
72 }
73
74 static void
75@@ -599,6 +627,10 @@
76 gtk_widget_set_sensitive (self->priv->clone_checkbox, mirror_is_supported);
77 gtk_widget_set_sensitive (self->priv->clone_label, mirror_is_supported);
78
79+ /* set inactive the launcher placement choice */
80+ gtk_widget_set_sensitive (WID ("launcher_placement_combo"), !mirror_is_active);
81+ gtk_widget_set_sensitive (WID ("stickyedge_switch"), !mirror_is_active);
82+
83 g_signal_handlers_unblock_by_func (self->priv->clone_checkbox, G_CALLBACK (on_clone_changed), self);
84 }
85
86@@ -838,6 +870,7 @@
87 rebuild_on_off_radios (self);
88 rebuild_resolution_combo (self);
89 rebuild_rotation_combo (self);
90+ refresh_unity_launcher_placement (self);
91
92 self->priv->ignore_gui_changes = FALSE;
93 }
94@@ -1722,6 +1755,10 @@
95 outputs = gnome_rr_config_get_outputs (self->priv->current_configuration);
96 for (i = 0; outputs[i] != NULL; ++i)
97 gnome_rr_output_info_set_primary (outputs[i], outputs[i] == output);
98+
99+ gtk_widget_queue_draw (WID ("self->priv->area"));
100+ /* refresh the combobox */
101+ refresh_unity_launcher_placement (self);
102 }
103
104 static void
105@@ -2073,7 +2110,30 @@
106 g_object_unref (layout);
107 cairo_restore (cr);
108
109- if (gnome_rr_output_info_get_primary (output))
110+ /* Only display a launcher on all or primary monitor */
111+ if (is_unity_session ())
112+ {
113+ if (gnome_rr_output_info_is_active (output) && (unity_launcher_on_all_monitors (self->priv->unity_settings) || gnome_rr_output_info_get_primary (output)))
114+ {
115+ cairo_rectangle (cr, x, y, 10, h * scale + 0.5);
116+ cairo_set_source_rgb (cr, 0, 0, 0);
117+ foo_scroll_area_add_input_from_fill (FOO_SCROLL_AREA (self->priv->area),
118+ cr,
119+ (FooScrollAreaEventFunc) on_top_bar_event,
120+ self);
121+ cairo_fill (cr);
122+
123+ cairo_set_source_rgb (cr, 0.25, 0.25, 0.25);
124+ cairo_rectangle (cr, x + 1, y + 6, 8, 8);
125+ cairo_rectangle (cr, x + 1, y + 16, 8, 8);
126+ cairo_rectangle (cr, x + 1, y + 26, 8, 8);
127+ cairo_rectangle (cr, x + 1, y + 36, 8, 8);
128+ cairo_rectangle (cr, x + 1, y + h * scale + 0.5 - 10, 8, 8);
129+ cairo_fill (cr);
130+ }
131+ }
132+
133+ if (gnome_rr_output_info_get_primary (output) && !is_unity_session ())
134 {
135 const char *clock_format;
136 char *text;
137@@ -2556,6 +2616,233 @@
138 }
139
140 static void
141+stickyedge_widget_refresh (GtkSwitch *switcher, GSettings *settings)
142+{
143+ gboolean stickyedge_enabled = g_settings_get_boolean (settings, UNITY_STICKY_EDGE_KEY);
144+
145+ gtk_switch_set_active (switcher, stickyedge_enabled);
146+}
147+
148+static void
149+ext_stickyedge_changed_callback (GSettings* settings,
150+ guint key,
151+ gpointer user_data)
152+{
153+ stickyedge_widget_refresh (GTK_SWITCH (user_data), settings);
154+}
155+
156+static void
157+on_stickyedge_changed (GtkSwitch *switcher, GParamSpec *pspec, gpointer user_data)
158+{
159+ CcDisplayPanel *self = CC_DISPLAY_PANEL (user_data);
160+ gboolean enabled = gtk_switch_get_active (GTK_SWITCH (switcher));
161+
162+ /* 3d */
163+ g_settings_set_boolean (self->priv->unity_settings, UNITY_STICKY_EDGE_KEY, enabled);
164+ /* 2d */
165+ if (self->priv->unity2d_settings_main)
166+ g_settings_set_boolean (self->priv->unity2d_settings_main, "sticky-edges", enabled);
167+}
168+
169+static gboolean
170+unity_launcher_on_all_monitors (GSettings *settings)
171+{
172+ gint value = g_settings_get_int (settings, UNITY_LAUNCHER_ALL_MONITORS_KEY);
173+ return (value == 0);
174+}
175+
176+static GdkPixbuf*
177+get_monitor_pixbuf (CcDisplayPanel *self, GnomeRROutputInfo *output)
178+{
179+ GdkRGBA color;
180+ cairo_surface_t *cairo_surface;
181+ cairo_t *cr;
182+ int monitor_width = 30;
183+ int monitor_height = 15;
184+
185+ gnome_rr_labeler_get_rgba_for_output (self->priv->labeler, output, &color);
186+
187+ cairo_surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, monitor_width, monitor_height);
188+ cr = cairo_create (cairo_surface);
189+ cairo_surface_destroy (cairo_surface);
190+ cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
191+ cairo_paint (cr);
192+
193+ cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
194+ cairo_set_source_rgb (cr, color.red, color.green, color.blue);
195+ cairo_rectangle (cr, 0.5, 0.5, monitor_width - 1, monitor_height - 1);
196+ cairo_fill (cr);
197+
198+ cairo_set_line_width (cr, 1);
199+ cairo_set_source_rgba (cr, 0, 0, 0, 1.0);
200+ cairo_rectangle (cr, 0.5, 0.5, monitor_width - 1, monitor_height - 1);
201+ cairo_stroke (cr);
202+
203+ return gdk_pixbuf_get_from_surface (cairo_get_target (cr), 0, 0, monitor_width, monitor_height);
204+}
205+
206+static void
207+refresh_unity_launcher_placement (CcDisplayPanel *self)
208+{
209+ GtkWidget *launcher_placement_combo = WID ("launcher_placement_combo");
210+ GtkListStore *liststore;
211+ GtkTreeIter iter;
212+ GList *connected_outputs = NULL;
213+ GList *list;
214+ gboolean launcher_on_all_monitors = unity_launcher_on_all_monitors (self->priv->unity_settings);
215+ gint index_of_primary_screen = 0;
216+ gint i;
217+
218+ liststore = (GtkListStore *) gtk_builder_get_object (self->priv->builder, "available_launcher_placement_store");
219+ gtk_list_store_clear (liststore);
220+
221+ connected_outputs = list_connected_outputs (self, NULL, NULL);
222+ for (list = connected_outputs, i = 0; list != NULL; list = list->next)
223+ {
224+ char *monitor_name;
225+ GdkPixbuf *monitor_pixbuf;
226+ GnomeRROutputInfo *output = list->data;
227+
228+ if (!gnome_rr_output_info_is_active (output))
229+ continue;
230+
231+ gtk_list_store_append (liststore, &iter);
232+ monitor_name = g_strdup (gnome_rr_output_info_get_display_name (output));
233+ monitor_pixbuf = get_monitor_pixbuf (self, output);
234+
235+ gtk_list_store_set (liststore, &iter, 0, monitor_pixbuf, 1, monitor_name, -1);
236+
237+ /* select it if primary and only one launcher */
238+ if (gnome_rr_output_info_get_primary (output) && (!launcher_on_all_monitors))
239+ index_of_primary_screen = i;
240+ i++;
241+
242+ g_object_unref (monitor_pixbuf);
243+ g_free (monitor_name);
244+ }
245+
246+ // FIXME: check autosort?
247+ gtk_list_store_append (liststore, &iter);
248+ gtk_list_store_set (liststore, &iter, 0, NULL, 1, _("All displays"), -1);
249+
250+ if (launcher_on_all_monitors)
251+ index_of_primary_screen = i;
252+
253+ gtk_combo_box_set_active (GTK_COMBO_BOX (launcher_placement_combo), index_of_primary_screen);
254+}
255+
256+static gboolean
257+switcher_set_to_launcher_on_all_monitors (CcDisplayPanel *self)
258+{
259+ GtkComboBox *combo = GTK_COMBO_BOX (WID ("launcher_placement_combo"));
260+ gint active = gtk_combo_box_get_active (combo);
261+ gint number_items = gtk_tree_model_iter_n_children (gtk_combo_box_get_model (combo),
262+ NULL);
263+ return (active == number_items - 1);
264+}
265+
266+static void
267+ext_launcher_placement_changed_callback (GSettings* settings,
268+ guint key,
269+ gpointer user_data)
270+{
271+ // add some crazyness as 2d/3d are not using the same keys
272+ CcDisplayPanel *self = CC_DISPLAY_PANEL (user_data);
273+ gint launcher_unity_value = 0;
274+
275+ // two options support: all monitors (0)i or just primary desktop (hence set to 1, not any other number)
276+ if (! switcher_set_to_launcher_on_all_monitors (self))
277+ launcher_unity_value = 1;
278+
279+ if (g_settings_get_int (settings, UNITY_LAUNCHER_ALL_MONITORS_KEY) != launcher_unity_value)
280+ refresh_unity_launcher_placement (self);
281+}
282+
283+static void
284+on_launcher_placement_combo_changed (GtkComboBox *combo, CcDisplayPanel *self)
285+{
286+ gint active = gtk_combo_box_get_active (combo);
287+ gint i;
288+ gint index_on_combo = 0;
289+
290+ if (active < 0)
291+ return;
292+ gint value = 0;
293+ gboolean on_all_monitors = switcher_set_to_launcher_on_all_monitors (self);
294+
295+ if (!on_all_monitors) {
296+ value = 1;
297+ // set the primary output if needed
298+ GnomeRROutputInfo **outputs = gnome_rr_config_get_outputs (self->priv->current_configuration);
299+
300+ for (i = 0; outputs[i] != NULL; ++i)
301+ {
302+ GnomeRROutputInfo *output = outputs[i];
303+ if (!gnome_rr_output_info_is_active (output))
304+ continue;
305+
306+ if ((active == index_on_combo) && !gnome_rr_output_info_get_primary (output))
307+ {
308+ set_primary_output (self, output);
309+ break;
310+ }
311+ index_on_combo++;
312+ }
313+ }
314+
315+ /* 3d */
316+ if (self->priv->unity_settings)
317+ g_settings_set_int (self->priv->unity_settings, UNITY_LAUNCHER_ALL_MONITORS_KEY, value);
318+ /* 2d */
319+ if (self->priv->unity2d_settings_launcher)
320+ g_settings_set_boolean (self->priv->unity2d_settings_launcher, "only-one-launcher", !on_all_monitors);
321+}
322+
323+static void
324+setup_unity_settings (CcDisplayPanel *self)
325+{
326+ const gchar * const *schemas;
327+
328+ /* Only use the unity-2d schema if it's installed */
329+ schemas = g_settings_list_schemas ();
330+ while (*schemas != NULL)
331+ {
332+ if (g_strcmp0 (*schemas, UNITY2D_GSETTINGS_LAUNCHER) == 0)
333+ {
334+ self->priv->unity2d_settings_main = g_settings_new (UNITY2D_GSETTINGS_MAIN);
335+ self->priv->unity2d_settings_launcher = g_settings_new (UNITY2D_GSETTINGS_LAUNCHER);
336+ break;
337+ }
338+ schemas++;
339+ }
340+ schemas = g_settings_list_relocatable_schemas ();
341+ while (*schemas != NULL)
342+ {
343+ if (g_strcmp0 (*schemas, UNITY_GSETTINGS_SCHEMA) == 0)
344+ {
345+ self->priv->unity_settings = g_settings_new_with_path (UNITY_GSETTINGS_SCHEMA, UNITY_GSETTINGS_PATH);
346+ break;
347+ }
348+ schemas++;
349+ }
350+
351+ if (!self->priv->unity_settings)
352+ return;
353+
354+ GtkWidget *sticky_edge_switch = WID ("stickyedge_switch");
355+ g_signal_connect (sticky_edge_switch, "notify::active",
356+ G_CALLBACK (on_stickyedge_changed), self);
357+ g_signal_connect (self->priv->unity_settings, "changed::" UNITY_STICKY_EDGE_KEY,
358+ G_CALLBACK (ext_stickyedge_changed_callback), sticky_edge_switch);
359+ stickyedge_widget_refresh (GTK_SWITCH (sticky_edge_switch), self->priv->unity_settings);
360+
361+ g_signal_connect (G_OBJECT (WID ("launcher_placement_combo")), "changed",
362+ G_CALLBACK (on_launcher_placement_combo_changed), self);
363+ g_signal_connect (self->priv->unity_settings, "changed::" UNITY_LAUNCHER_ALL_MONITORS_KEY,
364+ G_CALLBACK (ext_launcher_placement_changed_callback), self);
365+}
366+
367+static void
368 cc_display_panel_init (CcDisplayPanel *self)
369 {
370 }
371@@ -2572,7 +2859,7 @@
372 CcDisplayPanel *self;
373 CcShell *shell;
374 GtkWidget *toplevel;
375- gchar *objects[] = {"display-panel", NULL};
376+ gchar *objects[] = {"display-panel", "available_launcher_placement_store", NULL};
377
378 obj = G_OBJECT_CLASS (cc_display_panel_parent_class)->constructor (gtype, n_properties, properties);
379 self = CC_DISPLAY_PANEL (obj);
380@@ -2661,6 +2948,18 @@
381 g_signal_connect_swapped (WID ("apply_button"),
382 "clicked", G_CALLBACK (apply), self);
383
384+ /* Unity settings */
385+ if (is_unity_session ())
386+ setup_unity_settings (self);
387+ else
388+ {
389+ gtk_widget_hide (WID ("unity_launcher_placement_sep"));
390+ gtk_widget_hide (WID ("launcher_placement_label"));
391+ gtk_widget_hide (WID ("sticky_edge_label"));
392+ gtk_widget_hide (WID ("launcher_placement_combo"));
393+ gtk_widget_hide (WID ("stickyedge_switch"));
394+ }
395+
396 gtk_widget_show (self->priv->panel);
397 gtk_container_add (GTK_CONTAINER (self), self->priv->panel);
398
399@@ -2675,4 +2974,3 @@
400 CC_TYPE_DISPLAY_PANEL,
401 "display", 0);
402 }
403-
404Index: gnome-control-center-3.4.2/panels/display/display-capplet.ui
405===================================================================
406--- gnome-control-center-3.4.2.orig/panels/display/display-capplet.ui 2012-03-05 15:04:55.000000000 +0100
407+++ gnome-control-center-3.4.2/panels/display/display-capplet.ui 2012-07-23 10:26:45.805976846 +0200
408@@ -1,6 +1,14 @@
409 <?xml version="1.0"?>
410 <interface>
411 <requires lib="gtk+" version="2.16"/>
412+ <object class="GtkListStore" id="available_launcher_placement_store">
413+ <columns>
414+ <!-- column-name MONITOR_PREVIEW -->
415+ <column type="GdkPixbuf"/>
416+ <!-- column-name LAUNCHER_PLACEMENT_NAME -->
417+ <column type="gchararray"/>
418+ </columns>
419+ </object>
420 <!-- interface-naming-policy toplevel-contextual -->
421 <object class="GtkWindow" id="window1">
422 <child>
423@@ -96,56 +104,89 @@
424 <child>
425 <object class="GtkTable" id="table1">
426 <property name="visible">True</property>
427- <property name="n_rows">3</property>
428+ <property name="n_rows">5</property>
429 <property name="n_columns">2</property>
430 <property name="column_spacing">12</property>
431 <property name="row_spacing">6</property>
432 <child>
433- <object class="GtkAlignment" id="alignment4">
434+ <object class="GtkLabel" id="label2">
435+ <property name="visible">True</property>
436+ <property name="xalign">1</property>
437+ <property name="label" translatable="yes">_Resolution</property>
438+ <property name="use_underline">True</property>
439+ <property name="mnemonic_widget">resolution_combo</property>
440+ <style>
441+ <class name="dim-label"/>
442+ </style>
443+ </object>
444+ <packing>
445+ <property name="x_options">GTK_FILL</property>
446+ <property name="y_options"></property>
447+ </packing>
448+ </child>
449+ <child>
450+ <object class="GtkLabel" id="label5">
451+ <property name="visible">True</property>
452+ <property name="xalign">1</property>
453+ <property name="label" translatable="yes">R_otation</property>
454+ <property name="mnemonic_widget">rotation_combo</property>
455+ <property name="use_underline">True</property>
456+ <style>
457+ <class name="dim-label"/>
458+ </style>
459+ </object>
460+ <packing>
461+ <property name="top_attach">1</property>
462+ <property name="bottom_attach">2</property>
463+ <property name="x_options">GTK_FILL</property>
464+ <property name="y_options"></property>
465+ </packing>
466+ </child>
467+ <child>
468+ <object class="GtkSeparator" id="unity_launcher_placement_sep">
469 <property name="visible">True</property>
470- <child>
471- <placeholder/>
472- </child>
473 </object>
474 <packing>
475- <property name="left_attach">1</property>
476- <property name="right_attach">2</property>
477 <property name="top_attach">2</property>
478 <property name="bottom_attach">3</property>
479- <property name="x_options"></property>
480+ <property name="left_attach">0</property>
481+ <property name="right_attach">2</property>
482+ <property name="x_options">GTK_FILL</property>
483 <property name="y_options"></property>
484 </packing>
485 </child>
486 <child>
487- <object class="GtkLabel" id="label2">
488+ <object class="GtkLabel" id="launcher_placement_label">
489 <property name="visible">True</property>
490 <property name="xalign">1</property>
491- <property name="label" translatable="yes">_Resolution</property>
492+ <property name="label" translatable="yes">L_auncher placement</property>
493+ <property name="mnemonic_widget">launcher_placement_combo</property>
494 <property name="use_underline">True</property>
495- <property name="mnemonic_widget">resolution_combo</property>
496 <style>
497 <class name="dim-label"/>
498 </style>
499 </object>
500 <packing>
501+ <property name="top_attach">3</property>
502+ <property name="bottom_attach">4</property>
503 <property name="x_options">GTK_FILL</property>
504 <property name="y_options"></property>
505 </packing>
506 </child>
507 <child>
508- <object class="GtkLabel" id="label5">
509+ <object class="GtkLabel" id="sticky_edge_label">
510 <property name="visible">True</property>
511 <property name="xalign">1</property>
512- <property name="label" translatable="yes">R_otation</property>
513- <property name="mnemonic_widget">rotation_combo</property>
514+ <property name="label" translatable="yes">S_ticky edges</property>
515+ <property name="mnemonic_widget">stickyedge_switch</property>
516 <property name="use_underline">True</property>
517 <style>
518 <class name="dim-label"/>
519 </style>
520 </object>
521 <packing>
522- <property name="top_attach">1</property>
523- <property name="bottom_attach">2</property>
524+ <property name="top_attach">4</property>
525+ <property name="bottom_attach">5</property>
526 <property name="x_options">GTK_FILL</property>
527 <property name="y_options"></property>
528 </packing>
529@@ -179,6 +220,63 @@
530 </packing>
531 </child>
532 <child>
533+ <object class="GtkComboBox" id="launcher_placement_combo">
534+ <property name="visible">True</property>
535+ <property name="can_focus">False</property>
536+ <property name="model">available_launcher_placement_store</property>
537+ <property name="id_column">1</property>
538+ <child>
539+ <object class="GtkCellRendererPixbuf" id="monitor_preview_renderer"/>
540+ <attributes>
541+ <attribute name="pixbuf">0</attribute>
542+ </attributes>
543+ </child>
544+ <child>
545+ <object class="GtkCellRendererText" id="launcher_placement_name_renderer"/>
546+ <attributes>
547+ <attribute name="text">1</attribute>
548+ </attributes>
549+ </child>
550+ </object>
551+ <packing>
552+ <property name="left_attach">1</property>
553+ <property name="right_attach">2</property>
554+ <property name="top_attach">3</property>
555+ <property name="bottom_attach">4</property>
556+ <property name="y_options"></property>
557+ </packing>
558+ </child>
559+ <child>
560+ <object class="GtkHBox" id="hbox4">
561+ <property name="visible">True</property>
562+ <property name="spacing">12</property>
563+ <child>
564+ <object class="GtkSwitch" id="stickyedge_switch">
565+ <property name="visible">True</property>
566+ <property name="can_focus">True</property>
567+ <property name="receives_default">False</property>
568+ <property name="active">True</property>
569+ </object>
570+ <packing>
571+ <property name="expand">False</property>
572+ <property name="fill">False</property>
573+ <property name="pack_type">end</property>
574+ <property name="position">1</property>
575+ </packing>
576+ </child>
577+ </object>
578+ <packing>
579+ <property name="left_attach">1</property>
580+ <property name="right_attach">2</property>
581+ <property name="top_attach">4</property>
582+ <property name="bottom_attach">5</property>
583+ <property name="y_options"></property>
584+ <property name="expand">False</property>
585+ <property name="fill">False</property>
586+ <property name="position">0</property>
587+ </packing>
588+ </child>
589+ <child>
590 <placeholder/>
591 </child>
592 </object>
5930
=== added file 'debian/patches/52_region_language.patch'
--- debian/patches/52_region_language.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/52_region_language.patch 2014-05-06 09:05:46 +0000
@@ -0,0 +1,586 @@
1Description: Adapts the region capplet and the language chooser in the user accounts capplet
2Forwarded: https://bugzilla.gnome.org/695939, https://bugzilla.gnome.org/695940
3Author: Gunnar Hjalmarsson <gunnarhj@ubuntu.com>
4Last-Update: 2013-03-21
5
6 Some background that explains the need for this patch:
7
8 * Ubuntu isn't shipped with all languages installed and all locales generated.
9 Instead the users install the needed language pack(s), and the corresponding
10 locales are generated.
11
12 * The code in accountsservice for handling languages has been extended via Ubuntu
13 specific patches. That code is shared by multiple packages. Currently those
14 packages are:
15 - gnome-control-center
16 - language-selector (Xubuntu and Lubuntu will keep using the language-selector
17 UI for now)
18 - lightdm (for the language chooser in lightdm-gtk-greeter)
19
20 With this patch applied, the g-c-c region capplet and the language chooser in the
21 user accounts capplet behave approximately the same way as language-selector. No
22 migration code needed when standard Ubuntu drops the language-selector UI.
23
24 Compared with how the region capplet in g-c-c works out of the box, this patch
25 results in:
26
27 * Languages are dealt with using 'll' and 'll_CC' language codes instead of
28 complete locale names.
29
30 * Selected language is stored in both LANGUAGE and LANG.
31
32 * Only one language list that shows the translations belonging to the installed
33 language packs (not a 'short' and a 'long' list).
34
35 * User level settings of language and regional formats are stored as
36 accountsservice properties and in ~/.pam_environment.
37
38 * All the formats related locale categories set, not just a subset.
39
40 The following changes now live in gnome-desktop3
41
42 * Translation @variants, e.g. ca@valencia, are displayed properly.
43
44 * Locales stored with codeset '.UTF-8' instead of '.utf8'.
45
46 * The 'common_name' field taken into account when parsing the iso-codes XML files
47 for language names.
48
49From 785b001bbc1d9cca74745ea6dfb75d60f3b5b7a9 Mon Sep 17 00:00:00 2001
50From: Tim Lunn <tim@feathertop.org>
51Date: Fri, 12 Apr 2013 08:55:40 +1000
52Subject: [PATCH] Ubuntu changes required for proper region support.
53
54---
55 panels/common/cc-common-language.c | 110 +++++++++++++++++++++++++++---
56 panels/common/cc-common-language.h | 3 +
57 panels/common/cc-language-chooser.c | 5 +-
58 panels/region/cc-format-chooser.c | 2 +
59 panels/region/cc-input-chooser.c | 4 +-
60 panels/region/cc-region-panel.c | 127 ++++++++++++++++++++++++++---------
61 panels/user-accounts/um-user-panel.c | 11 ++-
62 7 files changed, 216 insertions(+), 46 deletions(-)
63
64--- a/panels/common/cc-common-language.c
65+++ b/panels/common/cc-common-language.c
66@@ -321,6 +321,67 @@
67 return language;
68 }
69
70+gchar *
71+cc_common_language_get_property (const gchar *prop_name)
72+{
73+ GDBusConnection *bus;
74+ gchar *user_path;
75+ GError *error = NULL;
76+ GVariant *properties;
77+ GVariantIter *iter;
78+ gchar *key;
79+ GVariant *value;
80+ gchar *ret = NULL;
81+
82+ if (g_strcmp0 (prop_name, "Language") != 0 && g_strcmp0 (prop_name, "FormatsLocale") != 0) {
83+ g_warning ("Invalid argument: '%s'", prop_name);
84+ return ret;
85+ }
86+
87+ bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
88+ user_path = g_strdup_printf ("/org/freedesktop/Accounts/User%i", getuid ());
89+
90+ properties = g_dbus_connection_call_sync (bus,
91+ "org.freedesktop.Accounts",
92+ user_path,
93+ "org.freedesktop.DBus.Properties",
94+ "GetAll",
95+ g_variant_new ("(s)", "org.freedesktop.Accounts.User"),
96+ G_VARIANT_TYPE ("(a{sv})"),
97+ G_DBUS_CALL_FLAGS_NONE,
98+ -1,
99+ NULL,
100+ &error);
101+ if (!properties) {
102+ g_warning ("Error calling GetAll() when retrieving properties for %s: %s", user_path, error->message);
103+ g_error_free (error);
104+ /* g_hash_table_lookup() is not NULL-safe, so don't return NULL */
105+ if (g_strcmp0 (prop_name, "Language") == 0)
106+ ret = g_strdup ("en");
107+ else
108+ ret = g_strdup ("en_US.UTF-8");
109+ goto out;
110+ }
111+
112+ g_variant_get (properties, "(a{sv})", &iter);
113+ while (g_variant_iter_loop (iter, "{&sv}", &key, &value)) {
114+ if (g_strcmp0 (key, prop_name) == 0) {
115+ g_variant_get (value, "s", &ret);
116+ break;
117+ }
118+ }
119+
120+ g_variant_unref (properties);
121+ g_variant_iter_free (iter);
122+
123+out:
124+ g_object_unref (bus);
125+ g_free (user_path);
126+
127+ return ret;
128+}
129+
130+
131 typedef struct {
132 GtkListStore *store;
133 gboolean user_lang;
134@@ -428,7 +489,7 @@
135 char *lang;
136 gboolean found;
137
138- lang = cc_common_language_get_current_language ();
139+ lang = cc_common_language_get_property ("Language");
140 g_debug ("Trying to select lang '%s' in treeview", lang);
141 model = gtk_tree_view_get_model (treeview);
142 found = FALSE;
143@@ -513,6 +574,7 @@
144 return lang;
145 }
146
147+/*
148 static void
149 add_other_users_language (GHashTable *ht)
150 {
151@@ -573,6 +635,7 @@
152
153 g_object_unref (proxy);
154 }
155+*/
156
157 static void
158 insert_language (GHashTable *ht,
159@@ -596,10 +659,10 @@
160
161 g_debug ("We have translations for %s", lang);
162
163- if (g_str_has_suffix (lang, ".utf8"))
164+ if (g_str_has_suffix (lang, ".UTF-8"))
165 key = g_strdup (lang);
166 else
167- key = g_strdup_printf ("%s.utf8", lang);
168+ key = g_strdup_printf ("%s.UTF-8", lang);
169
170 label_own_lang = gnome_get_language_from_locale (key, key);
171 label_current_lang = gnome_get_language_from_locale (key, NULL);
172@@ -625,9 +688,18 @@
173 cc_common_language_get_initial_languages (void)
174 {
175 GHashTable *ht;
176+ gchar **langs;
177+ gint i;
178
179 ht = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
180
181+ langs = gnome_get_all_locales ();
182+ for (i = 0; langs[i]; i++) {
183+ char *language = strtok (langs[i], ".");
184+ insert_language (ht, language);
185+ }
186+ g_strfreev (langs);
187+/*
188 insert_language (ht, "en_US");
189 insert_language (ht, "en_GB");
190 insert_language (ht, "de_DE");
191@@ -637,7 +709,7 @@
192 insert_language (ht, "ja_JP");
193 insert_language (ht, "ru_RU");
194 insert_language (ht, "ar_EG");
195-
196+*/
197 return ht;
198 }
199
200@@ -651,10 +723,10 @@
201 ht = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
202
203 /* Add the languages used by other users on the system */
204- add_other_users_language (ht);
205+ // add_other_users_language (ht);
206
207 /* Add current locale */
208- name = cc_common_language_get_current_language ();
209+ name = cc_common_language_get_property ("Language");
210 if (g_hash_table_lookup (ht, name) == NULL) {
211 language = gnome_get_language_from_locale (name, NULL);
212 g_hash_table_insert (ht, name, language);
213@@ -703,6 +775,28 @@
214 return ht;
215 }
216
217+void
218+cc_common_language_get_locale (const gchar *language, gchar **locale){
219+ gchar *command;
220+ GError *error = NULL;
221+ /* Get locale that corresponds to the language */
222+ command = g_strconcat ("/usr/share/language-tools/language2locale ", language, NULL);
223+ if (!g_spawn_command_line_sync (command, locale, NULL, NULL, &error)) {
224+ g_warning ("Couldn't get LANG locale: %s", error->message);
225+ g_error_free (error);
226+ g_free (command);
227+
228+ return;
229+ }
230+
231+ g_free (command);
232+ g_strchomp (*locale);
233+ if (strlen (*locale) == 0) {
234+ g_warning ("Couldn't get LANG locale -- Copying interrupted");
235+ return;
236+ }
237+
238+}
239 static void
240 foreach_user_lang_cb (gpointer key,
241 gpointer value,
242@@ -734,7 +828,7 @@
243 user_langs = cc_common_language_get_initial_languages ();
244
245 /* Add the current locale first */
246- name = cc_common_language_get_current_language ();
247+ name = cc_common_language_get_property ("Language");
248 display = g_hash_table_lookup (user_langs, name);
249 if (!display) {
250 insert_language (user_langs, name);
251@@ -750,8 +844,8 @@
252 g_hash_table_foreach (user_langs, (GHFunc) foreach_user_lang_cb, store);
253
254 /* And now the "Other…" selection */
255- gtk_list_store_append (store, &iter);
256- gtk_list_store_set (store, &iter, LOCALE_COL, NULL, DISPLAY_LOCALE_COL, _("Other…"), -1);
257+ //gtk_list_store_append (store, &iter);
258+ //gtk_list_store_set (store, &iter, LOCALE_COL, NULL, DISPLAY_LOCALE_COL, _("Other…"), -1);
259
260 g_hash_table_destroy (user_langs);
261 }
262--- a/panels/common/cc-common-language.h
263+++ b/panels/common/cc-common-language.h
264@@ -45,6 +45,7 @@
265 GHashTable *user_langs);
266 gboolean cc_common_language_has_font (const gchar *locale);
267 gchar *cc_common_language_get_current_language (void);
268+gchar *cc_common_language_get_property (const gchar *prop_name);
269
270 GHashTable *cc_common_language_get_initial_languages (void);
271 GHashTable *cc_common_language_get_user_languages (void);
272@@ -57,6 +58,8 @@
273
274 void cc_common_language_add_user_languages (GtkTreeModel *model);
275
276+void cc_common_language_get_locale (const gchar *language, gchar **locale);
277+
278 G_END_DECLS
279
280 #endif
281--- a/panels/common/cc-language-chooser.c
282+++ b/panels/common/cc-language-chooser.c
283@@ -1,5 +1,4 @@
284-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
285- *
286+/*
287 * Copyright (C) 2013 Red Hat, Inc
288 *
289 * This program is free software; you can redistribute it and/or modify
290@@ -79,7 +78,9 @@
291 egg_list_box_refilter (EGG_LIST_BOX (priv->language_list));
292 }
293 } else {
294+
295 gtk_widget_set_opacity (check, 0.0);
296+
297 }
298 }
299 g_list_free (children);
300--- a/panels/region/cc-format-chooser.c
301+++ b/panels/region/cc-format-chooser.c
302@@ -170,7 +170,9 @@
303
304 } else {
305 /* mark as unselected */
306+
307 gtk_widget_set_opacity (check, 0.0);
308+
309 }
310 }
311 g_list_free (children);
312--- a/panels/region/cc-input-chooser.c
313+++ b/panels/region/cc-input-chooser.c
314@@ -909,7 +909,7 @@
315 lang_code != NULL &&
316 country_code != NULL)
317 {
318- gchar *locale = g_strdup_printf ("%s_%s.utf8", lang_code, country_code);
319+ gchar *locale = g_strdup_printf ("%s_%s.UTF-8", lang_code, country_code);
320
321 info = g_hash_table_lookup (priv->locales, locale);
322 if (info)
323@@ -1034,7 +1034,7 @@
324 if (!gnome_parse_locale (*locale, &lang_code, &country_code, NULL, NULL))
325 continue;
326
327- simple_locale = g_strdup_printf ("%s_%s.utf8", lang_code, country_code);
328+ simple_locale = g_strdup_printf ("%s_%s.UTF-8", lang_code, country_code);
329 if (g_hash_table_contains (priv->locales, simple_locale))
330 {
331 g_free (simple_locale);
332--- a/panels/region/cc-region-panel.c
333+++ b/panels/region/cc-region-panel.c
334@@ -404,14 +404,55 @@
335 }
336
337 static void
338+set_formats_locale (const gchar *formats_locale)
339+{
340+ GDBusProxy *proxy;
341+ GError *error = NULL;
342+ gchar *user_path;
343+ GVariant *ret;
344+
345+ user_path = g_strdup_printf ("/org/freedesktop/Accounts/User%i", getuid ());
346+ proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
347+ G_DBUS_PROXY_FLAGS_NONE,
348+ NULL,
349+ "org.freedesktop.Accounts",
350+ user_path,
351+ "org.freedesktop.Accounts.User",
352+ NULL,
353+ &error);
354+ if (!proxy) {
355+ g_warning ("Couldn't get accountsservice proxy for %s: %s", user_path, error->message);
356+ g_error_free (error);
357+ g_free (user_path);
358+ return;
359+ }
360+
361+ ret = g_dbus_proxy_call_sync (proxy,
362+ "SetFormatsLocale",
363+ g_variant_new ("(s)", formats_locale),
364+ G_DBUS_CALL_FLAGS_NONE,
365+ -1,
366+ NULL,
367+ &error);
368+ if (!ret) {
369+ g_warning ("Couldn't set FormatsLocale: %s", error->message);
370+ g_error_free (error);
371+ } else
372+ g_variant_unref (ret);
373+
374+ g_object_unref (proxy);
375+ g_free (user_path);
376+}
377+
378+static void
379 update_region (CcRegionPanel *self,
380 const gchar *region)
381 {
382- CcRegionPanelPrivate *priv = self->priv;
383+ CcRegionPanelPrivate *priv = self->priv;
384
385 if (g_strcmp0 (region, priv->region) == 0)
386 return;
387-
388+ set_formats_locale(region);
389 g_settings_set_string (priv->locale_settings, KEY_REGION, region);
390 maybe_notify (self, LC_TIME, region);
391 }
392@@ -545,7 +586,7 @@
393 CcRegionPanelPrivate *priv = self->priv;
394
395 g_free (priv->region);
396- priv->region = g_settings_get_string (priv->locale_settings, KEY_REGION);
397+ priv->region = cc_common_language_get_property ("FormatsLocale");
398 update_region_label (self);
399 }
400
401@@ -576,14 +617,16 @@
402 {
403 CcRegionPanelPrivate *priv = self->priv;
404 const gchar *language;
405-
406- if (act_user_is_loaded (priv->user))
407+ const gchar *locale;
408+ if (act_user_is_loaded (priv->user)){
409 language = act_user_get_language (priv->user);
410+ cc_common_language_get_locale (language, &locale);
411+ }
412 else
413- language = "en_US.utf-8";
414+ locale = "en_US.UTF-8";
415
416 g_free (priv->language);
417- priv->language = g_strdup (language);
418+ priv->language = g_strdup (locale);
419 update_language_label (self);
420 }
421
422@@ -1428,6 +1471,16 @@
423 update_buttons (self);
424 }
425
426+static gchar *
427+strip_quotes (const gchar *str)
428+{
429+ if ((g_str_has_prefix (str, "\"") && g_str_has_suffix (str, "\""))
430+ || (g_str_has_prefix (str, "'") && g_str_has_suffix (str, "'")))
431+ return g_strndup (str + 1, strlen (str) - 2);
432+ else
433+ return g_strdup (str);
434+}
435+
436 static void
437 on_localed_properties_changed (GDBusProxy *proxy,
438 GVariant *changed_properties,
439@@ -1442,34 +1495,49 @@
440 const gchar **strv;
441 gsize len;
442 gint i;
443- const gchar *lang, *messages, *time;
444+ gchar *lang, *language, *messages, *time;
445
446 strv = g_variant_get_strv (v, &len);
447
448- lang = messages = time = NULL;
449+ lang = language = messages = time = NULL;
450 for (i = 0; strv[i]; i++) {
451 if (g_str_has_prefix (strv[i], "LANG=")) {
452- lang = strv[i] + strlen ("LANG=");
453+ lang = strip_quotes (strv[i] + strlen ("LANG="));
454+ } else if (g_str_has_prefix (strv[i], "LANGUAGE=")) {
455+ gchar *tmp = strip_quotes (strv[i] + strlen ("LANGUAGE="));
456+ gchar **tokens = g_strsplit (tmp, ":", 2);
457+ language = g_strdup (tokens[0]);
458+ g_free (tmp);
459+ g_strfreev (tokens);
460 } else if (g_str_has_prefix (strv[i], "LC_MESSAGES=")) {
461- messages = strv[i] + strlen ("LC_MESSAGES=");
462+ messages = strip_quotes (strv[i] + strlen ("LC_MESSAGES="));
463 } else if (g_str_has_prefix (strv[i], "LC_TIME=")) {
464- time = strv[i] + strlen ("LC_TIME=");
465+ time = strip_quotes (strv[i] + strlen ("LC_TIME="));
466 }
467 }
468+ g_free (strv);
469+
470 if (!lang) {
471- lang = "";
472+ lang = g_strdup ("en_US.UTF-8");
473 }
474- if (!messages) {
475- messages = lang;
476+ if (!language) {
477+ if (messages)
478+ language = g_strdup (messages);
479+ else
480+ language = g_strdup (lang);
481 }
482 if (!time) {
483- time = lang;
484+ time = g_strdup (lang);
485 }
486 g_free (priv->system_language);
487- priv->system_language = g_strdup (messages);
488+ priv->system_language = g_strdup (language);
489 g_free (priv->system_region);
490 priv->system_region = g_strdup (time);
491 g_variant_unref (v);
492+ g_free (lang);
493+ g_free (language);
494+ g_free (messages);
495+ g_free (time);
496
497 update_language_label (self);
498 }
499@@ -1539,29 +1607,28 @@
500 CcRegionPanelPrivate *priv = self->priv;
501 GVariantBuilder *b;
502 gchar *s;
503+ gchar *lang;
504+ gint i;
505+
506+ cc_common_language_get_locale (priv->system_language, &lang);
507
508 b = g_variant_builder_new (G_VARIANT_TYPE ("as"));
509- s = g_strconcat ("LANG=", priv->system_language, NULL);
510+ s = g_strconcat ("LANG=", lang, NULL);
511 g_variant_builder_add (b, "s", s);
512 g_free (s);
513
514- if (g_strcmp0 (priv->system_language, priv->system_region) != 0) {
515- s = g_strconcat ("LC_TIME=", priv->system_region, NULL);
516- g_variant_builder_add (b, "s", s);
517- g_free (s);
518- s = g_strconcat ("LC_NUMERIC=", priv->system_region, NULL);
519- g_variant_builder_add (b, "s", s);
520- g_free (s);
521- s = g_strconcat ("LC_MONETARY=", priv->system_region, NULL);
522- g_variant_builder_add (b, "s", s);
523- g_free (s);
524- s = g_strconcat ("LC_MEASUREMENT=", priv->system_region, NULL);
525- g_variant_builder_add (b, "s", s);
526- g_free (s);
527- s = g_strconcat ("LC_PAPER=", priv->system_region, NULL);
528+ s = g_strconcat ("LANGUAGE=", priv->system_language, NULL);
529+ g_variant_builder_add (b, "s", s);
530+ g_free (s);
531+ const gchar *format_categories[] = { "LC_NUMERIC", "LC_TIME",
532+ "LC_MONETARY", "LC_PAPER", "LC_IDENTIFICATION", "LC_NAME",
533+ "LC_ADDRESS", "LC_TELEPHONE", "LC_MEASUREMENT", NULL };
534+ for (i = 0; format_categories[i] != NULL; i++) {
535+ s = g_strconcat (format_categories[i], "=", priv->system_region, NULL);
536 g_variant_builder_add (b, "s", s);
537 g_free (s);
538 }
539+
540 g_dbus_proxy_call (priv->localed,
541 "SetLocale",
542 g_variant_new ("(asb)", b, TRUE),
543--- a/panels/user-accounts/um-user-panel.c
544+++ b/panels/user-accounts/um-user-panel.c
545@@ -697,8 +697,9 @@
546 cc_common_language_add_user_languages (model);
547
548 lang = g_strdup (act_user_get_language (user));
549+ cc_common_language_get_locale (lang, &lang);
550 if (!lang)
551- lang = cc_common_language_get_current_language ();
552+ lang = cc_common_language_get_property ("Language");
553 if (cc_common_language_get_iter_for_language (model, lang, &iter))
554 um_editable_combo_set_active_iter (UM_EDITABLE_COMBO (widget), &iter);
555 g_free (lang);
556@@ -824,8 +825,9 @@
557 }
558 else {
559 lang = g_strdup (act_user_get_language (user));
560+ cc_common_language_get_locale (lang, &lang);
561 if (!lang) {
562- lang = cc_common_language_get_current_language ();
563+ lang = cc_common_language_get_property ("Language");
564 }
565 }
566 cc_common_language_get_iter_for_language (model, lang, &iter);
567@@ -845,6 +847,7 @@
568 GtkTreeModel *model;
569 GtkTreeIter iter;
570 gchar *lang;
571+ gchar *locale;
572 ActUser *user;
573
574 if (!um_editable_combo_get_active_iter (combo, &iter))
575@@ -855,8 +858,10 @@
576 model = um_editable_combo_get_model (combo);
577
578 gtk_tree_model_get (model, &iter, 0, &lang, -1);
579+ cc_common_language_get_locale(act_user_get_language (user),&locale);
580+
581 if (lang) {
582- if (g_strcmp0 (lang, act_user_get_language (user)) != 0) {
583+ if (g_strcmp0 (lang, locale) != 0) {
584 act_user_set_language (user, lang);
585 }
586 g_free (lang);
0587
=== removed file 'debian/patches/52_region_language.patch'
--- debian/patches/52_region_language.patch 2013-07-05 22:08:12 +0000
+++ debian/patches/52_region_language.patch 1970-01-01 00:00:00 +0000
@@ -1,652 +0,0 @@
1Description: Adapts the region capplet and the language chooser in the user accounts capplet
2Forwarded: https://bugzilla.gnome.org/695939, https://bugzilla.gnome.org/695940
3Author: Gunnar Hjalmarsson <gunnarhj@ubuntu.com>
4Last-Update: 2013-03-21
5
6 Some background that explains the need for this patch:
7
8 * Ubuntu isn't shipped with all languages installed and all locales generated.
9 Instead the users install the needed language pack(s), and the corresponding
10 locales are generated.
11
12 * The code in accountsservice for handling languages has been extended via Ubuntu
13 specific patches. That code is shared by multiple packages. Currently those
14 packages are:
15 - gnome-control-center
16 - language-selector (Xubuntu and Lubuntu will keep using the language-selector
17 UI for now)
18 - lightdm (for the language chooser in lightdm-gtk-greeter)
19
20 With this patch applied, the g-c-c region capplet and the language chooser in the
21 user accounts capplet behave approximately the same way as language-selector. No
22 migration code needed when standard Ubuntu drops the language-selector UI.
23
24 Compared with how the region capplet in g-c-c works out of the box, this patch
25 results in:
26
27 * Languages are dealt with using 'll' and 'll_CC' language codes instead of
28 complete locale names.
29
30 * Selected language is stored in both LANGUAGE and LANG.
31
32 * Only one language list that shows the translations belonging to the installed
33 language packs (not a 'short' and a 'long' list).
34
35 * User level settings of language and regional formats are stored as
36 accountsservice properties and in ~/.pam_environment.
37
38 * All the formats related locale categories set, not just a subset.
39
40 * Translation @variants, e.g. ca@valencia, are displayed properly.
41
42 * Locales stored with codeset '.UTF-8' instead of '.utf8'.
43
44 * The 'common_name' field taken into account when parsing the iso-codes XML files
45 for language names.
46
47Index: gnome-control-center-3.6.3/panels/common/cc-common-language.c
48===================================================================
49--- gnome-control-center-3.6.3.orig/panels/common/cc-common-language.c 2013-03-15 17:20:48.939849976 +0100
50+++ gnome-control-center-3.6.3/panels/common/cc-common-language.c 2013-03-21 14:22:09.358586554 +0100
51@@ -326,6 +326,66 @@
52 return language;
53 }
54
55+gchar *
56+cc_common_language_get_property (const gchar *prop_name)
57+{
58+ GDBusConnection *bus;
59+ gchar *user_path;
60+ GError *error = NULL;
61+ GVariant *properties;
62+ GVariantIter *iter;
63+ gchar *key;
64+ GVariant *value;
65+ gchar *ret = NULL;
66+
67+ if (g_strcmp0 (prop_name, "Language") != 0 && g_strcmp0 (prop_name, "FormatsLocale") != 0) {
68+ g_warning ("Invalid argument: '%s'", prop_name);
69+ return ret;
70+ }
71+
72+ bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
73+ user_path = g_strdup_printf ("/org/freedesktop/Accounts/User%i", getuid ());
74+
75+ properties = g_dbus_connection_call_sync (bus,
76+ "org.freedesktop.Accounts",
77+ user_path,
78+ "org.freedesktop.DBus.Properties",
79+ "GetAll",
80+ g_variant_new ("(s)", "org.freedesktop.Accounts.User"),
81+ G_VARIANT_TYPE ("(a{sv})"),
82+ G_DBUS_CALL_FLAGS_NONE,
83+ -1,
84+ NULL,
85+ &error);
86+ if (!properties) {
87+ g_warning ("Error calling GetAll() when retrieving properties for %s: %s", user_path, error->message);
88+ g_error_free (error);
89+ /* g_hash_table_lookup() is not NULL-safe, so don't return NULL */
90+ if (g_strcmp0 (prop_name, "Language") == 0)
91+ ret = g_strdup ("en");
92+ else
93+ ret = g_strdup ("en_US.UTF-8");
94+ goto out;
95+ }
96+
97+ g_variant_get (properties, "(a{sv})", &iter);
98+ while (g_variant_iter_loop (iter, "{&sv}", &key, &value)) {
99+ if (g_strcmp0 (key, prop_name) == 0) {
100+ g_variant_get (value, "s", &ret);
101+ break;
102+ }
103+ }
104+
105+ g_variant_unref (properties);
106+ g_variant_iter_free (iter);
107+
108+out:
109+ g_object_unref (bus);
110+ g_free (user_path);
111+
112+ return ret;
113+}
114+
115 static void
116 languages_foreach_cb (gpointer key,
117 gpointer value,
118@@ -407,7 +467,7 @@
119 char *lang;
120 gboolean found;
121
122- lang = cc_common_language_get_current_language ();
123+ lang = cc_common_language_get_property ("Language");
124 g_debug ("Trying to select lang '%s' in treeview", lang);
125 model = gtk_tree_view_get_model (treeview);
126 found = FALSE;
127@@ -440,6 +500,7 @@
128 g_warning ("Could not find current language '%s' in the treeview", lang);
129 }
130
131+/*
132 static void
133 add_other_users_language (GHashTable *ht)
134 {
135@@ -519,6 +580,7 @@
136
137 g_object_unref (proxy);
138 }
139+*/
140
141 GHashTable *
142 cc_common_language_get_initial_languages (void)
143@@ -530,6 +592,7 @@
144 ht = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
145
146 /* Add some common languages first */
147+/*
148 g_hash_table_insert (ht, g_strdup ("en_US.utf8"), g_strdup (_("English")));
149 if (gdm_language_has_translations ("en_GB"))
150 g_hash_table_insert (ht, g_strdup ("en_GB.utf8"), g_strdup (_("British English")));
151@@ -550,12 +613,29 @@
152 if (gdm_language_has_translations ("ar") ||
153 gdm_language_has_translations ("ar_EG"))
154 g_hash_table_insert (ht, g_strdup ("ar_EG.utf8"), g_strdup (_("Arabic")));
155-
156+*/
157 /* Add the languages used by other users on the system */
158- add_other_users_language (ht);
159+// add_other_users_language (ht);
160+
161+ /* Add installed languages */
162+ gchar *avail_languages;
163+ GError *error = NULL;
164+ if (g_spawn_command_line_sync ("/usr/share/language-tools/language-options",
165+ &avail_languages, NULL, NULL, &error)) {
166+ name = strtok (avail_languages, "\n");
167+ while (name != NULL) {
168+ language = gdm_get_language_from_name (name, NULL);
169+ g_hash_table_insert (ht, g_strdup (name), language);
170+ name = strtok (NULL, "\n");
171+ }
172+ g_free (avail_languages);
173+ } else {
174+ g_warning ("Couldn't get available languages: %s", error->message);
175+ g_error_free (error);
176+ }
177
178- /* Add current locale */
179- name = cc_common_language_get_current_language ();
180+ /* Add current language */
181+ name = cc_common_language_get_property ("Language");
182 if (g_hash_table_lookup (ht, name) == NULL) {
183 language = gdm_get_language_from_name (name, NULL);
184 g_hash_table_insert (ht, name, language);
185Index: gnome-control-center-3.6.3/panels/common/cc-common-language.h
186===================================================================
187--- gnome-control-center-3.6.3.orig/panels/common/cc-common-language.h 2013-03-15 17:20:48.939849976 +0100
188+++ gnome-control-center-3.6.3/panels/common/cc-common-language.h 2013-03-15 17:20:48.903849975 +0100
189@@ -45,6 +45,7 @@
190 GHashTable *user_langs);
191 gboolean cc_common_language_has_font (const gchar *locale);
192 gchar *cc_common_language_get_current_language (void);
193+gchar *cc_common_language_get_property (const gchar *prop_name);
194
195 GHashTable *cc_common_language_get_initial_languages (void);
196 GHashTable *cc_common_language_get_initial_regions (const gchar *lang);
197Index: gnome-control-center-3.6.3/panels/common/cc-language-chooser.c
198===================================================================
199--- gnome-control-center-3.6.3.orig/panels/common/cc-language-chooser.c 2013-03-15 17:20:48.939849976 +0100
200+++ gnome-control-center-3.6.3/panels/common/cc-language-chooser.c 2013-03-15 17:20:48.919849976 +0100
201@@ -105,8 +105,8 @@
202
203 user_langs = cc_common_language_get_initial_languages ();
204
205- /* Add the current locale first */
206- name = cc_common_language_get_current_language ();
207+ /* Add the current language first */
208+ name = cc_common_language_get_property ("Language");
209 display = g_hash_table_lookup (user_langs, name);
210
211 gtk_list_store_append (store, &iter);
212@@ -118,8 +118,8 @@
213 g_hash_table_foreach (user_langs, (GHFunc) languages_foreach_cb, store);
214
215 /* And now the "Other..." selection */
216- gtk_list_store_append (store, &iter);
217- gtk_list_store_set (store, &iter, LOCALE_COL, NULL, DISPLAY_LOCALE_COL, _("Other..."), -1);
218+// gtk_list_store_append (store, &iter);
219+// gtk_list_store_set (store, &iter, LOCALE_COL, NULL, DISPLAY_LOCALE_COL, _("Other..."), -1);
220
221 g_hash_table_destroy (user_langs);
222 }
223Index: gnome-control-center-3.6.3/panels/common/gdm-languages.c
224===================================================================
225--- gnome-control-center-3.6.3.orig/panels/common/gdm-languages.c 2013-03-15 17:20:48.939849976 +0100
226+++ gnome-control-center-3.6.3/panels/common/gdm-languages.c 2013-03-15 17:20:48.923849976 +0100
227@@ -224,6 +224,7 @@
228 const char *codeset,
229 const char *modifier)
230 {
231+ const char *adj_codeset;
232 char *name;
233
234 g_assert (language[0] != 0);
235@@ -231,12 +232,17 @@
236 g_assert (codeset == NULL || codeset[0] != 0);
237 g_assert (modifier == NULL || modifier[0] != 0);
238
239+ if (g_strcmp0 (codeset, "utf8") == 0) {
240+ adj_codeset = "UTF-8";
241+ } else
242+ adj_codeset = codeset;
243+
244 name = g_strdup_printf ("%s%s%s%s%s%s%s",
245 language,
246 territory != NULL? "_" : "",
247 territory != NULL? territory : "",
248 codeset != NULL? "." : "",
249- codeset != NULL? codeset : "",
250+ codeset != NULL? adj_codeset : "",
251 modifier != NULL? "@" : "",
252 modifier != NULL? modifier : "");
253
254@@ -854,6 +860,7 @@
255 const char *ccode_longT;
256 const char *ccode;
257 const char *ccode_id;
258+ const char *lang_common_name;
259 const char *lang_name;
260
261 if (! (g_str_equal (element_name, "iso_639_entry") || g_str_equal (element_name, "iso_639_3_entry"))
262@@ -865,6 +872,7 @@
263 ccode_longB = NULL;
264 ccode_longT = NULL;
265 ccode_id = NULL;
266+ lang_common_name = NULL;
267 lang_name = NULL;
268
269 while (*attr_names && *attr_values) {
270@@ -901,6 +909,11 @@
271 }
272 ccode_id = *attr_values;
273 }
274+ } else if (g_str_equal (*attr_names, "common_name")) {
275+ /* skip if empty */
276+ if (**attr_values) {
277+ lang_common_name = *attr_values;
278+ }
279 } else if (g_str_equal (*attr_names, "name")) {
280 lang_name = *attr_values;
281 }
282@@ -909,6 +922,10 @@
283 ++attr_values;
284 }
285
286+ if (lang_common_name != NULL) {
287+ lang_name = lang_common_name;
288+ }
289+
290 if (lang_name == NULL) {
291 return;
292 }
293@@ -1131,6 +1148,7 @@
294 char *langinfo_codeset;
295 char *translated_language;
296 char *translated_territory;
297+ char *modifier;
298 gboolean is_utf8 = TRUE;
299
300 g_return_val_if_fail (name != NULL, NULL);
301@@ -1153,12 +1171,13 @@
302 language_code = NULL;
303 territory_code = NULL;
304 codeset_code = NULL;
305+ modifier = NULL;
306
307 gdm_parse_language_name (name,
308 &language_code,
309 &territory_code,
310 &codeset_code,
311- NULL);
312+ &modifier);
313
314 if (language_code == NULL) {
315 goto out;
316@@ -1184,7 +1203,7 @@
317 translated_territory);
318 }
319
320- language_name_get_codeset_details (name, &langinfo_codeset, &is_utf8);
321+// language_name_get_codeset_details (name, &langinfo_codeset, &is_utf8);
322
323 if (codeset_code == NULL && langinfo_codeset != NULL) {
324 codeset_code = g_strdup (langinfo_codeset);
325@@ -1196,6 +1215,10 @@
326 codeset_code);
327 }
328
329+ if (modifier != NULL) {
330+ g_string_append_printf (full_language, " - %s", modifier);
331+ }
332+
333 out:
334 g_free (language_code);
335 g_free (territory_code);
336@@ -1203,6 +1226,7 @@
337 g_free (langinfo_codeset);
338 g_free (translated_language);
339 g_free (translated_territory);
340+ g_free (modifier);
341
342 if (full_language->len == 0) {
343 g_string_free (full_language, TRUE);
344Index: gnome-control-center-3.6.3/panels/region/gnome-region-panel-formats.c
345===================================================================
346--- gnome-control-center-3.6.3.orig/panels/region/gnome-region-panel-formats.c 2013-03-15 17:20:48.939849976 +0100
347+++ gnome-control-center-3.6.3/panels/region/gnome-region-panel-formats.c 2013-03-15 17:20:48.927849976 +0100
348@@ -31,6 +31,7 @@
349 #include "cc-language-chooser.h"
350 #include "gdm-languages.h"
351 #include "gnome-region-panel-formats.h"
352+#include "gnome-region-panel-system.h"
353
354 static void
355 display_date (GtkLabel *label, GDateTime *dt, const gchar *format)
356@@ -149,6 +150,46 @@
357 g_free (active_id);
358 }
359
360+static void
361+set_formats_locale (const gchar *formats_locale)
362+{
363+ GDBusProxy *proxy;
364+ GError *error = NULL;
365+ gchar *user_path;
366+ GVariant *ret;
367+
368+ user_path = g_strdup_printf ("/org/freedesktop/Accounts/User%i", getuid ());
369+ proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
370+ G_DBUS_PROXY_FLAGS_NONE,
371+ NULL,
372+ "org.freedesktop.Accounts",
373+ user_path,
374+ "org.freedesktop.Accounts.User",
375+ NULL,
376+ &error);
377+ if (!proxy) {
378+ g_warning ("Couldn't get accountsservice proxy for %s: %s", user_path, error->message);
379+ g_error_free (error);
380+ g_free (user_path);
381+ return;
382+ }
383+
384+ ret = g_dbus_proxy_call_sync (proxy,
385+ "SetFormatsLocale",
386+ g_variant_new ("(s)", formats_locale),
387+ G_DBUS_CALL_FLAGS_NONE,
388+ -1,
389+ NULL,
390+ &error);
391+ if (!ret) {
392+ g_warning ("Couldn't set FormatsLocale: %s", error->message);
393+ g_error_free (error);
394+ } else
395+ g_variant_unref (ret);
396+
397+ g_object_unref (proxy);
398+ g_free (user_path);
399+}
400
401 static void
402 update_settings_cb (GtkTreeSelection *selection, gpointer user_data)
403@@ -159,7 +200,6 @@
404 gchar *active_id;
405 GtkWidget *treeview;
406 GSettings *locale_settings;
407- gchar *current_setting;
408
409 if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
410 return;
411@@ -169,13 +209,10 @@
412 treeview = GTK_WIDGET (gtk_builder_get_object (builder, "region_selector"));
413
414 locale_settings = g_object_get_data (G_OBJECT (treeview), "settings");
415- current_setting = g_settings_get_string (locale_settings, "region");
416
417- if (g_strcmp0 (active_id, current_setting) != 0) {
418- g_settings_set_string (locale_settings, "region", active_id);
419- }
420+ set_formats_locale (active_id);
421+ locale_settings_changed (locale_settings, NULL, builder);
422
423- g_free (current_setting);
424 g_free (active_id);
425 }
426
427@@ -184,7 +221,7 @@
428 {
429 gchar *current_setting;
430
431- current_setting = g_settings_get_string (locale_settings, "region");
432+ current_setting = cc_common_language_get_property ("FormatsLocale");
433 select_region (treeview, current_setting);
434 g_free (current_setting);
435 }
436@@ -213,7 +250,6 @@
437 populate_regions (GtkBuilder *builder, const gchar *current_lang)
438 {
439 gchar *current_region;
440- GSettings *locale_settings;
441 GHashTable *ht;
442 GHashTableIter htiter;
443 GtkTreeModel *model;
444@@ -228,11 +264,10 @@
445 g_signal_handlers_block_by_func (selection, update_settings_cb, builder);
446
447 model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
448- locale_settings = g_object_get_data (G_OBJECT (treeview), "settings");
449
450 ht = cc_common_language_get_initial_regions (current_lang);
451
452- current_region = g_settings_get_string (locale_settings, "region");
453+ current_region = cc_common_language_get_property ("FormatsLocale");
454 if (!current_region || !current_region[0]) {
455 current_region = g_strdup (current_lang);
456 }
457Index: gnome-control-center-3.6.3/panels/region/gnome-region-panel-system.c
458===================================================================
459--- gnome-control-center-3.6.3.orig/panels/region/gnome-region-panel-system.c 2013-03-15 17:20:48.939849976 +0100
460+++ gnome-control-center-3.6.3/panels/region/gnome-region-panel-system.c 2013-03-15 17:48:09.379904608 +0100
461@@ -88,7 +88,7 @@
462 gtk_widget_set_sensitive (button, TRUE);
463 }
464
465-static void
466+void
467 locale_settings_changed (GSettings *settings,
468 const gchar *key,
469 GtkBuilder *dialog)
470@@ -96,7 +96,7 @@
471 GtkWidget *label;
472 gchar *region, *display_region;
473
474- region = g_settings_get_string (locale_settings, "region");
475+ region = cc_common_language_get_property ("FormatsLocale");
476 if (!region || !region[0]) {
477 label = WID ("user_display_language");
478 region = g_strdup ((gchar*)g_object_get_data (G_OBJECT (label), "language"));
479@@ -216,6 +216,16 @@
480 }
481 }
482
483+static gchar *
484+strip_quotes (const gchar *str)
485+{
486+ if ((g_str_has_prefix (str, "\"") && g_str_has_suffix (str, "\""))
487+ || (g_str_has_prefix (str, "'") && g_str_has_suffix (str, "'")))
488+ return g_strndup (str + 1, strlen (str) - 2);
489+ else
490+ return g_strdup (str);
491+}
492+
493 static void
494 on_localed_properties_changed (GDBusProxy *proxy,
495 GVariant *changed_properties,
496@@ -244,33 +254,43 @@
497 const gchar **strv;
498 gsize len;
499 gint i;
500- const gchar *lang, *messages, *time;
501+ gchar *lang, *language, *messages, *time;
502 gchar *name;
503 GtkWidget *label;
504
505 strv = g_variant_get_strv (v, &len);
506
507- lang = messages = time = NULL;
508+ lang = language = messages = time = NULL;
509 for (i = 0; strv[i]; i++) {
510 if (g_str_has_prefix (strv[i], "LANG=")) {
511- lang = strv[i] + strlen ("LANG=");
512+ lang = strip_quotes (strv[i] + strlen ("LANG="));
513+ }
514+ else if (g_str_has_prefix (strv[i], "LANGUAGE=")) {
515+ gchar *tmp = strip_quotes (strv[i] + strlen ("LANGUAGE="));
516+ gchar **tokens = g_strsplit (tmp, ":", 2);
517+ language = g_strdup (tokens[0]);
518+ g_free (tmp);
519+ g_strfreev (tokens);
520 }
521 else if (g_str_has_prefix (strv[i], "LC_MESSAGES=")) {
522- messages = strv[i] + strlen ("LC_MESSAGES=");
523+ messages = strip_quotes (strv[i] + strlen ("LC_MESSAGES="));
524 }
525 else if (g_str_has_prefix (strv[i], "LC_TIME=")) {
526- time = strv[i] + strlen ("LC_TIME=");
527+ time = strip_quotes (strv[i] + strlen ("LC_TIME="));
528 }
529 }
530- if (!messages) {
531- messages = lang;
532+ if (!language) {
533+ if (messages)
534+ language = g_strdup (messages);
535+ else
536+ language = g_strdup (lang);
537 }
538 if (!time) {
539- time = lang;
540+ time = g_strdup (lang);
541 }
542
543- if (messages) {
544- name = gdm_get_language_from_name (messages, NULL);
545+ if (language) {
546+ name = gdm_get_language_from_name (language, NULL);
547 label = WID ("system_display_language");
548 gtk_label_set_text (GTK_LABEL (label), name);
549 g_free (name);
550@@ -285,6 +305,10 @@
551 g_object_set_data_full (G_OBJECT (label), "region", g_strdup (time), g_free);
552 }
553 g_variant_unref (v);
554+ g_free (lang);
555+ g_free (language);
556+ g_free (messages);
557+ g_free (time);
558 }
559
560 label = WID ("system_input_source");
561@@ -350,27 +374,44 @@
562 GtkWidget *label;
563 GVariantBuilder *b;
564 gchar *s;
565+ gchar *command;
566+ gchar *lang;
567+ GError *error = NULL;
568+ gint i;
569
570 label = WID ("user_display_language");
571 language = g_object_get_data (G_OBJECT (label), "language");
572 label = WID ("user_format");
573 region = g_object_get_data (G_OBJECT (label), "region");
574
575+ /* Get locale that corresponds to the language */
576+ command = g_strconcat ("/usr/share/language-tools/language2locale ", language, NULL);
577+ if (!g_spawn_command_line_sync (command, &lang, NULL, NULL, &error)) {
578+ g_warning ("Couldn't get LANG locale: %s", error->message);
579+ g_error_free (error);
580+ g_free (command);
581+ return;
582+ }
583+ g_free (command);
584+ g_strchomp (lang);
585+ if (strlen (lang) == 0) {
586+ g_warning ("Couldn't get LANG locale -- Copying interrupted");
587+ return;
588+ }
589+
590 b = g_variant_builder_new (G_VARIANT_TYPE ("as"));
591- s = g_strconcat ("LANG=", language, NULL);
592+ s = g_strconcat ("LANG=", lang, NULL);
593 g_variant_builder_add (b, "s", s);
594+ g_free (lang);
595 g_free (s);
596- if (g_strcmp0 (language, region) != 0) {
597- s = g_strconcat ("LC_TIME=", region, NULL);
598- g_variant_builder_add (b, "s", s);
599- g_free (s);
600- s = g_strconcat ("LC_NUMERIC=", region, NULL);
601- g_variant_builder_add (b, "s", s);
602- g_free (s);
603- s = g_strconcat ("LC_MONETARY=", region, NULL);
604- g_variant_builder_add (b, "s", s);
605- g_free (s);
606- s = g_strconcat ("LC_MEASUREMENT=", region, NULL);
607+ s = g_strconcat ("LANGUAGE=", language, NULL);
608+ g_variant_builder_add (b, "s", s);
609+ g_free (s);
610+ const gchar *format_categories[] = { "LC_NUMERIC", "LC_TIME",
611+ "LC_MONETARY", "LC_PAPER", "LC_IDENTIFICATION", "LC_NAME",
612+ "LC_ADDRESS", "LC_TELEPHONE", "LC_MEASUREMENT", NULL };
613+ for (i = 0; format_categories[i] != NULL; i++) {
614+ s = g_strconcat (format_categories[i], "=", region, NULL);
615 g_variant_builder_add (b, "s", s);
616 g_free (s);
617 }
618@@ -525,7 +566,7 @@
619 g_object_weak_ref (G_OBJECT (dialog), (GWeakNotify) g_object_unref, input_sources_settings);
620
621 /* Display user settings */
622- language = cc_common_language_get_current_language ();
623+ language = cc_common_language_get_property ("Language");
624 system_update_language (dialog, language);
625 g_free (language);
626
627Index: gnome-control-center-3.6.3/panels/region/gnome-region-panel-system.h
628===================================================================
629--- gnome-control-center-3.6.3.orig/panels/region/gnome-region-panel-system.h 2013-03-15 17:20:48.939849976 +0100
630+++ gnome-control-center-3.6.3/panels/region/gnome-region-panel-system.h 2013-03-15 17:20:48.927849976 +0100
631@@ -27,5 +27,8 @@
632 void setup_system (GtkBuilder *builder);
633 void system_update_language (GtkBuilder *builder,
634 const gchar *language);
635+void locale_settings_changed (GSettings *settings,
636+ const gchar *key,
637+ GtkBuilder *dialog);
638
639 #endif
640Index: gnome-control-center-3.6.3/panels/region/gnome-region-panel.ui
641===================================================================
642--- gnome-control-center-3.6.3.orig/panels/region/gnome-region-panel.ui 2013-03-15 17:20:48.939849976 +0100
643+++ gnome-control-center-3.6.3/panels/region/gnome-region-panel.ui 2013-03-15 17:20:48.931849976 +0100
644@@ -192,7 +192,7 @@
645 </child>
646 <child>
647 <object class="GtkToolbar" id="language-toolbar">
648- <property name="visible">True</property>
649+ <property name="visible">False</property>
650 <property name="can_focus">False</property>
651 <property name="toolbar_style">icons</property>
652 <property name="show_arrow">False</property>
6530
=== removed file 'debian/patches/53_use_ubuntu_help.patch'
--- debian/patches/53_use_ubuntu_help.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/53_use_ubuntu_help.patch 1970-01-01 00:00:00 +0000
@@ -1,282 +0,0 @@
1Description: Use pre-installed Ubuntu Desktop Guide instead of GNOME help when
2 running Unity
3Forwarded: not-needed
4Author: Jeremy Bicha <jbicha@ubuntu.com>
5Index: gnome-control-center-3.6.2/panels/bluetooth/cc-bluetooth-panel.c
6===================================================================
7--- gnome-control-center-3.6.2.orig/panels/bluetooth/cc-bluetooth-panel.c 2012-11-02 19:29:55.031315523 -0400
8+++ gnome-control-center-3.6.2/panels/bluetooth/cc-bluetooth-panel.c 2012-11-02 19:29:57.639315414 -0400
9@@ -72,7 +72,10 @@
10 static const char *
11 cc_bluetooth_panel_get_help_uri (CcPanel *panel)
12 {
13- return "help:gnome-help/bluetooth";
14+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
15+ return "help:ubuntu-help/bluetooth";
16+ else
17+ return "help:gnome-help/bluetooth";
18 }
19
20 static void
21Index: gnome-control-center-3.6.2/panels/color/cc-color-panel.c
22===================================================================
23--- gnome-control-center-3.6.2.orig/panels/color/cc-color-panel.c 2012-11-02 19:29:55.031315523 -0400
24+++ gnome-control-center-3.6.2/panels/color/cc-color-panel.c 2012-11-02 19:30:52.679313112 -0400
25@@ -2285,7 +2285,10 @@
26 static const char *
27 cc_color_panel_get_help_uri (CcPanel *panel)
28 {
29- return "help:gnome-help/color";
30+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
31+ return "help:ubuntu-help/color";
32+ else
33+ return "help:gnome-help/color";
34 }
35
36 static void
37@@ -2567,6 +2570,12 @@
38 g_signal_connect (widget, "realize",
39 G_CALLBACK (gcm_prefs_window_realize_cb),
40 prefs);
41+
42+ widget = WID (priv->builder, "linkbutton_help");
43+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
44+ g_object_set (G_OBJECT (widget),
45+ "uri", "help:ubuntu-help/color-whyimportant",
46+ NULL);
47 }
48
49 void
50Index: gnome-control-center-3.6.2/panels/datetime/cc-datetime-panel.c
51===================================================================
52--- gnome-control-center-3.6.2.orig/panels/datetime/cc-datetime-panel.c 2012-11-02 19:29:55.031315523 -0400
53+++ gnome-control-center-3.6.2/panels/datetime/cc-datetime-panel.c 2012-11-02 19:29:57.639315414 -0400
54@@ -178,7 +178,10 @@
55 static const char *
56 cc_date_time_panel_get_help_uri (CcPanel *panel)
57 {
58- return "help:gnome-help/clock";
59+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
60+ return "help:ubuntu-help/clock";
61+ else
62+ return "help:gnome-help/clock";
63 }
64
65 static void
66Index: gnome-control-center-3.6.2/panels/display/cc-display-panel.c
67===================================================================
68--- gnome-control-center-3.6.2.orig/panels/display/cc-display-panel.c 2012-11-02 19:29:55.031315523 -0400
69+++ gnome-control-center-3.6.2/panels/display/cc-display-panel.c 2012-11-02 19:29:57.643315414 -0400
70@@ -205,7 +205,10 @@
71 static const char *
72 cc_display_panel_get_help_uri (CcPanel *panel)
73 {
74- return "help:gnome-help/prefs-display";
75+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
76+ return "help:ubuntu-help/prefs-display";
77+ else
78+ return "help:gnome-help/prefs-display";
79 }
80
81 static void
82Index: gnome-control-center-3.6.2/panels/mouse/cc-mouse-panel.c
83===================================================================
84--- gnome-control-center-3.6.2.orig/panels/mouse/cc-mouse-panel.c 2012-11-02 19:29:55.031315523 -0400
85+++ gnome-control-center-3.6.2/panels/mouse/cc-mouse-panel.c 2012-11-02 19:29:57.643315414 -0400
86@@ -107,7 +107,10 @@
87 static const char *
88 cc_mouse_panel_get_help_uri (CcPanel *panel)
89 {
90- return "help:gnome-help/mouse";
91+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
92+ return "help:ubuntu-help/mouse";
93+ else
94+ return "help:gnome-help/mouse";
95 }
96
97 static void
98Index: gnome-control-center-3.6.2/panels/network/cc-network-panel.c
99===================================================================
100--- gnome-control-center-3.6.2.orig/panels/network/cc-network-panel.c 2012-11-02 19:29:55.031315523 -0400
101+++ gnome-control-center-3.6.2/panels/network/cc-network-panel.c 2012-11-02 19:29:57.643315414 -0400
102@@ -232,7 +232,10 @@
103 static const char *
104 cc_network_panel_get_help_uri (CcPanel *panel)
105 {
106- return "help:gnome-help/net";
107+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
108+ return "help:ubuntu-help/net";
109+ else
110+ return "help:gnome-help/net";
111 }
112
113 static void
114Index: gnome-control-center-3.6.2/panels/online-accounts/cc-online-accounts-panel.c
115===================================================================
116--- gnome-control-center-3.6.2.orig/panels/online-accounts/cc-online-accounts-panel.c 2012-11-02 19:29:55.031315523 -0400
117+++ gnome-control-center-3.6.2/panels/online-accounts/cc-online-accounts-panel.c 2012-11-02 19:29:57.643315414 -0400
118@@ -256,7 +256,10 @@
119 static const char *
120 goa_panel_get_help_uri (CcPanel *panel)
121 {
122- return "help:gnome-help/accounts";
123+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
124+ return "help:ubuntu-help/accounts";
125+ else
126+ return "help:gnome-help/accounts";
127 }
128
129 static void
130Index: gnome-control-center-3.6.2/panels/power/cc-power-panel.c
131===================================================================
132--- gnome-control-center-3.6.2.orig/panels/power/cc-power-panel.c 2012-11-02 19:29:55.031315523 -0400
133+++ gnome-control-center-3.6.2/panels/power/cc-power-panel.c 2012-11-02 19:29:57.647315413 -0400
134@@ -124,7 +124,10 @@
135 static const char *
136 cc_power_panel_get_help_uri (CcPanel *panel)
137 {
138- return "help:gnome-help/power";
139+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
140+ return "help:ubuntu-help/power";
141+ else
142+ return "help:gnome-help/power";
143 }
144
145 static void
146Index: gnome-control-center-3.6.2/panels/printers/cc-printers-panel.c
147===================================================================
148--- gnome-control-center-3.6.2.orig/panels/printers/cc-printers-panel.c 2012-11-02 19:29:55.031315523 -0400
149+++ gnome-control-center-3.6.2/panels/printers/cc-printers-panel.c 2012-11-02 19:29:57.647315413 -0400
150@@ -251,7 +251,10 @@
151 static const char *
152 cc_printers_panel_get_help_uri (CcPanel *panel)
153 {
154- return "help:gnome-help/printing";
155+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
156+ return "help:ubuntu-help/printing";
157+ else
158+ return "help:gnome-help/printing";
159 }
160
161 static void
162Index: gnome-control-center-3.6.2/panels/screen/cc-screen-panel.c
163===================================================================
164--- gnome-control-center-3.6.2.orig/panels/screen/cc-screen-panel.c 2012-11-02 19:29:55.031315523 -0400
165+++ gnome-control-center-3.6.2/panels/screen/cc-screen-panel.c 2012-11-02 19:29:57.647315413 -0400
166@@ -146,7 +146,10 @@
167 static const char *
168 cc_screen_panel_get_help_uri (CcPanel *panel)
169 {
170- return "help:gnome-help/prefs-display";
171+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
172+ return "help:ubuntu-help/prefs-display";
173+ else
174+ return "help:gnome-help/prefs-display";
175 }
176
177 static void
178Index: gnome-control-center-3.6.2/panels/sound/cc-sound-panel.c
179===================================================================
180--- gnome-control-center-3.6.2.orig/panels/sound/cc-sound-panel.c 2012-11-02 19:29:55.031315523 -0400
181+++ gnome-control-center-3.6.2/panels/sound/cc-sound-panel.c 2012-11-02 19:29:57.647315413 -0400
182@@ -70,7 +70,10 @@
183 static const char *
184 cc_sound_panel_get_help_uri (CcPanel *panel)
185 {
186- return "help:gnome-help/media#sound";
187+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
188+ return "help:ubuntu-help/media#sound";
189+ else
190+ return "help:gnome-help/media#sound";
191 }
192
193 static void
194Index: gnome-control-center-3.6.2/panels/universal-access/cc-ua-panel.c
195===================================================================
196--- gnome-control-center-3.6.2.orig/panels/universal-access/cc-ua-panel.c 2012-11-02 19:29:55.031315523 -0400
197+++ gnome-control-center-3.6.2/panels/universal-access/cc-ua-panel.c 2012-11-02 19:29:57.651315413 -0400
198@@ -159,7 +159,10 @@
199 static const char *
200 cc_ua_panel_get_help_uri (CcPanel *panel)
201 {
202- return "help:gnome-help/a11y";
203+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
204+ return "help:ubuntu-help/a11y";
205+ else
206+ return "help:gnome-help/a11y";
207 }
208
209 static void
210Index: gnome-control-center-3.6.2/panels/user-accounts/um-password-dialog.c
211===================================================================
212--- gnome-control-center-3.6.2.orig/panels/user-accounts/um-password-dialog.c 2012-11-02 19:29:55.031315523 -0400
213+++ gnome-control-center-3.6.2/panels/user-accounts/um-password-dialog.c 2012-11-02 19:29:57.651315413 -0400
214@@ -523,9 +523,14 @@
215
216 widget = (GtkWidget *) gtk_builder_get_object (builder, "password-normal-strength-hints-label");
217 old_label = gtk_label_get_label (GTK_LABEL (widget));
218- label = g_strdup_printf ("<a href=\"%s\">%s</a>",
219- "help:gnome-help/user-goodpassword",
220- old_label);
221+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
222+ label = g_strdup_printf ("<a href=\"%s\">%s</a>",
223+ "help:ubuntu-help/user-goodpassword",
224+ old_label);
225+ else
226+ label = g_strdup_printf ("<a href=\"%s\">%s</a>",
227+ "help:gnome-help/user-goodpassword",
228+ old_label);
229 gtk_label_set_markup (GTK_LABEL (widget), label);
230 g_free (label);
231
232Index: gnome-control-center-3.6.2/panels/user-accounts/um-user-panel.c
233===================================================================
234--- gnome-control-center-3.6.2.orig/panels/user-accounts/um-user-panel.c 2012-11-02 19:29:55.031315523 -0400
235+++ gnome-control-center-3.6.2/panels/user-accounts/um-user-panel.c 2012-11-02 19:29:57.651315413 -0400
236@@ -1372,7 +1372,10 @@
237 static const char *
238 um_user_panel_get_help_uri (CcPanel *panel)
239 {
240- return "help:gnome-help/user-accounts";
241+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
242+ return "help:ubuntu-help/user-accounts";
243+ else
244+ return "help:gnome-help/user-accounts";
245 }
246
247 static void
248Index: gnome-control-center-3.6.2/panels/wacom/cc-wacom-panel.c
249===================================================================
250--- gnome-control-center-3.6.2.orig/panels/wacom/cc-wacom-panel.c 2012-11-02 19:29:55.031315523 -0400
251+++ gnome-control-center-3.6.2/panels/wacom/cc-wacom-panel.c 2012-11-02 19:29:57.651315413 -0400
252@@ -123,7 +123,10 @@
253 static const char *
254 cc_wacom_panel_get_help_uri (CcPanel *panel)
255 {
256- return "help:gnome-help/wacom";
257+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
258+ return "help:ubuntu-help/wacom";
259+ else
260+ return "help:gnome-help/wacom";
261 }
262
263 static void
264Index: gnome-control-center-3.6.2/shell/control-center.c
265===================================================================
266--- gnome-control-center-3.6.2.orig/shell/control-center.c 2012-11-02 19:29:55.031315523 -0400
267+++ gnome-control-center-3.6.2/shell/control-center.c 2012-11-02 19:30:16.431314628 -0400
268@@ -175,8 +175,12 @@
269
270 if (panel)
271 uri = cc_panel_get_help_uri (panel);
272-
273- gtk_show_uri (gtk_widget_get_screen (window),
274+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
275+ gtk_show_uri (gtk_widget_get_screen (window),
276+ uri ? uri : "help:ubuntu-help/prefs",
277+ GDK_CURRENT_TIME, NULL);
278+ else
279+ gtk_show_uri (gtk_widget_get_screen (window),
280 uri ? uri : "help:gnome-help/prefs",
281 GDK_CURRENT_TIME, NULL);
282 }
2830
=== removed file 'debian/patches/54_enable_alt_tap_in_shortcut.patch'
--- debian/patches/54_enable_alt_tap_in_shortcut.patch 2013-07-05 22:08:12 +0000
+++ debian/patches/54_enable_alt_tap_in_shortcut.patch 1970-01-01 00:00:00 +0000
@@ -1,58 +0,0 @@
1Index: gnome-control-center-3.6.3/panels/keyboard/keyboard-shortcuts.c
2===================================================================
3--- gnome-control-center-3.6.3.orig/panels/keyboard/keyboard-shortcuts.c 2012-11-21 18:09:33.690816155 +0100
4+++ gnome-control-center-3.6.3/panels/keyboard/keyboard-shortcuts.c 2012-11-21 18:09:34.222816183 +0100
5@@ -1716,7 +1716,7 @@
6 gtk_tree_view_append_column (treeview, column);
7
8 renderer = (GtkCellRenderer *) g_object_new (GTK_TYPE_CELL_RENDERER_ACCEL,
9- "accel-mode", GTK_CELL_RENDERER_ACCEL_MODE_OTHER,
10+ "accel-mode", GTK_CELL_RENDERER_ACCEL_MODE_MODIFIER_TAP,
11 NULL);
12
13 g_signal_connect (treeview, "button_press_event",
14Index: gnome-control-center-3.6.3/panels/keyboard/cc-keyboard-item.c
15===================================================================
16--- gnome-control-center-3.6.3.orig/panels/keyboard/cc-keyboard-item.c 2012-05-24 16:20:10.000000000 +0200
17+++ gnome-control-center-3.6.3/panels/keyboard/cc-keyboard-item.c 2012-11-21 18:09:34.222816183 +0100
18@@ -143,14 +143,25 @@
19 const char *value,
20 gboolean set_backend)
21 {
22+ /* don't reassign <Alt_L> or <Alt> key in the callback to the binding itself (as it's invalid for the cell renderer) */
23+ if ((g_strcmp0 (value, "<Alt_L>") == 0) || (g_strcmp0 (value, "<Alt>") == 0))
24+ return;
25+
26 g_free (item->binding);
27 item->binding = g_strdup (value);
28 binding_from_string (item->binding, &item->keyval, &item->keycode, &item->mask);
29
30+ const char *key;
31+ char *cheated_modifier = NULL;
32+ if (g_strcmp0 (item->binding, "Alt_L") == 0)
33+ cheated_modifier = g_strdup_printf ("<%s>", item->binding);
34+
35 if (set_backend == FALSE)
36 return;
37
38- settings_set_binding (item->settings, item->key, item->binding);
39+ settings_set_binding (item->settings, item->key, cheated_modifier ? cheated_modifier: item->binding);
40+
41+ g_free (cheated_modifier);
42 }
43
44 const char *
45@@ -441,6 +452,13 @@
46 item->settings = g_settings_new (item->schema);
47 item->binding = settings_get_binding (item->settings, item->key);
48 item->editable = g_settings_is_writable (item->settings, item->key);
49+
50+ if ((g_strcmp0 (item->binding, "<Alt>") == 0) || (g_strcmp0 (item->binding, "<Alt_L>") == 0))
51+ {
52+ g_free (item->binding);
53+ item->binding = g_strdup ("Alt_L");
54+ }
55+
56 binding_from_string (item->binding, &item->keyval, &item->keycode, &item->mask);
57
58 signal_name = g_strdup_printf ("changed::%s", item->key);
590
=== removed file 'debian/patches/55_user_accounts_hide_controls.patch'
--- debian/patches/55_user_accounts_hide_controls.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/55_user_accounts_hide_controls.patch 1970-01-01 00:00:00 +0000
@@ -1,148 +0,0 @@
1Index: gnome-control-center-3.6.3/panels/user-accounts/um-password-dialog.c
2===================================================================
3--- gnome-control-center-3.6.3.orig/panels/user-accounts/um-password-dialog.c 2013-01-22 15:11:55.971943861 -0500
4+++ gnome-control-center-3.6.3/panels/user-accounts/um-password-dialog.c 2013-01-22 15:11:55.959943861 -0500
5@@ -52,6 +52,7 @@
6 GtkWidget *ok_button;
7
8 UmUser *user;
9+ gboolean using_ecryptfs;
10
11 GtkWidget *old_password_label;
12 GtkWidget *old_password_entry;
13@@ -471,6 +472,38 @@
14 }
15 }
16
17+int _is_gdm_running = -1;
18+gboolean
19+is_gdm_running (void)
20+{
21+ if (_is_gdm_running == -1) {
22+ GDBusProxy *proxy;
23+ gchar *owner_name;
24+
25+ proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
26+ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES |
27+ G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS |
28+ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
29+ NULL,
30+ "org.gnome.DisplayManager",
31+ "/org/gnome/DisplayManager/Manager",
32+ "org.gnome.DisplayManager.Manager",
33+ NULL, NULL);
34+
35+ if (proxy == NULL)
36+ return FALSE;
37+
38+ owner_name = g_dbus_proxy_get_name_owner (proxy);
39+
40+ g_object_unref (proxy);
41+ g_free (owner_name);
42+
43+ _is_gdm_running = (owner_name != NULL) ? 1 : 0;
44+ }
45+
46+ return _is_gdm_running;
47+}
48+
49 UmPasswordDialog *
50 um_password_dialog_new (void)
51 {
52@@ -591,6 +624,13 @@
53 G_CALLBACK (entry_size_changed), widget);
54 um->normal_hint_label = widget;
55
56+ if (!is_gdm_running ()) {
57+ widget = (GtkWidget *) gtk_builder_get_object (builder, "password-normal-hint-label");
58+ gtk_widget_hide (widget);
59+ gtk_widget_hide (um->normal_hint_entry);
60+ gtk_widget_hide (um->normal_hint_label);
61+ }
62+
63 um->strength_indicator = (GtkWidget *) gtk_builder_get_object (builder, "strength-indicator");
64
65 um->strength_indicator_label = (GtkWidget *) gtk_builder_get_object (builder, "strength-indicator-label");
66@@ -625,6 +665,12 @@
67
68 gtk_tree_model_get (model, iter, 1, &mode, -1);
69
70+ if (mode == 1 && !is_gdm_running ())
71+ return FALSE;
72+
73+ if (mode == 2 && um->using_ecryptfs)
74+ return FALSE;
75+
76 if (mode == 3 && locked)
77 return FALSE;
78
79@@ -651,6 +697,8 @@
80 if (user) {
81 um->user = g_object_ref (user);
82
83+ um->using_ecryptfs = is_using_ecryptfs (um_user_get_user_name (user));
84+
85 pixbuf = um_user_render_icon (user, FALSE, 48);
86 gtk_image_set_from_pixbuf (GTK_IMAGE (um->user_icon), pixbuf);
87 g_object_unref (pixbuf);
88Index: gnome-control-center-3.6.3/panels/user-accounts/um-user-panel.c
89===================================================================
90--- gnome-control-center-3.6.3.orig/panels/user-accounts/um-user-panel.c 2013-01-22 15:11:55.971943861 -0500
91+++ gnome-control-center-3.6.3/panels/user-accounts/um-user-panel.c 2013-01-22 15:12:18.031943282 -0500
92@@ -629,7 +629,10 @@
93 /* Autologin: show when local account */
94 widget = get_widget (d, "autologin-switch");
95 label = get_widget (d, "autologin-label");
96- show = um_user_is_local_account (user);
97+ /* Don't show autologin option if ecryptfs is in use, because it won't
98+ work if user turns it on. */
99+ show = um_user_is_local_account (user) &&
100+ !is_using_ecryptfs (um_user_get_user_name (user));
101 gtk_widget_set_visible (widget, show);
102 gtk_widget_set_visible (label, show);
103 }
104Index: gnome-control-center-3.6.3/panels/user-accounts/um-utils.c
105===================================================================
106--- gnome-control-center-3.6.3.orig/panels/user-accounts/um-utils.c 2013-01-22 15:11:55.971943861 -0500
107+++ gnome-control-center-3.6.3/panels/user-accounts/um-utils.c 2013-01-22 15:11:55.963943861 -0500
108@@ -746,3 +746,27 @@
109 g_string_free (item3, TRUE);
110 g_string_free (item4, TRUE);
111 }
112+
113+gboolean
114+is_using_ecryptfs (const gchar *name)
115+{
116+ gboolean using_ecryptfs = FALSE;
117+ int status;
118+ gchar *prog;
119+ gchar *cmd;
120+
121+ prog = g_find_program_in_path ("ecryptfs-verify");
122+ if (prog != NULL) {
123+ gchar *cmd = g_strdup_printf("'%s' -h -u '%s'", prog, name);
124+
125+ if (g_spawn_command_line_sync (cmd, NULL, NULL, &status, NULL)) {
126+ if (status == 0)
127+ using_ecryptfs = TRUE;
128+ }
129+
130+ g_free (prog);
131+ g_free (cmd);
132+ }
133+
134+ return using_ecryptfs;
135+}
136Index: gnome-control-center-3.6.3/panels/user-accounts/um-utils.h
137===================================================================
138--- gnome-control-center-3.6.3.orig/panels/user-accounts/um-utils.h 2013-01-22 15:11:55.971943861 -0500
139+++ gnome-control-center-3.6.3/panels/user-accounts/um-utils.h 2013-01-22 15:11:55.963943861 -0500
140@@ -65,6 +65,8 @@
141 void generate_username_choices (const gchar *name,
142 GtkListStore *store);
143
144+gboolean is_using_ecryptfs (const gchar *name);
145+
146 G_END_DECLS
147
148 #endif
1490
=== added file 'debian/patches/56_use_ubuntu_info_branding.patch'
--- debian/patches/56_use_ubuntu_info_branding.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/56_use_ubuntu_info_branding.patch 2014-05-06 09:05:46 +0000
@@ -0,0 +1,31 @@
1--- a/panels/info/cc-info-panel.c
2+++ b/panels/info/cc-info-panel.c
3@@ -1561,6 +1561,8 @@
4 g_free (text);
5 }
6
7+ gtk_widget_hide (WID ("version_label"));
8+
9 glibtop_get_mem (&mem);
10 text = g_format_size_full (mem.total, G_FORMAT_SIZE_IEC_UNITS);
11 widget = WID ("memory_label");
12--- a/panels/info/info.ui
13+++ b/panels/info/info.ui
14@@ -243,7 +243,7 @@
15 <object class="GtkImage" id="system_image">
16 <property name="visible">True</property>
17 <property name="can_focus">False</property>
18- <property name="pixbuf">GnomeLogoVerticalMedium.svg</property>
19+ <property name="pixbuf">UbuntuLogo.png</property>
20 </object>
21 <packing>
22 <property name="expand">False</property>
23--- a/panels/info/info.gresource.xml
24+++ b/panels/info/info.gresource.xml
25@@ -3,5 +3,6 @@
26 <gresource prefix="/org/gnome/control-center/info">
27 <file preprocess="xml-stripblanks">info.ui</file>
28 <file>GnomeLogoVerticalMedium.svg</file>
29+ <file>UbuntuLogo.png</file>
30 </gresource>
31 </gresources>
032
=== removed file 'debian/patches/56_use_ubuntu_info_branding.patch'
--- debian/patches/56_use_ubuntu_info_branding.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/56_use_ubuntu_info_branding.patch 1970-01-01 00:00:00 +0000
@@ -1,26 +0,0 @@
1Index: b/panels/info/cc-info-panel.c
2===================================================================
3--- a/panels/info/cc-info-panel.c
4+++ b/panels/info/cc-info-panel.c
5@@ -1706,6 +1706,8 @@
6 g_free (text);
7 }
8
9+ gtk_widget_hide (WID ("version_label"));
10+
11 glibtop_get_mem (&mem);
12 text = g_format_size_full (mem.total, G_FORMAT_SIZE_IEC_UNITS);
13 widget = WID ("memory_label");
14Index: b/panels/info/info.ui
15===================================================================
16--- a/panels/info/info.ui
17+++ b/panels/info/info.ui
18@@ -242,7 +242,7 @@
19 <object class="GtkImage" id="system_image">
20 <property name="visible">True</property>
21 <property name="can_focus">False</property>
22- <property name="pixbuf">GnomeLogoVerticalMedium.svg</property>
23+ <property name="pixbuf">UbuntuLogo.png</property>
24 </object>
25 <packing>
26 <property name="expand">False</property>
270
=== removed file 'debian/patches/58_hide_gdm_notifications.patch'
--- debian/patches/58_hide_gdm_notifications.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/58_hide_gdm_notifications.patch 1970-01-01 00:00:00 +0000
@@ -1,17 +0,0 @@
1Description: Hide "Show notifications when locked" settings when running
2 Unity. You currently need GNOME Shell running on GDM for that to work.
3Forwarded: not-needed
4Author: Jeremy Bicha <jbicha@ubuntu.com>
5Index: gnome-control-center-3.6.2/panels/screen/cc-screen-panel.c
6===================================================================
7--- gnome-control-center-3.6.2.orig/panels/screen/cc-screen-panel.c 2012-11-03 19:10:00.926617924 -0400
8+++ gnome-control-center-3.6.2/panels/screen/cc-screen-panel.c 2012-11-03 19:17:14.902599774 -0400
9@@ -545,6 +545,8 @@
10 "show-notifications",
11 widget, "active",
12 G_SETTINGS_BIND_DEFAULT);
13+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
14+ gtk_widget_hide (widget);
15
16 update_lock_screen_sensitivity (self);
17
180
=== removed file 'debian/patches/58_ubuntu_icon_views_redesign.patch'
--- debian/patches/58_ubuntu_icon_views_redesign.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/58_ubuntu_icon_views_redesign.patch 1970-01-01 00:00:00 +0000
@@ -1,70 +0,0 @@
1Index: gnome-control-center-3.6.3/shell/gnome-control-center.c
2===================================================================
3--- gnome-control-center-3.6.3.orig/shell/gnome-control-center.c 2012-11-24 10:39:18.476282140 -0500
4+++ gnome-control-center-3.6.3/shell/gnome-control-center.c 2012-11-24 10:52:26.776249171 -0500
5@@ -50,7 +50,8 @@
6 * for the user than resizing vertically
7 * Both sizes are defined in https://live.gnome.org/Design/SystemSettings/ */
8 #define FIXED_WIDTH 740
9-#define FIXED_HEIGHT 636
10+#define UNITY_FIXED_WIDTH 850
11+#define FIXED_HEIGHT 650
12 #define SMALL_SCREEN_FIXED_HEIGHT 400
13
14 #define MIN_ICON_VIEW_HEIGHT 300
15@@ -910,8 +911,12 @@
16 gtk_widget_show (W (priv->builder, "search-entry"));
17 gtk_widget_hide (W (priv->builder, "lock-button"));
18
19- gtk_widget_get_preferred_height_for_width (GTK_WIDGET (priv->main_vbox),
20- FIXED_WIDTH, NULL, &nat_height);
21+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
22+ gtk_widget_get_preferred_height_for_width (GTK_WIDGET (priv->main_vbox),
23+ UNITY_FIXED_WIDTH, NULL, &nat_height);
24+ else
25+ gtk_widget_get_preferred_height_for_width (GTK_WIDGET (priv->main_vbox),
26+ FIXED_WIDTH, NULL, &nat_height);
27 gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (priv->scrolled_window),
28 priv->small_screen == SMALL_SCREEN_TRUE ? SMALL_SCREEN_FIXED_HEIGHT : nat_height);
29 }
30@@ -921,12 +926,22 @@
31 gtk_widget_hide (W (priv->builder, "search-entry"));
32 /* set the scrolled window small so that it doesn't force
33 the window to be larger than this panel */
34- gtk_widget_get_preferred_height_for_width (GTK_WIDGET (priv->window),
35- FIXED_WIDTH, NULL, &nat_height);
36- gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (priv->scrolled_window), MIN_ICON_VIEW_HEIGHT);
37- gtk_window_resize (GTK_WINDOW (priv->window),
38- FIXED_WIDTH,
39- nat_height);
40+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity")) {
41+ gtk_widget_get_preferred_height_for_width (GTK_WIDGET (priv->window),
42+ UNITY_FIXED_WIDTH, NULL, &nat_height);
43+ gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (priv->scrolled_window), MIN_ICON_VIEW_HEIGHT);
44+ gtk_window_resize (GTK_WINDOW (priv->window),
45+ UNITY_FIXED_WIDTH,
46+ nat_height);
47+ }
48+ else {
49+ gtk_widget_get_preferred_height_for_width (GTK_WIDGET (priv->window),
50+ FIXED_WIDTH, NULL, &nat_height);
51+ gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (priv->scrolled_window), MIN_ICON_VIEW_HEIGHT);
52+ gtk_window_resize (GTK_WINDOW (priv->window),
53+ FIXED_WIDTH,
54+ nat_height);
55+ }
56 }
57 }
58
59@@ -1373,7 +1388,10 @@
60 /* Main scrolled window */
61 priv->scrolled_window = W (priv->builder, "scrolledwindow1");
62
63- gtk_widget_set_size_request (priv->scrolled_window, FIXED_WIDTH, -1);
64+ if (!g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "Unity"))
65+ gtk_widget_set_size_request (priv->scrolled_window, UNITY_FIXED_WIDTH, -1);
66+ else
67+ gtk_widget_set_size_request (priv->scrolled_window, FIXED_WIDTH, -1);
68 priv->main_vbox = W (priv->builder, "main-vbox");
69 g_signal_connect (priv->notebook, "notify::page",
70 G_CALLBACK (notebook_page_notify_cb), priv);
710
=== removed file 'debian/patches/59_install_gcm_components_on_demand.patch'
--- debian/patches/59_install_gcm_components_on_demand.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/59_install_gcm_components_on_demand.patch 1970-01-01 00:00:00 +0000
@@ -1,231 +0,0 @@
1Index: b/panels/color/cc-color-panel.c
2===================================================================
3--- a/panels/color/cc-color-panel.c
4+++ b/panels/color/cc-color-panel.c
5@@ -25,6 +25,7 @@
6 #include <colord.h>
7 #include <gtk/gtk.h>
8 #include <gdk/gdkx.h>
9+#include <gio/gio.h>
10
11 #include "cc-color-panel.h"
12
13@@ -260,32 +261,148 @@
14 }
15
16 static void
17-gcm_prefs_calibrate_cb (GtkWidget *widget, CcColorPanel *prefs)
18+gcm_packagekit_finished_cb (GObject *source, GAsyncResult *res, gpointer user_data)
19+{
20+ GPtrArray *argv = (GPtrArray *)user_data;
21+ GVariant *reply;
22+ GError *error = NULL;
23+ gboolean ret;
24+
25+ reply = g_dbus_proxy_call_finish (G_DBUS_PROXY (source), res, &error);
26+ g_variant_unref (reply);
27+
28+ if (error != NULL)
29+ {
30+ g_warning ("failed to install required component: %s", error->message);
31+ g_ptr_array_unref (argv);
32+ g_error_free (error);
33+ return;
34+ }
35+
36+ ret = g_spawn_async (NULL, (gchar**) argv->pdata, NULL, 0,
37+ NULL, NULL, NULL, &error);
38+ g_ptr_array_unref (argv);
39+ if (!ret)
40+ {
41+ g_warning ("failed to run command: %s", error->message);
42+ g_error_free (error);
43+ }
44+}
45+
46+struct gcm_packagekit_closure_data
47+{
48+ GPtrArray *argv;
49+ guint xid;
50+};
51+
52+static void
53+gcm_packagekit_proxy_ready_cb (GObject *source, GAsyncResult *res, gpointer user_data)
54+{
55+ struct gcm_packagekit_closure_data *data =
56+ (struct gcm_packagekit_closure_data *)user_data;
57+ GDBusProxy *session_installer;
58+ GVariantBuilder *builder;
59+ GError *error = NULL;
60+
61+ session_installer = g_dbus_proxy_new_for_bus_finish (res, &error);
62+ if (error != NULL)
63+ {
64+ g_warning ("failed to connect to PackageKit interface: %s",
65+ error->message);
66+ g_ptr_array_unref (data->argv);
67+ g_free (data);
68+ g_error_free (error);
69+ return;
70+ }
71+
72+ builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
73+ g_variant_builder_add (builder, "s",
74+ g_ptr_array_index (data->argv, 0));
75+ g_dbus_proxy_call (session_installer,
76+ "InstallProvideFiles",
77+ g_variant_new ("(uass)",
78+ data->xid,
79+ builder,
80+ "hide-finished"
81+ ),
82+ G_DBUS_CALL_FLAGS_NONE,
83+ -1,
84+ NULL,
85+ &gcm_packagekit_finished_cb,
86+ data->argv);
87+
88+ g_free (data);
89+ g_variant_builder_unref (builder);
90+}
91+
92+static void
93+gcm_prefs_install_component (guint xid, GPtrArray *argv)
94+{
95+ struct gcm_packagekit_closure_data *data;
96+ data = g_malloc (sizeof (*data));
97+ data->argv = argv;
98+ data->xid = xid;
99+ g_ptr_array_ref (data->argv);
100+
101+ g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION,
102+ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES |
103+ G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS,
104+ NULL,
105+ "org.freedesktop.PackageKit",
106+ "/org/freedesktop/PackageKit",
107+ "org.freedesktop.PackageKit.Modify",
108+ NULL,
109+ &gcm_packagekit_proxy_ready_cb,
110+ data);
111+}
112+
113+static void
114+gcm_prefs_run_maybe_install (guint xid, gchar *filename, GPtrArray *argv)
115 {
116 gboolean ret;
117 GError *error = NULL;
118+
119+ ret = g_spawn_async (NULL, (gchar**) argv->pdata, NULL, 0,
120+ NULL, NULL, NULL, &error);
121+ if (!ret)
122+ {
123+ if ((error->domain == g_spawn_error_quark ()) &&
124+ (error->code == G_SPAWN_ERROR_NOENT))
125+ {
126+ gcm_prefs_install_component (xid, argv);
127+ }
128+ else
129+ {
130+ g_warning ("failed to run command: %s", error->message);
131+ }
132+ g_error_free (error);
133+ }
134+}
135+
136+static void
137+gcm_prefs_calibrate_cb (GtkWidget *widget, CcColorPanel *prefs)
138+{
139 guint xid;
140 GPtrArray *argv;
141+ gchar *calibrater_filename;
142 CcColorPanelPrivate *priv = prefs->priv;
143
144 /* get xid */
145 xid = gdk_x11_window_get_xid (gtk_widget_get_window (GTK_WIDGET (priv->main_window)));
146
147+ calibrater_filename = g_build_filename (BINDIR, "gcm-calibrate", NULL);
148+
149 /* run with modal set */
150 argv = g_ptr_array_new_with_free_func (g_free);
151- g_ptr_array_add (argv, g_build_filename (BINDIR, "gcm-calibrate", NULL));
152+ g_ptr_array_add (argv, calibrater_filename);
153 g_ptr_array_add (argv, g_strdup ("--device"));
154 g_ptr_array_add (argv, g_strdup (cd_device_get_id (priv->current_device)));
155 g_ptr_array_add (argv, g_strdup ("--parent-window"));
156 g_ptr_array_add (argv, g_strdup_printf ("%i", xid));
157 g_ptr_array_add (argv, NULL);
158- ret = g_spawn_async (NULL, (gchar**) argv->pdata, NULL, 0,
159- NULL, NULL, NULL, &error);
160- if (!ret)
161- {
162- g_warning ("failed to run calibrate: %s", error->message);
163- g_error_free (error);
164- }
165+
166+ gcm_prefs_run_maybe_install (xid, calibrater_filename, argv);
167+
168 g_ptr_array_unref (argv);
169 }
170
171@@ -656,10 +773,9 @@
172 GtkTreeModel *model;
173 GtkTreeSelection *selection;
174 gchar *options = NULL;
175+ gchar *viewer_filename;
176 GPtrArray *argv = NULL;
177 guint xid;
178- gboolean ret;
179- GError *error = NULL;
180 CcColorPanelPrivate *priv = prefs->priv;
181
182 /* get the selected row */
183@@ -677,21 +793,17 @@
184 /* get xid */
185 xid = gdk_x11_window_get_xid (gtk_widget_get_window (GTK_WIDGET (priv->main_window)));
186
187+ viewer_filename = g_build_filename (BINDIR, "gcm-viewer", NULL);
188 /* open up gcm-viewer as a info pane */
189 argv = g_ptr_array_new_with_free_func (g_free);
190- g_ptr_array_add (argv, g_build_filename (BINDIR, "gcm-viewer", NULL));
191+ g_ptr_array_add (argv, viewer_filename);
192 g_ptr_array_add (argv, g_strdup ("--profile"));
193 g_ptr_array_add (argv, g_strdup (cd_profile_get_id (profile)));
194 g_ptr_array_add (argv, g_strdup ("--parent-window"));
195 g_ptr_array_add (argv, g_strdup_printf ("%i", xid));
196 g_ptr_array_add (argv, NULL);
197- ret = g_spawn_async (NULL, (gchar**) argv->pdata, NULL, 0,
198- NULL, NULL, NULL, &error);
199- if (!ret)
200- {
201- g_warning ("failed to run calibrate: %s", error->message);
202- g_error_free (error);
203- }
204+
205+ gcm_prefs_run_maybe_install (xid, viewer_filename, argv);
206
207 g_ptr_array_unref (argv);
208 g_free (options);
209@@ -995,7 +1107,6 @@
210 {
211 GtkWidget *widget;
212 CdDeviceRelation relation;
213- gchar *s;
214 CcColorPanelPrivate *priv = prefs->priv;
215
216 /* get profile */
217@@ -1026,13 +1137,7 @@
218 /* allow getting profile info */
219 widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
220 "toolbutton_profile_view"));
221- if ((s = g_find_program_in_path ("gcm-viewer")))
222- {
223- gtk_widget_set_sensitive (widget, TRUE);
224- g_free (s);
225- }
226- else
227- gtk_widget_set_sensitive (widget, FALSE);
228+ gtk_widget_set_sensitive (widget, TRUE);
229
230 /* hide device specific stuff */
231 widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
2320
=== removed file 'debian/patches/60_ubuntu_nav_bar.patch'
--- debian/patches/60_ubuntu_nav_bar.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/60_ubuntu_nav_bar.patch 1970-01-01 00:00:00 +0000
@@ -1,406 +0,0 @@
1# Description: set a navigation bar in the g-c-c shell
2# UbuntuSpecific: yes
3#
4=== modified file 'shell/Makefile.am'
5Index: gnome-control-center-3.6.3/shell/Makefile.am
6===================================================================
7--- gnome-control-center-3.6.3.orig/shell/Makefile.am 2012-10-01 11:39:00.000000000 +0200
8+++ gnome-control-center-3.6.3/shell/Makefile.am 2012-11-22 10:20:59.485282338 +0100
9@@ -26,6 +26,8 @@
10 cc-shell-item-view.h \
11 cc-shell-model.c \
12 cc-shell-model.h \
13+ cc-shell-nav-bar.c \
14+ cc-shell-nav-bar.h \
15 cc-editable-entry.c \
16 cc-editable-entry.h \
17 cc-panel.c \
18Index: gnome-control-center-3.6.3/shell/cc-shell-marshal.list
19===================================================================
20--- gnome-control-center-3.6.3.orig/shell/cc-shell-marshal.list 2011-11-07 18:22:02.000000000 +0100
21+++ gnome-control-center-3.6.3/shell/cc-shell-marshal.list 2012-11-22 10:20:56.873282212 +0100
22@@ -1 +1,2 @@
23 VOID:STRING,STRING,STRING
24+VOID:VOID
25Index: gnome-control-center-3.6.3/shell/cc-shell-nav-bar.c
26===================================================================
27--- /dev/null 1970-01-01 00:00:00.000000000 +0000
28+++ gnome-control-center-3.6.3/shell/cc-shell-nav-bar.c 2012-11-22 10:20:56.873282212 +0100
29@@ -0,0 +1,150 @@
30+/*
31+ * Copyright 2012 Canonical
32+ *
33+ * The Control Center is free software; you can redistribute it and/or modify
34+ * it under the terms of the GNU General Public License as published by the
35+ * Free Software Foundation; either version 2 of the License, or (at your
36+ * option) any later version.
37+ *
38+ * The Control Center is distributed in the hope that it will be useful, but
39+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
40+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
41+ * for more details.
42+ *
43+ * You should have received a copy of the GNU General Public License along
44+ * with the Control Center; if not, write to the Free Software Foundation,
45+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
46+ *
47+ * Author: Aurélien Gâteau <aurelien.gateau@canonical.com>
48+ */
49+
50+#include "cc-shell-nav-bar.h"
51+#include "cc-shell-marshal.h"
52+
53+#include <glib/gi18n.h>
54+
55+G_DEFINE_TYPE (CcShellNavBar, cc_shell_nav_bar, GTK_TYPE_BOX)
56+
57+#define SHELL_NAV_BAR_PRIVATE(o) \
58+ (G_TYPE_INSTANCE_GET_PRIVATE ((o), CC_TYPE_SHELL_NAV_BAR, CcShellNavBarPrivate))
59+
60+struct _CcShellNavBarPrivate
61+{
62+ GtkWidget *home_button;
63+ GtkWidget *detail_button;
64+};
65+
66+enum
67+{
68+ HOME_CLICKED,
69+ LAST_SIGNAL
70+};
71+
72+static guint signals[LAST_SIGNAL] = {0,};
73+
74+static void
75+cc_shell_nav_bar_get_property (GObject *object,
76+ guint property_id,
77+ GValue *value,
78+ GParamSpec *pspec)
79+{
80+ switch (property_id)
81+ {
82+ default:
83+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
84+ }
85+}
86+
87+static void
88+cc_shell_nav_bar_set_property (GObject *object,
89+ guint property_id,
90+ const GValue *value,
91+ GParamSpec *pspec)
92+{
93+ switch (property_id)
94+ {
95+ default:
96+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
97+ }
98+}
99+
100+static void
101+cc_shell_nav_bar_dispose (GObject *object)
102+{
103+ G_OBJECT_CLASS (cc_shell_nav_bar_parent_class)->dispose (object);
104+}
105+
106+static void
107+cc_shell_nav_bar_finalize (GObject *object)
108+{
109+ G_OBJECT_CLASS (cc_shell_nav_bar_parent_class)->finalize (object);
110+}
111+
112+static void
113+home_button_clicked_cb (GtkButton *button,
114+ CcShellNavBar *bar)
115+{
116+ g_signal_emit (bar, signals[HOME_CLICKED], 0);
117+}
118+
119+static void
120+cc_shell_nav_bar_class_init (CcShellNavBarClass *klass)
121+{
122+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
123+
124+ g_type_class_add_private (klass, sizeof (CcShellNavBarPrivate));
125+
126+ object_class->get_property = cc_shell_nav_bar_get_property;
127+ object_class->set_property = cc_shell_nav_bar_set_property;
128+ object_class->dispose = cc_shell_nav_bar_dispose;
129+ object_class->finalize = cc_shell_nav_bar_finalize;
130+
131+ signals[HOME_CLICKED] = g_signal_new ("home-clicked",
132+ CC_TYPE_SHELL_NAV_BAR,
133+ G_SIGNAL_RUN_FIRST,
134+ 0,
135+ NULL,
136+ NULL,
137+ cc_shell_marshal_VOID__VOID,
138+ G_TYPE_NONE,
139+ 0);
140+}
141+
142+static void
143+cc_shell_nav_bar_init (CcShellNavBar *self)
144+{
145+ self->priv = SHELL_NAV_BAR_PRIVATE (self);
146+ self->priv->home_button = gtk_button_new_with_mnemonic (_("_All Settings"));
147+ self->priv->detail_button = gtk_button_new();
148+
149+ gtk_box_pack_start (GTK_BOX(self), self->priv->home_button, FALSE, FALSE, 0);
150+ gtk_box_pack_start (GTK_BOX(self), self->priv->detail_button, FALSE, FALSE, 0);
151+
152+ gtk_widget_show (self->priv->home_button);
153+
154+ g_signal_connect (self->priv->home_button, "clicked",
155+ G_CALLBACK (home_button_clicked_cb), self);
156+
157+ GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET(self));
158+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_LINKED);
159+ gtk_style_context_add_class (context, "breadcrumbs");
160+}
161+
162+GtkWidget *
163+cc_shell_nav_bar_new (void)
164+{
165+ return g_object_new (CC_TYPE_SHELL_NAV_BAR, NULL);
166+}
167+
168+void
169+cc_shell_nav_bar_show_detail_button (CcShellNavBar *bar, const gchar *label)
170+{
171+ gtk_widget_show (bar->priv->detail_button);
172+ gtk_button_set_label (GTK_BUTTON (bar->priv->detail_button), label);
173+}
174+
175+void
176+cc_shell_nav_bar_hide_detail_button (CcShellNavBar *bar)
177+{
178+ gtk_widget_hide (bar->priv->detail_button);
179+}
180Index: gnome-control-center-3.6.3/shell/cc-shell-nav-bar.h
181===================================================================
182--- /dev/null 1970-01-01 00:00:00.000000000 +0000
183+++ gnome-control-center-3.6.3/shell/cc-shell-nav-bar.h 2012-11-22 10:20:56.877282212 +0100
184@@ -0,0 +1,76 @@
185+/*
186+ * Copyright 2012 Canonical
187+ *
188+ * The Control Center is free software; you can redistribute it and/or modify
189+ * it under the terms of the GNU General Public License as published by the
190+ * Free Software Foundation; either version 2 of the License, or (at your
191+ * option) any later version.
192+ *
193+ * The Control Center is distributed in the hope that it will be useful, but
194+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
195+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
196+ * for more details.
197+ *
198+ * You should have received a copy of the GNU General Public License along
199+ * with the Control Center; if not, write to the Free Software Foundation,
200+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
201+ *
202+ * Author: Aurélien Gâteau <aurelien.gateau@canonical.com>
203+ */
204+
205+#ifndef _CC_SHELL_NAV_BAR_H
206+#define _CC_SHELL_NAV_BAR_H
207+
208+#include <gtk/gtk.h>
209+
210+G_BEGIN_DECLS
211+
212+#define CC_TYPE_SHELL_NAV_BAR cc_shell_nav_bar_get_type()
213+
214+#define CC_SHELL_NAV_BAR(obj) \
215+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
216+ CC_TYPE_SHELL_NAV_BAR, CcShellNavBar))
217+
218+#define CC_SHELL_NAV_BAR_CLASS(klass) \
219+ (G_TYPE_CHECK_CLASS_CAST ((klass), \
220+ CC_TYPE_SHELL_NAV_BAR, CcShellNavBarClass))
221+
222+#define CC_IS_SHELL_NAV_BAR(obj) \
223+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
224+ CC_TYPE_SHELL_NAV_BAR))
225+
226+#define CC_IS_SHELL_NAV_BAR_CLASS(klass) \
227+ (G_TYPE_CHECK_CLASS_TYPE ((klass), \
228+ CC_TYPE_SHELL_NAV_BAR))
229+
230+#define CC_SHELL_NAV_BAR_GET_CLASS(obj) \
231+ (G_TYPE_INSTANCE_GET_CLASS ((obj), \
232+ CC_TYPE_SHELL_NAV_BAR, CcShellNavBarClass))
233+
234+typedef struct _CcShellNavBar CcShellNavBar;
235+typedef struct _CcShellNavBarClass CcShellNavBarClass;
236+typedef struct _CcShellNavBarPrivate CcShellNavBarPrivate;
237+
238+struct _CcShellNavBar
239+{
240+ GtkBox parent;
241+
242+ CcShellNavBarPrivate *priv;
243+};
244+
245+struct _CcShellNavBarClass
246+{
247+ GtkBoxClass parent_class;
248+};
249+
250+GType cc_shell_nav_bar_get_type (void) G_GNUC_CONST;
251+
252+GtkWidget *cc_shell_nav_bar_new (void);
253+
254+void cc_shell_nav_bar_show_detail_button (CcShellNavBar *bar, const gchar *label);
255+
256+void cc_shell_nav_bar_hide_detail_button (CcShellNavBar *bar);
257+
258+G_END_DECLS
259+
260+#endif /* _CC_SHELL_NAV_BAR_H */
261Index: gnome-control-center-3.6.3/shell/gnome-control-center.c
262===================================================================
263--- gnome-control-center-3.6.3.orig/shell/gnome-control-center.c 2012-11-22 10:20:56.833282210 +0100
264+++ gnome-control-center-3.6.3/shell/gnome-control-center.c 2012-11-22 10:20:59.485282338 +0100
265@@ -38,6 +38,7 @@
266 #include "cc-shell.h"
267 #include "cc-shell-category-view.h"
268 #include "cc-shell-model.h"
269+#include "cc-shell-nav-bar.h"
270
271 G_DEFINE_TYPE (GnomeControlCenter, gnome_control_center, CC_TYPE_SHELL)
272
273@@ -75,6 +76,7 @@
274 GtkWidget *search_entry;
275 GtkWidget *lock_button;
276 GPtrArray *custom_widgets;
277+ GtkWidget *nav_bar;
278
279 GMenuTree *menu_tree;
280 GtkListStore *store;
281@@ -237,6 +239,7 @@
282 /* switch to the new panel */
283 gtk_widget_show (box);
284 notebook_select_page (priv->notebook, box);
285+ cc_shell_nav_bar_show_detail_button (CC_SHELL_NAV_BAR(shell->priv->nav_bar), name);
286
287 /* set the title of the window */
288 icon_name = get_icon_name_from_g_icon (gicon);
289@@ -299,6 +302,8 @@
290
291 /* clear any custom widgets */
292 _shell_remove_all_custom_widgets (priv);
293+
294+ cc_shell_nav_bar_hide_detail_button (CC_SHELL_NAV_BAR (priv->nav_bar));
295 }
296
297 void
298@@ -902,11 +907,8 @@
299
300 child = notebook_get_selected_page (GTK_WIDGET (notebook));
301
302- /* make sure the home button is shown on all pages except the overview page */
303-
304 if (child == priv->scrolled_window || child == priv->search_scrolled)
305 {
306- gtk_widget_hide (W (priv->builder, "home-button"));
307 gtk_widget_show (W (priv->builder, "search-entry"));
308 gtk_widget_hide (W (priv->builder, "lock-button"));
309
310@@ -917,7 +919,6 @@
311 }
312 else
313 {
314- gtk_widget_show (W (priv->builder, "home-button"));
315 gtk_widget_hide (W (priv->builder, "search-entry"));
316 /* set the scrolled window small so that it doesn't force
317 the window to be larger than this panel */
318@@ -1332,6 +1333,7 @@
319 GError *err = NULL;
320 GnomeControlCenterPrivate *priv;
321 GdkScreen *screen;
322+ GtkWidget *widget;
323
324 priv = self->priv = CONTROL_CENTER_PRIVATE (self);
325
326@@ -1378,8 +1380,14 @@
327 g_signal_connect (priv->notebook, "notify::page",
328 G_CALLBACK (notebook_page_notify_cb), priv);
329
330- g_signal_connect (gtk_builder_get_object (priv->builder, "home-button"),
331- "clicked", G_CALLBACK (home_button_clicked_cb), self);
332+ priv->nav_bar = cc_shell_nav_bar_new ();
333+ widget = W (priv->builder, "hbox1");
334+ gtk_box_pack_start (GTK_BOX (widget), priv->nav_bar, FALSE, FALSE, 0);
335+ gtk_box_reorder_child (GTK_BOX (widget), priv->nav_bar, 0);
336+ gtk_widget_show (priv->nav_bar);
337+
338+ g_signal_connect (priv->nav_bar,
339+ "home-clicked", G_CALLBACK (home_button_clicked_cb), self);
340
341 /* keep a list of custom widgets to unload on panel change */
342 priv->custom_widgets = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
343Index: gnome-control-center-3.6.3/shell/shell.ui
344===================================================================
345--- gnome-control-center-3.6.3.orig/shell/shell.ui 2012-11-14 12:42:44.000000000 +0100
346+++ gnome-control-center-3.6.3/shell/shell.ui 2012-11-22 10:21:52.369284899 +0100
347@@ -34,36 +34,6 @@
348 <object class="GtkHBox" id="hbox1">
349 <property name="visible">True</property>
350 <child>
351- <object class="GtkAspectFrame" id="home-aspect-frame">
352- <property name="visible">True</property>
353- <property name="can_focus">False</property>
354- <property name="xalign">0</property>
355- <property name="ratio">1</property>
356- <property name="shadow-type">none</property>
357- <property name="obey-child">False</property>
358- <child>
359- <object class="GtkButton" id="home-button">
360- <property name="use_action_appearance">False</property>
361- <property name="can_focus">True</property>
362- <property name="receives_default">True</property>
363- <property name="no_show_all">True</property>
364- <property name="use_action_appearance">False</property>
365- <property name="image">image1</property>
366- <property name="use_underline">True</property>
367- <child internal-child="accessible">
368- <object class="AtkObject" id="home-button-atkobject">
369- <property name="AtkObject::accessible-name" translatable="yes">All Settings</property>
370- </object>
371- </child>
372- </object>
373- </child>
374- </object>
375- <packing>
376- <property name="expand">False</property>
377- <property name="position">0</property>
378- </packing>
379- </child>
380- <child>
381 <object class="GtkAlignment" id="entry-alignment">
382 <property name="visible">True</property>
383 <property name="xalign">1</property>
384@@ -93,7 +63,7 @@
385 </child>
386 </object>
387 <packing>
388- <property name="position">1</property>
389+ <property name="position">0</property>
390 </packing>
391 </child>
392 </object>
393@@ -172,13 +142,6 @@
394 <column type="gchararray"/>
395 </columns>
396 </object>
397- <object class="GtkSizeGroup" id="sizegroup">
398- <property name="mode">vertical</property>
399- <widgets>
400- <widget name="home-button"/>
401- <widget name="entry-alignment"/>
402- </widgets>
403- </object>
404 <object class="GtkImage" id="image1">
405 <property name="visible">True</property>
406 <property name="can_focus">False</property>
4070
=== removed file 'debian/patches/61_workaround_online_account.patch'
--- debian/patches/61_workaround_online_account.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/61_workaround_online_account.patch 1970-01-01 00:00:00 +0000
@@ -1,16 +0,0 @@
1# Description: Don't show goa in Unity, we use uoa there
2# Upstream: the change is ubuntu specific
3#
4Index: gnome-control-center-3.3.91/panels/online-accounts/gnome-online-accounts-panel.desktop.in.in
5===================================================================
6--- gnome-control-center-3.3.91.orig/panels/online-accounts/gnome-online-accounts-panel.desktop.in.in 2012-03-05 15:04:55.000000000 +0100
7+++ gnome-control-center-3.3.91/panels/online-accounts/gnome-online-accounts-panel.desktop.in.in 2012-03-06 17:52:14.907083003 +0100
8@@ -7,7 +7,7 @@
9 Type=Application
10 StartupNotify=true
11 Categories=GNOME;GTK;Settings;DesktopSettings;X-GNOME-Settings-Panel;X-GNOME-PersonalSettings;
12-OnlyShowIn=GNOME;Unity;
13+OnlyShowIn=GNOME;
14 X-GNOME-Bugzilla-Bugzilla=GNOME
15 X-GNOME-Bugzilla-Product=gnome-control-center
16 X-GNOME-Bugzilla-Component=Online Accounts
170
=== added file 'debian/patches/64_restore_terminal_keyboard_shortcut.patch'
--- debian/patches/64_restore_terminal_keyboard_shortcut.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/64_restore_terminal_keyboard_shortcut.patch 2014-05-06 09:05:46 +0000
@@ -0,0 +1,13 @@
1Index: gnome-control-center-3.4.2/panels/keyboard/01-launchers.xml.in
2===================================================================
3--- gnome-control-center-3.4.2.orig/panels/keyboard/01-launchers.xml.in 2011-08-25 11:09:31.000000000 -0400
4+++ gnome-control-center-3.4.2/panels/keyboard/01-launchers.xml.in 2012-08-25 23:34:01.889092065 -0400
5@@ -7,6 +7,8 @@
6
7 <KeyListEntry name="email" _description="Launch email client"/>
8
9+ <KeyListEntry name="terminal" _description="Launch terminal"/>
10+
11 <KeyListEntry name="www" _description="Launch web browser"/>
12
13 <KeyListEntry name="home" _description="Home folder"/>
014
=== removed file 'debian/patches/64_restore_terminal_keyboard_shortcut.patch'
--- debian/patches/64_restore_terminal_keyboard_shortcut.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/64_restore_terminal_keyboard_shortcut.patch 1970-01-01 00:00:00 +0000
@@ -1,13 +0,0 @@
1Index: gnome-control-center-3.4.2/panels/keyboard/01-launchers.xml.in
2===================================================================
3--- gnome-control-center-3.4.2.orig/panels/keyboard/01-launchers.xml.in 2011-08-25 11:09:31.000000000 -0400
4+++ gnome-control-center-3.4.2/panels/keyboard/01-launchers.xml.in 2012-08-25 23:34:01.889092065 -0400
5@@ -7,6 +7,8 @@
6
7 <KeyListEntry name="email" _description="Launch email client"/>
8
9+ <KeyListEntry name="terminal" _description="Launch terminal"/>
10+
11 <KeyListEntry name="www" _description="Launch web browser"/>
12
13 <KeyListEntry name="home" _description="Home folder"/>
140
=== removed file 'debian/patches/90_force_fallback.patch'
--- debian/patches/90_force_fallback.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/90_force_fallback.patch 1970-01-01 00:00:00 +0000
@@ -1,22 +0,0 @@
1Index: b/panels/info/info.ui
2===================================================================
3--- a/panels/info/info.ui
4+++ b/panels/info/info.ui
5@@ -1191,7 +1191,7 @@
6 </child>
7 <child>
8 <object class="GtkLabel" id="fallback-label">
9- <property name="visible">True</property>
10+ <property name="visible">False</property>
11 <property name="can_focus">False</property>
12 <property name="xalign">1</property>
13 <property name="label" translatable="yes" comments="Hardware is not able to run GNOME 3's shell, so we might want to force running the 'Fallback' experience.">Forced _Fallback Mode</property>
14@@ -1240,7 +1240,7 @@
15 </child>
16 <child>
17 <object class="GtkBox" id="graphics_fallback_switch_box">
18- <property name="visible">True</property>
19+ <property name="visible">False</property>
20 <property name="can_focus">False</property>
21 <property name="halign">start</property>
22 <property name="valign">center</property>
230
=== removed file 'debian/patches/91_unity_no_printing_panel.patch'
--- debian/patches/91_unity_no_printing_panel.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/91_unity_no_printing_panel.patch 1970-01-01 00:00:00 +0000
@@ -1,12 +0,0 @@
1diff -Nur gnome-control-center-3.6.3/panels/printers/gnome-printers-panel.desktop.in.in gnome-control-center-3.6.3.new/panels/printers/gnome-printers-panel.desktop.in.in
2--- gnome-control-center-3.6.3/panels/printers/gnome-printers-panel.desktop.in.in 2013-03-19 11:48:12.950319345 +0100
3+++ gnome-control-center-3.6.3.new/panels/printers/gnome-printers-panel.desktop.in.in 2013-03-19 11:47:56.902318811 +0100
4@@ -8,7 +8,7 @@
5 StartupNotify=true
6 # The X-GNOME-Settings-Panel is necessary to show in the main shell UI
7 Categories=GNOME;GTK;Settings;HardwareSettings;X-GNOME-Settings-Panel;
8-OnlyShowIn=GNOME;Unity;
9+OnlyShowIn=GNOME;
10 X-GNOME-Settings-Panel=printers
11 # Translators: those are keywords for the printing control-center panel
12 _Keywords=Printer;Queue;Print;Paper;Ink;Toner;
130
=== added file 'debian/patches/92_ubuntu_system_proxy.patch'
--- debian/patches/92_ubuntu_system_proxy.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/92_ubuntu_system_proxy.patch 2014-05-06 09:05:46 +0000
@@ -0,0 +1,213 @@
1--- a/panels/network/net-proxy.c
2+++ b/panels/network/net-proxy.c
3@@ -25,8 +25,14 @@
4 #include <glib/gi18n.h>
5 #include <gio/gio.h>
6
7+#include <grp.h>
8+#include <unistd.h>
9+#include <gdesktop-enums.h>
10+
11 #include "net-proxy.h"
12
13+
14+
15 #define NET_PROXY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NET_TYPE_PROXY, NetProxyPrivate))
16
17 struct _NetProxyPrivate
18@@ -306,6 +312,148 @@
19 return g_variant_builder_end (&builder);
20 }
21
22+
23+static gboolean
24+ubuntu_is_in_admin_group (int id_group)
25+{
26+ gid_t groups [1024];
27+ int i, ngroups;
28+
29+ ngroups = getgroups (1024, groups);
30+ if (ngroups < 0) {
31+ perror ("getgroups");
32+ return FALSE;
33+ }
34+
35+ for (i = 0; i < ngroups; ++i) {
36+ if (groups[i] == id_group)
37+ return TRUE;
38+ }
39+
40+ return FALSE;
41+}
42+
43+static gboolean
44+ubuntu_is_admin ()
45+{
46+ struct group *admin_group;
47+
48+ admin_group = getgrnam ("admin");
49+ if (admin_group != NULL && ubuntu_is_in_admin_group (admin_group->gr_gid))
50+ return TRUE;
51+
52+ admin_group = getgrnam ("sudo");
53+ if (admin_group != NULL && ubuntu_is_in_admin_group (admin_group->gr_gid))
54+ return TRUE;
55+
56+ return FALSE;
57+}
58+
59+static void
60+ubuntu_reset_system_proxy (GDBusProxy *proxy, const gchar *protocol)
61+{
62+ GVariant *result;
63+ GError *error = NULL;
64+
65+ result = g_dbus_proxy_call_sync (proxy, "set_proxy",
66+ g_variant_new ("(ss)", protocol, ""),
67+ G_DBUS_CALL_FLAGS_NONE,
68+ -1, NULL, &error);
69+ if (result)
70+ g_variant_unref (result);
71+ else {
72+ g_warning ("Error while calling set_proxy for %s protocol: %s", protocol, error->message);
73+ g_error_free (error);
74+ }
75+}
76+
77+static void
78+ubuntu_set_proxy_for_protocol (GDBusProxy *proxy, const gchar *protocol, GSettings *settings)
79+{
80+ GVariant *result;
81+ gchar *proxy_str, *host;
82+ GError *error = NULL;
83+ gint port;
84+
85+ host = g_settings_get_string (settings, "host");
86+ port = g_settings_get_int (settings, "port");
87+
88+ if (host && *host == '\0') {
89+ ubuntu_reset_system_proxy (proxy, protocol);
90+ } else {
91+ proxy_str = g_strdup_printf ("%s://%s:%i/", protocol, host, port);
92+
93+ result = g_dbus_proxy_call_sync (proxy, "set_proxy",
94+ g_variant_new ("(ss)", protocol, proxy_str),
95+ G_DBUS_CALL_FLAGS_NONE,
96+ -1, NULL, &error);
97+ if (result)
98+ g_variant_unref (result);
99+ else {
100+ g_warning ("Error while calling set_proxy for %s protocol: %s", protocol, error->message);
101+ g_error_free (error);
102+ }
103+ g_free (proxy_str);
104+ }
105+
106+ /* Free memory */
107+ g_free (host);
108+ g_object_unref (settings);
109+}
110+
111+static void
112+ubuntu_on_proxy_apply_system_settings (GtkButton *button, gpointer user_data)
113+{
114+ GDBusConnection *bus;
115+ GDBusProxy *dbus_proxy;
116+ GError *error;
117+ GDesktopProxyMode proxy_mode;
118+ NetProxy *proxy = NET_PROXY (user_data);
119+
120+ error = NULL;
121+ bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
122+ if (!bus) {
123+ g_warning ("Could not retrieve system bus: %s", error->message);
124+ g_error_free (error);
125+
126+ return;
127+ }
128+
129+ dbus_proxy = g_dbus_proxy_new_sync (bus, 0, NULL,
130+ "com.ubuntu.SystemService",
131+ "/",
132+ "com.ubuntu.SystemService",
133+ NULL,
134+ &error);
135+ if (!dbus_proxy) {
136+ g_warning ("Could not retrieve bus object: %s", error->message);
137+ g_error_free (error);
138+
139+ return;
140+ }
141+
142+ /* Retrieve the current settings */
143+ proxy_mode = g_settings_get_enum (proxy->priv->settings, "mode");
144+ switch (proxy_mode) {
145+ case G_DESKTOP_PROXY_MODE_AUTO:
146+ case G_DESKTOP_PROXY_MODE_NONE:
147+ ubuntu_reset_system_proxy (dbus_proxy, "http");
148+ ubuntu_reset_system_proxy (dbus_proxy, "https");
149+ ubuntu_reset_system_proxy (dbus_proxy, "ftp");
150+ ubuntu_reset_system_proxy (dbus_proxy, "socks");
151+ break;
152+ case G_DESKTOP_PROXY_MODE_MANUAL:
153+ ubuntu_set_proxy_for_protocol (dbus_proxy, "http", g_settings_get_child (proxy->priv->settings, "http"));
154+ ubuntu_set_proxy_for_protocol (dbus_proxy, "https", g_settings_get_child (proxy->priv->settings, "https"));
155+ ubuntu_set_proxy_for_protocol (dbus_proxy, "ftp", g_settings_get_child (proxy->priv->settings, "ftp"));
156+ ubuntu_set_proxy_for_protocol (dbus_proxy, "socks", g_settings_get_child (proxy->priv->settings, "socks"));
157+ break;
158+ }
159+
160+ /* Free memory */
161+ g_object_unref (dbus_proxy);
162+}
163+
164 static void
165 net_proxy_init (NetProxy *proxy)
166 {
167@@ -427,6 +575,13 @@
168 G_SETTINGS_BIND_DEFAULT, get_ignore_hosts, set_ignore_hosts,
169 NULL, NULL);
170
171+ /* Ubuntu button for system proxy settings */
172+ if (ubuntu_is_admin ()) {
173+ g_signal_connect (G_OBJECT (gtk_builder_get_object (proxy->priv->builder, "system_proxy_button")), "clicked",
174+ G_CALLBACK (ubuntu_on_proxy_apply_system_settings), proxy);
175+ } else
176+ gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (proxy->priv->builder, "system_proxy_button")));
177+
178 /* hide the switch until we get some more detail in the mockup */
179 widget = GTK_WIDGET (gtk_builder_get_object (proxy->priv->builder,
180 "device_proxy_off_switch"));
181--- a/panels/network/network-proxy.ui
182+++ b/panels/network/network-proxy.ui
183@@ -229,6 +229,21 @@
184 </packing>
185 </child>
186 <child>
187+ <object class="GtkButton" id="system_proxy_button">
188+ <property name="label" translatable="yes">Apply system wide</property>
189+ <property name="visible">True</property>
190+ <property name="can_focus">True</property>
191+ <property name="receives_default">True</property>
192+ <property name="use_action_appearance">False</property>
193+ </object>
194+ <packing>
195+ <property name="left_attach">0</property>
196+ <property name="top_attach">8</property>
197+ <property name="width">3</property>
198+ <property name="height">1</property>
199+ </packing>
200+ </child>
201+ <child>
202 <object class="GtkLabel" id="label_proxy_warning">
203 <property name="visible">False</property>
204 <property name="can_focus">False</property>
205@@ -239,7 +254,7 @@
206 </object>
207 <packing>
208 <property name="left_attach">0</property>
209- <property name="top_attach">8</property>
210+ <property name="top_attach">9</property>
211 <property name="width">3</property>
212 <property name="height">1</property>
213 </packing>
0214
=== removed file 'debian/patches/92_ubuntu_system_proxy.patch'
--- debian/patches/92_ubuntu_system_proxy.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/92_ubuntu_system_proxy.patch 1970-01-01 00:00:00 +0000
@@ -1,217 +0,0 @@
1Index: gnome-control-center-3.6.3/panels/network/net-proxy.c
2===================================================================
3--- gnome-control-center-3.6.3.orig/panels/network/net-proxy.c 2013-04-16 16:14:41.159226157 +0200
4+++ gnome-control-center-3.6.3/panels/network/net-proxy.c 2013-04-16 16:14:59.847226780 +0200
5@@ -25,8 +25,14 @@
6 #include <glib/gi18n.h>
7 #include <gio/gio.h>
8
9+#include <grp.h>
10+#include <unistd.h>
11+#include <gdesktop-enums.h>
12+
13 #include "net-proxy.h"
14
15+
16+
17 #define NET_PROXY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NET_TYPE_PROXY, NetProxyPrivate))
18
19 struct _NetProxyPrivate
20@@ -250,6 +256,148 @@
21 g_type_class_add_private (klass, sizeof (NetProxyPrivate));
22 }
23
24+
25+static gboolean
26+ubuntu_is_in_admin_group (int id_group)
27+{
28+ gid_t groups [1024];
29+ int i, ngroups;
30+
31+ ngroups = getgroups (1024, groups);
32+ if (ngroups < 0) {
33+ perror ("getgroups");
34+ return FALSE;
35+ }
36+
37+ for (i = 0; i < ngroups; ++i) {
38+ if (groups[i] == id_group)
39+ return TRUE;
40+ }
41+
42+ return FALSE;
43+}
44+
45+static gboolean
46+ubuntu_is_admin ()
47+{
48+ struct group *admin_group;
49+
50+ admin_group = getgrnam ("admin");
51+ if (admin_group != NULL && ubuntu_is_in_admin_group (admin_group->gr_gid))
52+ return TRUE;
53+
54+ admin_group = getgrnam ("sudo");
55+ if (admin_group != NULL && ubuntu_is_in_admin_group (admin_group->gr_gid))
56+ return TRUE;
57+
58+ return FALSE;
59+}
60+
61+static void
62+ubuntu_reset_system_proxy (GDBusProxy *proxy, const gchar *protocol)
63+{
64+ GVariant *result;
65+ GError *error = NULL;
66+
67+ result = g_dbus_proxy_call_sync (proxy, "set_proxy",
68+ g_variant_new ("(ss)", protocol, ""),
69+ G_DBUS_CALL_FLAGS_NONE,
70+ -1, NULL, &error);
71+ if (result)
72+ g_variant_unref (result);
73+ else {
74+ g_warning ("Error while calling set_proxy for %s protocol: %s", protocol, error->message);
75+ g_error_free (error);
76+ }
77+}
78+
79+static void
80+ubuntu_set_proxy_for_protocol (GDBusProxy *proxy, const gchar *protocol, GSettings *settings)
81+{
82+ GVariant *result;
83+ gchar *proxy_str, *host;
84+ GError *error = NULL;
85+ gint port;
86+
87+ host = g_settings_get_string (settings, "host");
88+ port = g_settings_get_int (settings, "port");
89+
90+ if (host && *host == '\0') {
91+ ubuntu_reset_system_proxy (proxy, protocol);
92+ } else {
93+ proxy_str = g_strdup_printf ("%s://%s:%i/", protocol, host, port);
94+
95+ result = g_dbus_proxy_call_sync (proxy, "set_proxy",
96+ g_variant_new ("(ss)", protocol, proxy_str),
97+ G_DBUS_CALL_FLAGS_NONE,
98+ -1, NULL, &error);
99+ if (result)
100+ g_variant_unref (result);
101+ else {
102+ g_warning ("Error while calling set_proxy for %s protocol: %s", protocol, error->message);
103+ g_error_free (error);
104+ }
105+ g_free (proxy_str);
106+ }
107+
108+ /* Free memory */
109+ g_free (host);
110+ g_object_unref (settings);
111+}
112+
113+static void
114+ubuntu_on_proxy_apply_system_settings (GtkButton *button, gpointer user_data)
115+{
116+ GDBusConnection *bus;
117+ GDBusProxy *dbus_proxy;
118+ GError *error;
119+ GDesktopProxyMode proxy_mode;
120+ NetProxy *proxy = NET_PROXY (user_data);
121+
122+ error = NULL;
123+ bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
124+ if (!bus) {
125+ g_warning ("Could not retrieve system bus: %s", error->message);
126+ g_error_free (error);
127+
128+ return;
129+ }
130+
131+ dbus_proxy = g_dbus_proxy_new_sync (bus, 0, NULL,
132+ "com.ubuntu.SystemService",
133+ "/",
134+ "com.ubuntu.SystemService",
135+ NULL,
136+ &error);
137+ if (!dbus_proxy) {
138+ g_warning ("Could not retrieve bus object: %s", error->message);
139+ g_error_free (error);
140+
141+ return;
142+ }
143+
144+ /* Retrieve the current settings */
145+ proxy_mode = g_settings_get_enum (proxy->priv->settings, "mode");
146+ switch (proxy_mode) {
147+ case G_DESKTOP_PROXY_MODE_AUTO:
148+ case G_DESKTOP_PROXY_MODE_NONE:
149+ ubuntu_reset_system_proxy (dbus_proxy, "http");
150+ ubuntu_reset_system_proxy (dbus_proxy, "https");
151+ ubuntu_reset_system_proxy (dbus_proxy, "ftp");
152+ ubuntu_reset_system_proxy (dbus_proxy, "socks");
153+ break;
154+ case G_DESKTOP_PROXY_MODE_MANUAL:
155+ ubuntu_set_proxy_for_protocol (dbus_proxy, "http", g_settings_get_child (proxy->priv->settings, "http"));
156+ ubuntu_set_proxy_for_protocol (dbus_proxy, "https", g_settings_get_child (proxy->priv->settings, "https"));
157+ ubuntu_set_proxy_for_protocol (dbus_proxy, "ftp", g_settings_get_child (proxy->priv->settings, "ftp"));
158+ ubuntu_set_proxy_for_protocol (dbus_proxy, "socks", g_settings_get_child (proxy->priv->settings, "socks"));
159+ break;
160+ }
161+
162+ /* Free memory */
163+ g_object_unref (dbus_proxy);
164+}
165+
166 static void
167 net_proxy_init (NetProxy *proxy)
168 {
169@@ -369,6 +517,13 @@
170 "label_proxy_status"));
171 gtk_label_set_label (GTK_LABEL (widget), "");
172
173+ /* Ubuntu button for system proxy settings */
174+ if (ubuntu_is_admin ()) {
175+ g_signal_connect (G_OBJECT (gtk_builder_get_object (proxy->priv->builder, "system_proxy_button")), "clicked",
176+ G_CALLBACK (ubuntu_on_proxy_apply_system_settings), proxy);
177+ } else
178+ gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (proxy->priv->builder, "system_proxy_button")));
179+
180 /* hide the switch until we get some more detail in the mockup */
181 widget = GTK_WIDGET (gtk_builder_get_object (proxy->priv->builder,
182 "device_proxy_off_switch"));
183Index: gnome-control-center-3.6.3/panels/network/network-proxy.ui
184===================================================================
185--- gnome-control-center-3.6.3.orig/panels/network/network-proxy.ui 2013-04-16 16:14:41.159226157 +0200
186+++ gnome-control-center-3.6.3/panels/network/network-proxy.ui 2013-04-16 16:14:41.155226157 +0200
187@@ -280,6 +280,21 @@
188 </packing>
189 </child>
190 <child>
191+ <object class="GtkButton" id="system_proxy_button">
192+ <property name="label" translatable="yes">Apply system wide</property>
193+ <property name="visible">True</property>
194+ <property name="can_focus">True</property>
195+ <property name="receives_default">True</property>
196+ <property name="use_action_appearance">False</property>
197+ </object>
198+ <packing>
199+ <property name="left_attach">0</property>
200+ <property name="top_attach">7</property>
201+ <property name="width">3</property>
202+ <property name="height">1</property>
203+ </packing>
204+ </child>
205+ <child>
206 <object class="GtkLabel" id="label_proxy_warning">
207 <property name="visible">True</property>
208 <property name="can_focus">False</property>
209@@ -290,7 +305,7 @@
210 </object>
211 <packing>
212 <property name="left_attach">0</property>
213- <property name="top_attach">7</property>
214+ <property name="top_attach">8</property>
215 <property name="width">3</property>
216 <property name="height">1</property>
217 </packing>
2180
=== removed file 'debian/patches/97_unity_power_ui.patch'
--- debian/patches/97_unity_power_ui.patch 2013-10-18 14:33:16 +0000
+++ debian/patches/97_unity_power_ui.patch 1970-01-01 00:00:00 +0000
@@ -1,160 +0,0 @@
1Description: When indicator-power is installed, display an extra option in the power panel.
2Forwarded: not-needed
3
4Index: b/panels/power/cc-power-panel.c
5===================================================================
6--- a/panels/power/cc-power-panel.c
7+++ b/panels/power/cc-power-panel.c
8@@ -39,6 +39,7 @@
9 {
10 GSettings *lock_settings;
11 GSettings *gsd_settings;
12+ GSettings *power_settings;
13 GCancellable *cancellable;
14 GtkBuilder *builder;
15 GDBusProxy *proxy;
16@@ -89,6 +90,11 @@
17 g_object_unref (priv->gsd_settings);
18 priv->gsd_settings = NULL;
19 }
20+ if (priv->power_settings)
21+ {
22+ g_object_unref (priv->power_settings);
23+ priv->power_settings = NULL;
24+ }
25 if (priv->cancellable != NULL)
26 {
27 g_cancellable_cancel (priv->cancellable);
28@@ -1112,6 +1118,37 @@
29
30 widget = WID (self->priv->builder, "vbox_power");
31 gtk_widget_reparent (widget, (GtkWidget *) self);
32+
33+ /* Set up Unity-specific controls */
34+ /* References:
35+ * https://wiki.ubuntu.com/Power
36+ * https://docs.google.com/document/d/1ILTJDiDCd25Npt2AmgzF8aOnZZECxTfM0hvsbWT2BxA/edit?pli=1#heading=h.i5lg1g344bsb
37+ */
38+ // First check the schema is installed
39+ GSettingsSchemaSource *schema_source = g_settings_schema_source_ref (
40+ g_settings_schema_source_get_default ());
41+ GSettingsSchema *schema = g_settings_schema_source_lookup (
42+ schema_source,
43+ "com.canonical.indicator.power",
44+ TRUE);
45+ g_settings_schema_source_unref (schema_source);
46+
47+ if (schema)
48+ {
49+ widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
50+ "combobox_indicator"));
51+ self->priv->power_settings = g_settings_new ("com.canonical.indicator.power");
52+ g_settings_bind (self->priv->power_settings, "icon-policy",
53+ widget, "active-id", G_SETTINGS_BIND_DEFAULT);
54+ g_settings_schema_unref (schema);
55+ }
56+ else
57+ {
58+ gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (self->priv->builder, "separator_indicator")));
59+ gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (self->priv->builder, "label_indicator")));
60+ gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (self->priv->builder, "combobox_indicator")));
61+ }
62+
63 }
64
65 void
66Index: b/panels/power/power.ui
67===================================================================
68--- a/panels/power/power.ui
69+++ b/panels/power/power.ui
70@@ -75,6 +75,28 @@
71 </row>
72 </data>
73 </object>
74+ <object class="GtkListStore" id="liststore_indicator">
75+ <columns>
76+ <!-- column-name name -->
77+ <column type="gchararray"/>
78+ <!-- column-name value -->
79+ <column type="gchararray"/>
80+ </columns>
81+ <data>
82+ <row>
83+ <col id="0" translatable="yes">When battery is present</col>
84+ <col id="1">present</col>
85+ </row>
86+ <row>
87+ <col id="0" translatable="yes">When battery is charging/in use</col>
88+ <col id="1">charge</col>
89+ </row>
90+ <row>
91+ <col id="0" translatable="yes">Never</col>
92+ <col id="1">never</col>
93+ </row>
94+ </data>
95+ </object>
96 <object class="GtkWindow" id="window_power">
97 <property name="can_focus">False</property>
98 <property name="resizable">False</property>
99@@ -238,6 +260,48 @@
100 <property name="top_attach">3</property>
101 </packing>
102 </child>
103+ <child>
104+ <object class="GtkSeparator" id="separator_indicator">
105+ <property name="visible">True</property>
106+ <property name="can_focus">False</property>
107+ </object>
108+ <packing>
109+ <property name="left_attach">0</property>
110+ <property name="top_attach">4</property>
111+ <property name="width">4</property>
112+ <property name="height">1</property>
113+ </packing>
114+ </child>
115+ <child>
116+ <object class="GtkLabel" id="label_indicator">
117+ <property name="visible">True</property>
118+ <property name="can_focus">False</property>
119+ <property name="halign">end</property>
120+ <property name="label" translatable="yes">Show battery status in the _menu bar</property>
121+ <property name="use_underline">True</property>
122+ </object>
123+ <packing>
124+ <property name="left_attach">0</property>
125+ <property name="top_attach">5</property>
126+ </packing>
127+ </child>
128+ <child>
129+ <object class="GtkComboBoxText" id="combobox_indicator">
130+ <property name="visible">True</property>
131+ <property name="can_focus">False</property>
132+ <property name="model">liststore_indicator</property>
133+ <property name="hexpand">True</property>
134+ <accessibility>
135+ <relation type="labelled-by" target="label_indicator"/>
136+ </accessibility>
137+ </object>
138+ <packing>
139+ <property name="left_attach">1</property>
140+ <property name="top_attach">5</property>
141+ <property name="width">2</property>
142+ <property name="height">1</property>
143+ </packing>
144+ </child>
145 </object>
146 <packing>
147 <property name="expand">False</property>
148Index: b/configure.ac
149===================================================================
150--- a/configure.ac
151+++ b/configure.ac
152@@ -94,7 +94,7 @@
153 dnl Check that we meet the dependencies
154 dnl ==============================================
155
156-GLIB_REQUIRED_VERSION=2.31.0
157+GLIB_REQUIRED_VERSION=2.31.2
158 GTK_REQUIRED_VERSION=3.5.13
159 PA_REQUIRED_VERSION=2.0
160 CANBERRA_REQUIRED_VERSION=0.13
1610
=== removed file 'debian/patches/98_default_sound_theme.patch'
--- debian/patches/98_default_sound_theme.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/98_default_sound_theme.patch 1970-01-01 00:00:00 +0000
@@ -1,16 +0,0 @@
1# Description: the default sound theme is "ubuntu" for us
2# UbuntuSpecific: yes
3#
4Index: b/panels/sound/gvc-sound-theme-chooser.c
5===================================================================
6--- a/panels/sound/gvc-sound-theme-chooser.c
7+++ b/panels/sound/gvc-sound-theme-chooser.c
8@@ -67,7 +67,7 @@
9 #define DEFAULT_ALERT_ID "__default"
10 #define CUSTOM_THEME_NAME "__custom"
11 #define NO_SOUNDS_THEME_NAME "__no_sounds"
12-#define DEFAULT_THEME "freedesktop"
13+#define DEFAULT_THEME "ubuntu"
14
15 enum {
16 THEME_DISPLAY_COL,
170
=== added file 'debian/patches/99_add_lock-on-suspend.patch'
--- debian/patches/99_add_lock-on-suspend.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/99_add_lock-on-suspend.patch 2014-05-06 09:05:46 +0000
@@ -0,0 +1,75 @@
1Description: Add a new preference to lock the screen when the system suspends.
2Author: Marc Deslauriers <marc.deslauriers@canonical.com>
3Forwarded: no, likely a Ubuntu-specific preference
4Bug-Ubuntu: https://bugs.launchpad.net/bugs/938076
5
6From: Tim Lunn <tim@feathertop.org>
7Date: Mon, 3 Jun 2013 17:27:45 +1000
8Subject: [PATCH] ubuntu lock on suspend
9
10---
11 panels/privacy/cc-privacy-panel.c | 5 +++++
12 panels/privacy/privacy.ui | 31 +++++++++++++++++++++++++++++++
13 2 files changed, 36 insertions(+)
14
15diff --git a/panels/privacy/cc-privacy-panel.c b/panels/privacy/cc-privacy-panel.c
16index d92b9e4..fb1be4c 100644
17--- a/panels/privacy/cc-privacy-panel.c
18+++ b/panels/privacy/cc-privacy-panel.c
19@@ -299,6 +299,11 @@ add_screen_lock (CcPrivacyPanel *self)
20 g_settings_bind (self->priv->notification_settings, "show-in-lock-screen",
21 w, "active",
22 G_SETTINGS_BIND_DEFAULT);
23+
24+ w = GTK_WIDGET (gtk_builder_get_object (self->priv->builder, "screen_lock_suspend"));
25+ g_settings_bind (self->priv->lock_settings, "ubuntu-lock-on-suspend",
26+ w, "active",
27+ G_SETTINGS_BIND_DEFAULT);
28 }
29
30 static void
31diff --git a/panels/privacy/privacy.ui b/panels/privacy/privacy.ui
32index ec62b70..b5d43f4 100644
33--- a/panels/privacy/privacy.ui
34+++ b/panels/privacy/privacy.ui
35@@ -612,6 +612,37 @@
36 <property name="height">1</property>
37 </packing>
38 </child>
39+ <child>
40+ <object class="GtkLabel" id="label8">
41+ <property name="visible">True</property>
42+ <property name="can_focus">False</property>
43+ <property name="xalign">0</property>
44+ <property name="hexpand">True</property>
45+ <property name="label" translatable="yes">Lock Screen on Suspend</property>
46+ <property name="use_underline">True</property>
47+ <property name="mnemonic_widget">screen_lock_suspend</property>
48+ </object>
49+ <packing>
50+ <property name="left_attach">0</property>
51+ <property name="top_attach">3</property>
52+ <property name="width">1</property>
53+ <property name="height">1</property>
54+ </packing>
55+ </child>
56+ <child>
57+ <object class="GtkSwitch" id="screen_lock_suspend">
58+ <property name="visible">True</property>
59+ <property name="can_focus">True</property>
60+ <property name="halign">end</property>
61+ <property name="valign">center</property>
62+ </object>
63+ <packing>
64+ <property name="left_attach">1</property>
65+ <property name="top_attach">3</property>
66+ <property name="width">1</property>
67+ <property name="height">1</property>
68+ </packing>
69+ </child>
70 </object>
71 <packing>
72 <property name="expand">False</property>
73--
741.8.1.2
75
076
=== removed file 'debian/patches/99_add_lock-on-suspend.patch'
--- debian/patches/99_add_lock-on-suspend.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/99_add_lock-on-suspend.patch 1970-01-01 00:00:00 +0000
@@ -1,77 +0,0 @@
1Description: Add a new preference to lock the screen when the system suspends.
2Author: Marc Deslauriers <marc.deslauriers@canonical.com>
3Forwarded: no, likely a Ubuntu-specific preference
4Bug-Ubuntu: https://bugs.launchpad.net/bugs/938076
5
6Index: b/panels/screen/cc-screen-panel.c
7===================================================================
8--- a/panels/screen/cc-screen-panel.c
9+++ b/panels/screen/cc-screen-panel.c
10@@ -540,6 +540,13 @@
11
12 update_lock_screen_sensitivity (self);
13
14+ /* bind the screen lock suspend checkbutton */
15+ widget = WID ("screen_lock_suspend_checkbutton");
16+ g_settings_bind (self->priv->lock_settings,
17+ "ubuntu-lock-on-suspend",
18+ widget, "active",
19+ G_SETTINGS_BIND_DEFAULT);
20+
21 widget = WID ("screen_vbox");
22 gtk_widget_reparent (widget, (GtkWidget *) self);
23 g_object_set (self, "valign", GTK_ALIGN_START, NULL);
24Index: b/panels/screen/screen.ui
25===================================================================
26--- a/panels/screen/screen.ui
27+++ b/panels/screen/screen.ui
28@@ -299,6 +299,31 @@
29 </packing>
30 </child>
31 <child>
32+ <object class="GtkHBox" id="screen_suspend_hbox">
33+ <property name="visible">True</property>
34+ <property name="can_focus">False</property>
35+ <property name="spacing">6</property>
36+ <child>
37+ <object class="GtkCheckButton" id="screen_lock_suspend_checkbutton">
38+ <property name="label" translatable="yes">Require my password when waking from suspend</property>
39+ <property name="use_action_appearance">False</property>
40+ <property name="visible">True</property>
41+ <property name="can_focus">True</property>
42+ </object>
43+ <packing>
44+ <property name="expand">False</property>
45+ <property name="fill">False</property>
46+ <property name="position">0</property>
47+ </packing>
48+ </child>
49+ </object>
50+ <packing>
51+ <property name="expand">False</property>
52+ <property name="fill">False</property>
53+ <property name="position">2</property>
54+ </packing>
55+ </child>
56+ <child>
57 <object class="GtkHBox" id="hbox2">
58 <property name="can_focus">False</property>
59 <property name="no_show_all">True</property>
60@@ -340,7 +365,7 @@
61 <packing>
62 <property name="expand">True</property>
63 <property name="fill">True</property>
64- <property name="position">2</property>
65+ <property name="position">3</property>
66 </packing>
67 </child>
68 <child>
69@@ -357,7 +382,7 @@
70 <packing>
71 <property name="expand">True</property>
72 <property name="fill">True</property>
73- <property name="position">3</property>
74+ <property name="position">4</property>
75 </packing>
76 </child>
77 </object>
780
=== removed file 'debian/patches/accounts_fix_unsetting_icon.patch'
--- debian/patches/accounts_fix_unsetting_icon.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/accounts_fix_unsetting_icon.patch 1970-01-01 00:00:00 +0000
@@ -1,16 +0,0 @@
1# Upstream: https://bugzilla.gnome.org/show_bug.cgi?id=673841
2# Ubuntu: https://launchpad.net/bugs/978049
3#
4Index: gnome-control-center-3.6.2/panels/user-accounts/um-user.c
5===================================================================
6--- gnome-control-center-3.6.2.orig/panels/user-accounts/um-user.c 2012-11-01 20:44:03.426070880 -0400
7+++ gnome-control-center-3.6.2/panels/user-accounts/um-user.c 2012-11-01 20:44:03.442070879 -0400
8@@ -730,7 +730,7 @@
9 GVariant *result;
10 GError *error = NULL;
11
12- result = g_dbus_proxy_call_sync (user->proxy, "SetIconFile", g_variant_new ("(s)", icon_file), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
13+ result = g_dbus_proxy_call_sync (user->proxy, "SetIconFile", g_variant_new ("(s)", icon_file ? icon_file : ""), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
14 if (!result) {
15 g_warning ("SetIconFile call failed: %s", error->message);
16 g_error_free (error);
170
=== removed file 'debian/patches/classic_use_sound_indicator.patch'
--- debian/patches/classic_use_sound_indicator.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/classic_use_sound_indicator.patch 1970-01-01 00:00:00 +0000
@@ -1,10 +0,0 @@
1Index: b/panels/sound/data/gnome-sound-applet.desktop.in
2===================================================================
3--- a/panels/sound/data/gnome-sound-applet.desktop.in
4+++ b/panels/sound/data/gnome-sound-applet.desktop.in
5@@ -14,4 +14,4 @@
6 #X-GNOME-Autostart-Phase=Panel
7 X-GNOME-Autostart-Notify=true
8 AutostartCondition=GNOME3 if-session gnome-fallback
9-OnlyShowIn=GNOME;Unity;
10+OnlyShowIn=;
110
=== removed file 'debian/patches/deal_with_null_ssid.patch'
--- debian/patches/deal_with_null_ssid.patch 2012-11-01 09:53:43 +0000
+++ debian/patches/deal_with_null_ssid.patch 1970-01-01 00:00:00 +0000
@@ -1,33 +0,0 @@
1From: Dan Williams <dcbw@redhat.com>
2Subject: Avoid crashing when SSIDs are NULL.
3Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/908670
4Bug: https://bugzilla.gnome.org/show_bug.cgi?id=672922
5
6---
7 panels/network/cc-network-panel.c | 6 ++++++
8 1 file changed, 6 insertions(+)
9
10Index: gnome-control-center-3.5.2/panels/network/cc-network-panel.c
11===================================================================
12--- gnome-control-center-3.5.2.orig/panels/network/cc-network-panel.c 2012-06-08 16:49:24.888332382 +1200
13+++ gnome-control-center-3.5.2/panels/network/cc-network-panel.c 2012-06-08 17:00:13.600309923 +1200
14@@ -1128,13 +1128,19 @@
15 if (aps != NULL)
16 for (i = 0; i < aps->len; i++) {
17 ap = NM_ACCESS_POINT (g_ptr_array_index (aps, i));
18+
19+ /* Hidden SSIDs don't get shown in the list */
20 ssid = nm_access_point_get_ssid (ap);
21+ if (!ssid)
22+ continue;
23+
24 add_ap = TRUE;
25
26 /* get already added list */
27 for (j=0; j<aps_unique->len; j++) {
28 ap_tmp = NM_ACCESS_POINT (g_ptr_array_index (aps_unique, j));
29 ssid_tmp = nm_access_point_get_ssid (ap_tmp);
30+ g_assert (ssid_tmp);
31
32 /* is this the same type and data? */
33 if (nm_utils_same_ssid (ssid, ssid_tmp, TRUE)) {
340
=== removed file 'debian/patches/dont_download_local_image.patch'
--- debian/patches/dont_download_local_image.patch 2013-07-05 13:31:20 +0000
+++ debian/patches/dont_download_local_image.patch 1970-01-01 00:00:00 +0000
@@ -1,28 +0,0 @@
1From 7b7f35b172e8c604aa723a3cd414088563a7d490 Mon Sep 17 00:00:00 2001
2From: Ryan Lortie <desrt@desrt.ca>
3Date: Mon, 19 Mar 2012 12:55:31 -0400
4Subject: [PATCH] background: don't 'download' image files
5
6The code for downloading files from remote uris was being triggered in
7the case of adding a background image file via the file chooser. Don't
8set the 'source-url' attribute on the image in this case in order to
9avoid the problem.
10
11https://bugzilla.gnome.org/show_bug.cgi?id=672405
12---
13 panels/background/bg-pictures-source.c | 2 +-
14 1 files changed, 1 insertions(+), 1 deletions(-)
15
16Index: b/panels/background/bg-pictures-source.c
17===================================================================
18--- a/panels/background/bg-pictures-source.c
19+++ b/panels/background/bg-pictures-source.c
20@@ -335,7 +335,7 @@
21 "shading", G_DESKTOP_BACKGROUND_SHADING_SOLID,
22 "placement", G_DESKTOP_BACKGROUND_STYLE_ZOOM,
23 NULL);
24- if (source_uri != NULL)
25+ if (source_uri != NULL && !g_file_is_native (file))
26 g_object_set (G_OBJECT (item), "source-url", source_uri, NULL);
27
28 g_object_set_data (G_OBJECT (file), "item", item);
290
=== modified file 'debian/patches/gcc_not_in_unity.patch'
--- debian/patches/gcc_not_in_unity.patch 2014-03-04 18:20:22 +0000
+++ debian/patches/gcc_not_in_unity.patch 2014-05-06 09:05:46 +0000
@@ -1,7 +1,5 @@
1Index: gnome-control-center-3.6.3/panels/bluetooth/gnome-bluetooth-panel.desktop.in.in1--- a/panels/bluetooth/gnome-bluetooth-panel.desktop.in.in
2===================================================================2+++ b/panels/bluetooth/gnome-bluetooth-panel.desktop.in.in
3--- gnome-control-center-3.6.3.orig/panels/bluetooth/gnome-bluetooth-panel.desktop.in.in 2014-03-04 19:17:38.334473755 +0100
4+++ gnome-control-center-3.6.3/panels/bluetooth/gnome-bluetooth-panel.desktop.in.in 2014-03-04 19:17:38.322473754 +0100
5@@ -6,7 +6,7 @@3@@ -6,7 +6,7 @@
6 Terminal=false4 Terminal=false
7 Type=Application5 Type=Application
@@ -11,23 +9,19 @@
11 StartupNotify=true9 StartupNotify=true
12 X-GNOME-Bugzilla-Bugzilla=GNOME10 X-GNOME-Bugzilla-Bugzilla=GNOME
13 X-GNOME-Bugzilla-Product=gnome-bluetooth11 X-GNOME-Bugzilla-Product=gnome-bluetooth
14Index: gnome-control-center-3.6.3/panels/color/gnome-color-panel.desktop.in.in12--- a/panels/color/gnome-color-panel.desktop.in.in
15===================================================================13+++ b/panels/color/gnome-color-panel.desktop.in.in
16--- gnome-control-center-3.6.3.orig/panels/color/gnome-color-panel.desktop.in.in 2014-03-04 19:17:38.334473755 +0100
17+++ gnome-control-center-3.6.3/panels/color/gnome-color-panel.desktop.in.in 2014-03-04 19:17:38.322473754 +0100
18@@ -7,7 +7,7 @@14@@ -7,7 +7,7 @@
19 Type=Application15 Type=Application
20 StartupNotify=true16 StartupNotify=true
21 Categories=GNOME;GTK;Settings;X-GNOME-Settings-Panel;HardwareSettings17 Categories=GNOME;GTK;Settings;X-GNOME-Settings-Panel;HardwareSettings;
22-OnlyShowIn=GNOME;Unity;18-OnlyShowIn=GNOME;Unity;
23+OnlyShowIn=GNOME;19+OnlyShowIn=GNOME
24 X-GNOME-Bugzilla-Bugzilla=GNOME20 X-GNOME-Bugzilla-Bugzilla=GNOME
25 X-GNOME-Bugzilla-Product=gnome-control-center21 X-GNOME-Bugzilla-Product=gnome-control-center
26 X-GNOME-Bugzilla-Component=color22 X-GNOME-Bugzilla-Component=color
27Index: gnome-control-center-3.6.3/panels/display/gnome-display-panel.desktop.in.in23--- a/panels/display/gnome-display-panel.desktop.in.in
28===================================================================24+++ b/panels/display/gnome-display-panel.desktop.in.in
29--- gnome-control-center-3.6.3.orig/panels/display/gnome-display-panel.desktop.in.in 2014-03-04 19:17:38.334473755 +0100
30+++ gnome-control-center-3.6.3/panels/display/gnome-display-panel.desktop.in.in 2014-03-04 19:17:38.322473754 +0100
31@@ -7,7 +7,7 @@25@@ -7,7 +7,7 @@
32 Type=Application26 Type=Application
33 StartupNotify=true27 StartupNotify=true
@@ -37,10 +31,8 @@
37 X-GNOME-Bugzilla-Bugzilla=GNOME31 X-GNOME-Bugzilla-Bugzilla=GNOME
38 X-GNOME-Bugzilla-Product=gnome-control-center32 X-GNOME-Bugzilla-Product=gnome-control-center
39 X-GNOME-Bugzilla-Component=Screen resolution33 X-GNOME-Bugzilla-Component=Screen resolution
40Index: gnome-control-center-3.6.3/panels/info/gnome-info-panel.desktop.in.in34--- a/panels/info/gnome-info-panel.desktop.in.in
41===================================================================35+++ b/panels/info/gnome-info-panel.desktop.in.in
42--- gnome-control-center-3.6.3.orig/panels/info/gnome-info-panel.desktop.in.in 2014-03-04 19:17:38.334473755 +0100
43+++ gnome-control-center-3.6.3/panels/info/gnome-info-panel.desktop.in.in 2014-03-04 19:17:38.326473755 +0100
44@@ -7,7 +7,7 @@36@@ -7,7 +7,7 @@
45 Type=Application37 Type=Application
46 StartupNotify=true38 StartupNotify=true
@@ -50,10 +42,8 @@
50 X-GNOME-Bugzilla-Bugzilla=GNOME42 X-GNOME-Bugzilla-Bugzilla=GNOME
51 X-GNOME-Bugzilla-Product=gnome-control-center43 X-GNOME-Bugzilla-Product=gnome-control-center
52 X-GNOME-Bugzilla-Component=info44 X-GNOME-Bugzilla-Component=info
53Index: gnome-control-center-3.6.3/panels/keyboard/gnome-keyboard-panel.desktop.in.in45--- a/panels/keyboard/gnome-keyboard-panel.desktop.in.in
54===================================================================46+++ b/panels/keyboard/gnome-keyboard-panel.desktop.in.in
55--- gnome-control-center-3.6.3.orig/panels/keyboard/gnome-keyboard-panel.desktop.in.in 2014-03-04 19:17:38.334473755 +0100
56+++ gnome-control-center-3.6.3/panels/keyboard/gnome-keyboard-panel.desktop.in.in 2014-03-04 19:17:38.326473755 +0100
57@@ -7,7 +7,7 @@47@@ -7,7 +7,7 @@
58 Type=Application48 Type=Application
59 StartupNotify=true49 StartupNotify=true
@@ -63,10 +53,8 @@
63 X-GNOME-Bugzilla-Bugzilla=GNOME53 X-GNOME-Bugzilla-Bugzilla=GNOME
64 X-GNOME-Bugzilla-Product=gnome-control-center54 X-GNOME-Bugzilla-Product=gnome-control-center
65 X-GNOME-Bugzilla-Component=keyboard55 X-GNOME-Bugzilla-Component=keyboard
66Index: gnome-control-center-3.6.3/panels/mouse/gnome-mouse-panel.desktop.in.in56--- a/panels/mouse/gnome-mouse-panel.desktop.in.in
67===================================================================57+++ b/panels/mouse/gnome-mouse-panel.desktop.in.in
68--- gnome-control-center-3.6.3.orig/panels/mouse/gnome-mouse-panel.desktop.in.in 2014-03-04 19:17:38.334473755 +0100
69+++ gnome-control-center-3.6.3/panels/mouse/gnome-mouse-panel.desktop.in.in 2014-03-04 19:17:38.326473755 +0100
70@@ -7,7 +7,7 @@58@@ -7,7 +7,7 @@
71 Type=Application59 Type=Application
72 StartupNotify=true60 StartupNotify=true
@@ -76,10 +64,8 @@
76 X-GNOME-Bugzilla-Bugzilla=GNOME64 X-GNOME-Bugzilla-Bugzilla=GNOME
77 X-GNOME-Bugzilla-Product=gnome-control-center65 X-GNOME-Bugzilla-Product=gnome-control-center
78 X-GNOME-Bugzilla-Component=mouse66 X-GNOME-Bugzilla-Component=mouse
79Index: gnome-control-center-3.6.3/panels/network/gnome-network-panel.desktop.in.in67--- a/panels/network/gnome-network-panel.desktop.in.in
80===================================================================68+++ b/panels/network/gnome-network-panel.desktop.in.in
81--- gnome-control-center-3.6.3.orig/panels/network/gnome-network-panel.desktop.in.in 2014-03-04 19:17:38.334473755 +0100
82+++ gnome-control-center-3.6.3/panels/network/gnome-network-panel.desktop.in.in 2014-03-04 19:17:38.326473755 +0100
83@@ -7,7 +7,7 @@69@@ -7,7 +7,7 @@
84 Type=Application70 Type=Application
85 StartupNotify=true71 StartupNotify=true
@@ -89,36 +75,19 @@
89 X-GNOME-Bugzilla-Bugzilla=GNOME75 X-GNOME-Bugzilla-Bugzilla=GNOME
90 X-GNOME-Bugzilla-Product=gnome-control-center76 X-GNOME-Bugzilla-Product=gnome-control-center
91 X-GNOME-Bugzilla-Component=network77 X-GNOME-Bugzilla-Component=network
92Index: gnome-control-center-3.6.3/panels/power/gnome-power-panel.desktop.in.in78--- a/panels/power/gnome-power-panel.desktop.in.in
93===================================================================79+++ b/panels/power/gnome-power-panel.desktop.in.in
94--- gnome-control-center-3.6.3.orig/panels/power/gnome-power-panel.desktop.in.in 2014-03-04 19:17:38.334473755 +0100
95+++ gnome-control-center-3.6.3/panels/power/gnome-power-panel.desktop.in.in 2014-03-04 19:17:38.326473755 +0100
96@@ -7,7 +7,7 @@80@@ -7,7 +7,7 @@
97 Type=Application81 Type=Application
98 StartupNotify=true82 StartupNotify=true
99 Categories=GNOME;GTK;Settings;DesktopSettings;X-GNOME-Settings-Panel;HardwareSettings83 Categories=GNOME;GTK;Settings;DesktopSettings;X-GNOME-Settings-Panel;HardwareSettings;
100-OnlyShowIn=GNOME;Unity;84-OnlyShowIn=GNOME;Unity;
101+OnlyShowIn=GNOME;85+OnlyShowIn=GNOME;
102 X-GNOME-Bugzilla-Bugzilla=GNOME86 X-GNOME-Bugzilla-Bugzilla=GNOME
103 X-GNOME-Bugzilla-Product=gnome-control-center87 X-GNOME-Bugzilla-Product=gnome-control-center
104 X-GNOME-Bugzilla-Component=power88 X-GNOME-Bugzilla-Component=power
105Index: gnome-control-center-3.6.3/panels/screen/gnome-screen-panel.desktop.in.in
106===================================================================
107--- gnome-control-center-3.6.3.orig/panels/screen/gnome-screen-panel.desktop.in.in 2014-03-04 19:17:38.334473755 +0100
108+++ gnome-control-center-3.6.3/panels/screen/gnome-screen-panel.desktop.in.in 2014-03-04 19:17:38.326473755 +0100
109@@ -7,7 +7,7 @@
110 Type=Application
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches