[nautilus] Use unity-control-center if in Unity
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] Use unity-control-center if in Unity
- Date: Fri, 17 Jan 2014 20:28:23 +0000 (UTC)
commit 7e6e4c9eb0b9e31cd2e91cce3dfdaa69c4ba6e8c
Author: Rober Ancell <robert ancell canonical com>
Date: Wed Jan 15 15:38:37 2014 +1300
Use unity-control-center if in Unity
https://bugzilla.gnome.org/show_bug.cgi?id=722234
src/nautilus-desktop-canvas-view.c | 54 +++++++++++++++++++++++++++++++----
1 files changed, 47 insertions(+), 7 deletions(-)
---
diff --git a/src/nautilus-desktop-canvas-view.c b/src/nautilus-desktop-canvas-view.c
index 6f11208..f1556de 100644
--- a/src/nautilus-desktop-canvas-view.c
+++ b/src/nautilus-desktop-canvas-view.c
@@ -523,16 +523,60 @@ nautilus_desktop_canvas_view_init (NautilusDesktopCanvasView *desktop_canvas_vie
desktop_canvas_view);
}
+static const gchar *
+get_control_center_command (const gchar ** params_out)
+{
+ gchar *path;
+ const gchar *retval;
+ const gchar *params;
+
+ path = NULL;
+ retval = NULL;
+ params = NULL;
+
+ /* In Unity look for unity-control-center */
+ if (g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "Unity") == 0) {
+ path = g_find_program_in_path ("unity-control-center");
+ if (path != NULL) {
+ retval = "unity-control-center";
+ params = "appearance";
+ goto out;
+ }
+ }
+
+ /* Otherwise look for gnome-control-center */
+ path = g_find_program_in_path ("gnome-control-center");
+ if (path != NULL) {
+ retval = "gnome-control-center";
+ params = "background";
+ }
+
+ out:
+ g_free (path);
+ if (params_out != NULL) {
+ *params_out = params;
+ }
+
+ return retval;
+}
+
static void
action_change_background_callback (GtkAction *action,
gpointer data)
{
+ const gchar *control_center_cmd, *params;
+
g_assert (NAUTILUS_VIEW (data));
+ control_center_cmd = get_control_center_command (¶ms);
+ if (control_center_cmd == NULL) {
+ return;
+ }
+
nautilus_launch_application_from_command (gtk_widget_get_screen (GTK_WIDGET (data)),
- "gnome-control-center",
+ control_center_cmd,
FALSE,
- "background", NULL);
+ params, NULL);
}
static void
@@ -696,7 +740,6 @@ real_merge_menus (NautilusView *view)
GtkUIManager *ui_manager;
GtkActionGroup *action_group;
GtkAction *action;
- gchar *control_center_path;
NAUTILUS_VIEW_CLASS (nautilus_desktop_canvas_view_parent_class)->merge_menus (view);
@@ -732,13 +775,10 @@ real_merge_menus (NautilusView *view)
GTK_UI_MANAGER_MENUITEM,
FALSE);
- control_center_path = g_find_program_in_path ("gnome-control-center");
- if (control_center_path == NULL) {
+ if (get_control_center_command (NULL) == NULL) {
action = gtk_action_group_get_action (action_group, NAUTILUS_ACTION_CHANGE_BACKGROUND);
gtk_action_set_visible (action, FALSE);
}
-
- g_free (control_center_path);
}
NautilusView *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]