From a3c072ea6fdfb07427acc904c4d72623937074ebb4ce3960b6f0ba74ca2c3cb5 Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Fri, 13 Jun 2014 19:25:58 +0000 Subject: [PATCH 1/2] Accepting request 237136 from home:zhangxiaofei:branches:GNOME:Factory update gnome-control-center-allow-yast-in-shell.patch to allow more tools show in g-c-c shell OBS-URL: https://build.opensuse.org/request/show/237136 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gnome-control-center?expand=0&rev=240 --- ...ol-center-allow-extra-tools-in-shell.patch | 168 ++++++++++++++++++ ...e-control-center-allow-yast-in-shell.patch | 91 ---------- gnome-control-center.changes | 13 ++ gnome-control-center.spec | 4 +- 4 files changed, 183 insertions(+), 93 deletions(-) create mode 100644 gnome-control-center-allow-extra-tools-in-shell.patch delete mode 100644 gnome-control-center-allow-yast-in-shell.patch diff --git a/gnome-control-center-allow-extra-tools-in-shell.patch b/gnome-control-center-allow-extra-tools-in-shell.patch new file mode 100644 index 0000000..e483a40 --- /dev/null +++ b/gnome-control-center-allow-extra-tools-in-shell.patch @@ -0,0 +1,168 @@ +From 35797b29339cd33c45bba6bfc0431fb52e2415b4 Mon Sep 17 00:00:00 2001 +From: Felix Zhang +Date: Fri, 13 Jun 2014 15:51:14 +0800 +Subject: [PATCH] allow extra tools in shell + +--- + shell/cc-panel-loader.c | 61 ++++++++++++++++++++++++++++++------------------- + shell/cc-window.c | 43 ++++++++++++++++++++++++++++++++++ + 2 files changed, 81 insertions(+), 23 deletions(-) + +diff --git a/shell/cc-panel-loader.c b/shell/cc-panel-loader.c +index 26576dc..ec6b675 100644 +--- a/shell/cc-panel-loader.c ++++ b/shell/cc-panel-loader.c +@@ -73,35 +73,40 @@ static struct { + GType (*get_type)(void); + #endif + } all_panels[] = { +- PANEL_TYPE("background", cc_background_panel_get_type ), ++ PANEL_TYPE("background", cc_background_panel_get_type ), + #ifdef BUILD_BLUETOOTH +- PANEL_TYPE("bluetooth", cc_bluetooth_panel_get_type ), ++ PANEL_TYPE("bluetooth", cc_bluetooth_panel_get_type ), + #endif +- PANEL_TYPE("color", cc_color_panel_get_type ), +- PANEL_TYPE("datetime", cc_date_time_panel_get_type ), +- PANEL_TYPE("display", cc_display_panel_get_type ), +- PANEL_TYPE("info", cc_info_panel_get_type ), +- PANEL_TYPE("keyboard", cc_keyboard_panel_get_type ), +- PANEL_TYPE("mouse", cc_mouse_panel_get_type ), ++ PANEL_TYPE("color", cc_color_panel_get_type ), ++ PANEL_TYPE("datetime", cc_date_time_panel_get_type ), ++ PANEL_TYPE("display", cc_display_panel_get_type ), ++ PANEL_TYPE("info", cc_info_panel_get_type ), ++ PANEL_TYPE("keyboard", cc_keyboard_panel_get_type ), ++ PANEL_TYPE("mouse", cc_mouse_panel_get_type ), + #ifdef BUILD_NETWORK +- PANEL_TYPE("network", cc_network_panel_get_type ), ++ PANEL_TYPE("network", cc_network_panel_get_type ), + #endif +- PANEL_TYPE("notifications", cc_notifications_panel_get_type), +- PANEL_TYPE("online-accounts", cc_goa_panel_get_type ), +- PANEL_TYPE("power", cc_power_panel_get_type ), ++ PANEL_TYPE("notifications", cc_notifications_panel_get_type), ++ PANEL_TYPE("online-a ccounts", cc_goa_panel_get_type ), ++ PANEL_TYPE("power", cc_power_panel_get_type ), + #ifdef BUILD_PRINTERS +- PANEL_TYPE("printers", cc_printers_panel_get_type ), ++ PANEL_TYPE("printers", cc_printers_panel_get_type ), + #endif +- PANEL_TYPE("privacy", cc_privacy_panel_get_type ), +- PANEL_TYPE("region", cc_region_panel_get_type ), +- PANEL_TYPE("search", cc_search_panel_get_type ), +- PANEL_TYPE("sharing", cc_sharing_panel_get_type ), +- PANEL_TYPE("sound", cc_sound_panel_get_type ), +- PANEL_TYPE("universal-access", cc_ua_panel_get_type ), +- PANEL_TYPE("user-accounts", cc_user_panel_get_type ), ++ PANEL_TYPE("privacy", cc_privacy_panel_get_type ), ++ PANEL_TYPE("region", cc_region_panel_get_type ), ++ PANEL_TYPE("search", cc_search_panel_get_type ), ++ PANEL_TYPE("sharing", cc_sharing_panel_get_type ), ++ PANEL_TYPE("sound", cc_sound_panel_get_type ), ++ PANEL_TYPE("universal-access", cc_ua_panel_get_type ), ++ PANEL_TYPE("user-accounts", cc_user_panel_get_type ), + #ifdef BUILD_WACOM +- PANEL_TYPE("wacom", cc_wacom_panel_get_type ), ++ PANEL_TYPE("wacom", cc_wacom_panel_get_type ), + #endif ++ PANEL_TYPE("dconf-editor", NULL ), ++ PANEL_TYPE("gpk-prefs", NULL ), ++ PANEL_TYPE("tracker-preferences", NULL ), ++ PANEL_TYPE("gnome-tweak-tool", NULL ), ++ PANEL_TYPE("YaST", NULL ), + }; + + GList * +@@ -160,8 +165,16 @@ cc_panel_loader_fill_model (CcShellModel *model) + char *desktop_name; + int category; + +- desktop_name = g_strconcat ("gnome-", all_panels[i].name, +- "-panel.desktop", NULL); ++ if (g_strcmp0 (all_panels[i].name, "dconf-editor") == 0 || ++ g_strcmp0 (all_panels[i].name, "gpk-prefs") == 0 || ++ g_strcmp0 (all_panels[i].name, "tracker-preferences") == 0 || ++ g_strcmp0 (all_panels[i].name, "gnome-tweak-tool") == 0 || ++ g_strcmp0 (all_panels[i].name, "YaST") == 0) ++ desktop_name = g_strconcat (all_panels[i].name, ++ ".desktop", NULL); ++ else ++ desktop_name = g_strconcat ("gnome-", all_panels[i].name, ++ "-panel.desktop", NULL); + app = g_desktop_app_info_new (desktop_name); + g_free (desktop_name); + +@@ -226,6 +239,8 @@ cc_panel_loader_add_option_groups (GOptionContext *context, + { + GType (*get_type) (void); + get_type = all_panels[i].get_type; ++ if (get_type == NULL) ++ continue; + GOptionGroup *group = cc_panel_get_option_group (get_type(), builder); + if (group == NULL) + continue; +diff --git a/shell/cc-window.c b/shell/cc-window.c +index 29b28e6..8e8f096 100644 +--- a/shell/cc-window.c ++++ b/shell/cc-window.c +@@ -139,6 +139,39 @@ get_icon_name_from_g_icon (GIcon *gicon) + return NULL; + } + ++static void ++suse_activate_desktop (const gchar *id) ++{ ++ GDesktopAppInfo *appinfo; ++ const gchar *desktop_file; ++ GdkScreen *screen; ++ GdkDisplay *display; ++ GdkAppLaunchContext *context; ++ GError *error; ++ ++ desktop_file = g_strconcat ("/usr/share/applications/", id, ++ ".desktop", NULL); ++ appinfo = g_desktop_app_info_new_from_filename (desktop_file); ++ ++ screen = gdk_screen_get_default(); ++ display = gdk_screen_get_display (screen); ++ context = gdk_display_get_app_launch_context (display); ++ gdk_app_launch_context_set_screen (context, screen); ++ gdk_app_launch_context_set_timestamp (context, gtk_get_current_event_time ()); ++ ++ error = NULL; ++ g_app_info_launch_uris (G_APP_INFO (appinfo), NULL, ++ (GAppLaunchContext *) context, ++ &error); ++ if (error) { ++ g_printerr ("Could not launch '%s': %s\n", id, error->message); ++ g_clear_error (&error); ++ } ++ ++ g_object_unref (context); ++ g_object_unref (appinfo); ++} ++ + static gboolean + activate_panel (CcWindow *self, + const gchar *id, +@@ -153,6 +186,16 @@ activate_panel (CcWindow *self, + if (!id) + return FALSE; + ++ if (g_strcmp0 (id, "dconf-editor") == 0 || ++ g_strcmp0 (id, "gpk-prefs") == 0 || ++ g_strcmp0 (id, "tracker-preferences") == 0 || ++ g_strcmp0 (id, "gnome-tweak-tool") == 0 || ++ g_strcmp0 (id, "YaST") == 0) ++ { ++ suse_activate_desktop (id); ++ return FALSE; ++ } ++ + priv->current_panel = GTK_WIDGET (cc_panel_loader_load_by_name (CC_SHELL (self), id, parameters)); + cc_shell_set_active_panel (CC_SHELL (self), CC_PANEL (priv->current_panel)); + gtk_widget_show (priv->current_panel); +-- +1.7.12.4 + diff --git a/gnome-control-center-allow-yast-in-shell.patch b/gnome-control-center-allow-yast-in-shell.patch deleted file mode 100644 index 0f1b240..0000000 --- a/gnome-control-center-allow-yast-in-shell.patch +++ /dev/null @@ -1,91 +0,0 @@ -Index: gnome-control-center-3.10.0/shell/cc-panel-loader.c -=================================================================== ---- gnome-control-center-3.10.0.orig/shell/cc-panel-loader.c -+++ gnome-control-center-3.10.0/shell/cc-panel-loader.c -@@ -102,6 +102,7 @@ static struct { - #ifdef BUILD_WACOM - PANEL_TYPE("wacom", cc_wacom_panel_get_type ), - #endif -+ PANEL_TYPE("YaST", NULL ), - }; - - GList * -@@ -160,8 +161,11 @@ cc_panel_loader_fill_model (CcShellModel - char *desktop_name; - int category; - -- desktop_name = g_strconcat ("gnome-", all_panels[i].name, -- "-panel.desktop", NULL); -+ if (g_strcmp0 (all_panels[i].name, "YaST") == 0) -+ desktop_name = g_strconcat (all_panels[i].name, ".desktop", NULL); -+ else -+ desktop_name = g_strconcat ("gnome-", all_panels[i].name, -+ "-panel.desktop", NULL); - app = g_desktop_app_info_new (desktop_name); - g_free (desktop_name); - -@@ -226,6 +230,8 @@ cc_panel_loader_add_option_groups (GOpti - { - GType (*get_type) (void); - get_type = all_panels[i].get_type; -+ if (get_type == NULL) -+ continue; - GOptionGroup *group = cc_panel_get_option_group (get_type(), builder); - if (group == NULL) - continue; -Index: gnome-control-center-3.10.0/shell/cc-window.c -=================================================================== ---- gnome-control-center-3.10.0.orig/shell/cc-window.c -+++ gnome-control-center-3.10.0/shell/cc-window.c -@@ -137,6 +137,38 @@ get_icon_name_from_g_icon (GIcon *gicon) - return NULL; - } - -+static void -+suse_activate_desktop (const gchar *name) -+{ -+ GDesktopAppInfo *appinfo; -+ const gchar *desktop_file; -+ GdkScreen *screen; -+ GdkDisplay *display; -+ GdkAppLaunchContext *context; -+ GError *error; -+ -+ desktop_file = g_strconcat (name, ".desktop", NULL); -+ appinfo = g_desktop_app_info_new (desktop_file); -+ -+ screen = gdk_screen_get_default(); -+ display = gdk_screen_get_display (screen); -+ context = gdk_display_get_app_launch_context (display); -+ gdk_app_launch_context_set_screen (context, screen); -+ gdk_app_launch_context_set_timestamp (context, gtk_get_current_event_time ()); -+ -+ error = NULL; -+ g_app_info_launch_uris (G_APP_INFO (appinfo), NULL, -+ (GAppLaunchContext *) context, -+ &error); -+ if (error) { -+ g_printerr ("Could not launch '%s': %s\n", name, error->message); -+ g_clear_error (&error); -+ } -+ -+ g_object_unref (context); -+ g_object_unref (appinfo); -+} -+ - static gboolean - activate_panel (CcWindow *self, - const gchar *id, -@@ -151,6 +183,12 @@ activate_panel (CcWindow *self - if (!id) - return FALSE; - -+ if (g_strcmp0 (id, "YaST") == 0) -+ { -+ suse_activate_desktop (name); -+ return FALSE; -+ } -+ - priv->current_panel = GTK_WIDGET (cc_panel_loader_load_by_name (CC_SHELL (self), id, parameters)); - cc_shell_set_active_panel (CC_SHELL (self), CC_PANEL (priv->current_panel)); - gtk_widget_show (priv->current_panel); diff --git a/gnome-control-center.changes b/gnome-control-center.changes index 8afae8a..8bc0fe0 100644 --- a/gnome-control-center.changes +++ b/gnome-control-center.changes @@ -1,3 +1,16 @@ +------------------------------------------------------------------- +Fri Jun 13 08:03:48 UTC 2014 - fezhang@suse.com + +- Update gnome-control-center-allow-yast-in-shell.patch, add + dconf-editor, pkg-prefs, gnome-tweak-tool and tracker-preferences + to the patch so that they can show in g-c-c shell like YaST does + (bnc#866235). + + Renamed the patch to + gnome-control-center-allow-extra-tools-in-shell.patch + + %suse_update_desktop_file must be added to specfiles of the added tools + with category X-GNOME-PersonalSettings / X-GNOME-SystemSettings + before g-c-c can show them in the correct category views. + ------------------------------------------------------------------- Wed Apr 16 14:44:25 UTC 2014 - zaitor@opensuse.org diff --git a/gnome-control-center.spec b/gnome-control-center.spec index 72b8186..7fabbc6 100644 --- a/gnome-control-center.spec +++ b/gnome-control-center.spec @@ -35,9 +35,9 @@ License: GPL-2.0+ Group: System/GUI/GNOME Url: http://www.gnome.org Source: http://download.gnome.org/sources/gnome-control-center/3.12/%{name}-%{version}.tar.xz +# PATCH-FEATURE-OPENSUSE gnome-control-center-allow-extra-tools-in-shell.patch fezhang@suse.com -- Add dconf-editor, pkg-prefs, gnome-tweak-tool and tracker-preferences to gnome-control-center-allow-yast-in-shell.patch so that they can launch from g-c-c shell like YaST does. Also change the patch with a more generic name. +Patch0: gnome-control-center-allow-extra-tools-in-shell.patch # PATCH-FEATURE-OPENSUSE gnome-control-center-allow-yast-in-shell.patch vuntz@opensuse.org -- Allow the launch of the yast shell from the g-c-c shell; it's quite ugly, but on the other hand, we don't want to change the behavior of the shell except for yast... -Patch0: gnome-control-center-allow-yast-in-shell.patch -# PATCH-NEEDS-REBASE gnome-control-center-system-proxy-configuration.patch -- this needs to be reimplemented to be more distro-generic before submitting upstream - docs at http://en.opensuse.org/GNOME/Proxy_configuration (was PATCH-FEATURE-OPENSUSE) Patch14: gnome-control-center-system-proxy-configuration.patch # PATCH-FIX-UPSTREAM gcc-private-connection.patch bnc#751211 bgo#646187 dimstar@opensuse.org -- network: create private connections if the user if not authorized Patch15: gcc-private-connection.patch From 90cd41b8ef7785948a3b327d10d4253f8c1ffaac0c2f6c47126abafc9c6ad32c Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Fri, 13 Jun 2014 19:29:06 +0000 Subject: [PATCH 2/2] tweak OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gnome-control-center?expand=0&rev=241 --- gnome-control-center.changes | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gnome-control-center.changes b/gnome-control-center.changes index 8bc0fe0..ff86a4c 100644 --- a/gnome-control-center.changes +++ b/gnome-control-center.changes @@ -6,10 +6,11 @@ Fri Jun 13 08:03:48 UTC 2014 - fezhang@suse.com to the patch so that they can show in g-c-c shell like YaST does (bnc#866235). + Renamed the patch to - gnome-control-center-allow-extra-tools-in-shell.patch - + %suse_update_desktop_file must be added to specfiles of the added tools - with category X-GNOME-PersonalSettings / X-GNOME-SystemSettings - before g-c-c can show them in the correct category views. + gnome-control-center-allow-extra-tools-in-shell.patch. + + %suse_update_desktop_file must be added to specfiles of the + added tools with category X-GNOME-PersonalSettings and/or + X-GNOME-SystemSettings before g-c-c can show them in the + correct category view. ------------------------------------------------------------------- Wed Apr 16 14:44:25 UTC 2014 - zaitor@opensuse.org