[Xfce4-commits] <ristretto:master> Let the main-window respond to changes in the desktop-type setting.

Stephan Arts noreply at xfce.org
Wed Nov 23 06:52:03 CET 2011


Updating branch refs/heads/master
         to e51e44fde610ddd55236076d353395ed7abc778c (commit)
       from 3334e9ceda2da092b471ec8b5e00d9b5be8fd0ca (commit)

commit e51e44fde610ddd55236076d353395ed7abc778c
Author: Stephan Arts <stephan at xfce.org>
Date:   Tue Nov 15 09:46:54 2011 +0100

    Let the main-window respond to changes in the desktop-type setting.

 src/main_window.c |   69 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 69 insertions(+), 0 deletions(-)

diff --git a/src/main_window.c b/src/main_window.c
index 56a5b59..8541688 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -253,6 +253,11 @@ cb_rstto_wrap_images_changed (
         GObject *object,
         GParamSpec *pspec,
         gpointer user_data);
+static void
+cb_rstto_desktop_type_changed (
+        GObject *object,
+        GParamSpec *pspec,
+        gpointer user_data);
 
 
 
@@ -430,6 +435,11 @@ rstto_main_window_init (RsttoMainWindow *window)
             //window->priv->wallpaper_manager = rstto_gnome_wallpaper_manager_new();
         }
 
+        if (!g_strcasecmp(desktop_type, "none"))
+        {
+            window->priv->wallpaper_manager = NULL;
+        }
+
         g_free (desktop_type);
         desktop_type = NULL;
     }
@@ -733,6 +743,11 @@ rstto_main_window_init (RsttoMainWindow *window)
             "notify::wrap-images",
             G_CALLBACK (cb_rstto_wrap_images_changed),
             window);
+    g_signal_connect (
+            G_OBJECT(window->priv->settings_manager),
+            "notify::desktop-type",
+            G_CALLBACK (cb_rstto_desktop_type_changed),
+            window);
 
 }
 
@@ -1171,6 +1186,10 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
             {
                 gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/set-as-wallpaper"), TRUE);
             }
+            else
+            {
+                gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/set-as-wallpaper"), FALSE);
+            }
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/zoom-menu"), TRUE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/rotation-menu"), TRUE);
 
@@ -1266,6 +1285,10 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
             {
                 gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/set-as-wallpaper"), TRUE);
             }
+            else
+            {
+                gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/set-as-wallpaper"), FALSE);
+            }
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/zoom-menu"), TRUE);
             gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/rotation-menu"), TRUE);
 
@@ -2981,3 +3004,49 @@ cb_rstto_wrap_images_changed (
     RsttoMainWindow *window = RSTTO_MAIN_WINDOW (user_data);
     rstto_main_window_update_buttons (window);
 }
+
+static void
+cb_rstto_desktop_type_changed (
+        GObject *object,
+        GParamSpec *pspec,
+        gpointer user_data)
+{
+    RsttoMainWindow *window = RSTTO_MAIN_WINDOW (user_data);
+    gchar *desktop_type = NULL;
+
+    if (window->priv->wallpaper_manager)
+    {
+        g_object_unref(window->priv->wallpaper_manager);
+        window->priv->wallpaper_manager = NULL;
+    }
+
+    desktop_type = rstto_settings_get_string_property (window->priv->settings_manager, "desktop-type");
+
+    if (desktop_type)
+    {
+        if (!g_strcasecmp(desktop_type, "xfce"))
+        {
+            window->priv->wallpaper_manager = rstto_xfce_wallpaper_manager_new();
+        }
+
+        if (!g_strcasecmp(desktop_type, "gnome"))
+        {
+            //window->priv->wallpaper_manager = rstto_gnome_wallpaper_manager_new();
+        }
+
+        if (!g_strcasecmp(desktop_type, "none"))
+        {
+            window->priv->wallpaper_manager = NULL;
+        }
+
+        g_free (desktop_type);
+        desktop_type = NULL;
+    }
+    else
+    {
+        /* Default to xfce */
+        window->priv->wallpaper_manager = rstto_xfce_wallpaper_manager_new();
+    }
+
+    rstto_main_window_update_buttons (window);
+}


More information about the Xfce4-commits mailing list