[Xfce4-commits] [apps/ristretto] 03/04: Support for setting background image for both gtk2 and gtk3 versions of xfdesktop

noreply at xfce.org noreply at xfce.org
Tue Aug 6 19:11:26 CEST 2019


This is an automated email from the git hooks/post-receive script.

f   2   4   0   4       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository apps/ristretto.

commit b9e367ecc67ad716a4f5c3b2bb4ea4c917ce0b50
Author: Igor <f2404 at yandex.ru>
Date:   Tue Aug 6 13:09:45 2019 -0400

    Support for setting background image for both gtk2 and gtk3 versions of xfdesktop
    
    Fixes bug #14571
---
 src/xfce_wallpaper_manager.c | 89 ++++++++++++++++++--------------------------
 1 file changed, 36 insertions(+), 53 deletions(-)

diff --git a/src/xfce_wallpaper_manager.c b/src/xfce_wallpaper_manager.c
index b6c1333..ffa26f5 100644
--- a/src/xfce_wallpaper_manager.c
+++ b/src/xfce_wallpaper_manager.c
@@ -167,7 +167,7 @@ rstto_xfce_wallpaper_manager_check_running (RsttoWallpaperManager *self)
     gint xscreen = 0;
     Display *gdk_display = gdk_x11_get_default_xdisplay ();
 
-    g_snprintf(selection_name, 100, XFDESKTOP_SELECTION_FMT, xscreen);
+    g_snprintf (selection_name, 100, XFDESKTOP_SELECTION_FMT, xscreen);
 
     xfce_selection_atom = XInternAtom (gdk_display, selection_name, False);
     if ((XGetSelectionOwner (gdk_display, xfce_selection_atom)))
@@ -183,73 +183,56 @@ rstto_xfce_wallpaper_manager_set (RsttoWallpaperManager *self, RsttoFile *file)
     RsttoXfceWallpaperManager *manager = RSTTO_XFCE_WALLPAPER_MANAGER (self);
 
     const gchar *uri = rstto_file_get_path (file);
+    GdkDisplay *display = gdk_display_get_default ();
+    GdkScreen *gdk_screen = gdk_display_get_default_screen (display);
+    const gint workspace_nr = rstto_get_active_workspace_number (gdk_screen);
+    const gchar *monitor_name = gdk_monitor_get_model (gdk_display_get_monitor (display, manager->priv->monitor));
 
-    GdkDisplay *display;
-    GdkScreen *gdk_screen;
-    gint workspace_nr;
-    gchar *monitor_name;
     gchar *image_path_prop;
     gchar *image_style_prop;
-
-    display = gdk_display_get_default ();
-    gdk_screen = gdk_display_get_default_screen (display);
-
-    workspace_nr = rstto_get_active_workspace_number (gdk_screen);
-
-    monitor_name = gdk_monitor_get_model (
-            gdk_display_get_monitor (display, manager->priv->monitor));
+    gchar *monitor_prop;
+    GHashTable *props;
 
     /* New properties since xfdesktop >= 4.11 */
     if (monitor_name)
     {
-        image_path_prop = g_strdup_printf (
-                "/backdrop/screen%d/monitor%s/workspace%d/last-image",
-                manager->priv->screen,
-                monitor_name,
-                workspace_nr);
-
-        image_style_prop = g_strdup_printf (
-                "/backdrop/screen%d/monitor%s/workspace%d/image-style",
-                manager->priv->screen,
-                monitor_name,
-                workspace_nr);
+        image_path_prop = g_strdup_printf ("/backdrop/screen%d/monitor%s/workspace%d/last-image",
+                                           manager->priv->screen, monitor_name, workspace_nr);
+        image_style_prop = g_strdup_printf ("/backdrop/screen%d/monitor%s/workspace%d/image-style",
+                                            manager->priv->screen, monitor_name, workspace_nr);
+
+        xfconf_channel_set_string (manager->priv->channel, image_path_prop, uri);
+        xfconf_channel_set_int (manager->priv->channel, image_style_prop, manager->priv->style);
+
+        g_free (image_path_prop);
+        g_free (image_style_prop);
     }
-    else
+
+    /* Support for xfdesktop < 4.13 (gtk2) */
+    monitor_prop = g_strdup_printf ("/backdrop/screen%d/monitor%d",
+                                    manager->priv->screen, manager->priv->monitor);
+    if ((props = xfconf_channel_get_properties (manager->priv->channel, monitor_prop)) != NULL)
     {
-        /* gdk_screen_get_monitor_plug_name can return NULL */
-        image_path_prop = g_strdup_printf (
-                "/backdrop/screen%d/monitor%d/workspace%d/last-image",
-                manager->priv->screen,
-                manager->priv->monitor,
-                workspace_nr);
-
-        image_style_prop = g_strdup_printf (
-                "/backdrop/screen%d/monitor%d/workspace%d/image-style",
-                manager->priv->screen,
-                manager->priv->monitor,
-                workspace_nr);
+        image_path_prop = g_strdup_printf ("/backdrop/screen%d/monitor%d/workspace%d/last-image",
+                                           manager->priv->screen, manager->priv->monitor, workspace_nr);
+        image_style_prop = g_strdup_printf ("/backdrop/screen%d/monitor%d/workspace%d/image-style",
+                                            manager->priv->screen, manager->priv->monitor, workspace_nr);
+
+        xfconf_channel_set_string (manager->priv->channel, image_path_prop, uri);
+        xfconf_channel_set_int (manager->priv->channel, image_style_prop, manager->priv->style);
+
+        g_free (image_path_prop);
+        g_free (image_style_prop);
+        g_hash_table_unref (props);
     }
 
-    xfconf_channel_set_string (
-            manager->priv->channel,
-            image_path_prop,
-            uri);
     /* Don't force to add 'single-workspace-mode' property */
-    if (xfconf_channel_has_property (manager->priv->channel,
-            SINGLE_WORKSPACE_MODE))
+    if (xfconf_channel_has_property (manager->priv->channel, SINGLE_WORKSPACE_MODE))
     {
-        xfconf_channel_set_bool (
-                manager->priv->channel,
-                SINGLE_WORKSPACE_MODE,
-                manager->priv->workspace_mode);
+        xfconf_channel_set_bool (manager->priv->channel, SINGLE_WORKSPACE_MODE, manager->priv->workspace_mode);
     }
-    xfconf_channel_set_int (
-            manager->priv->channel,
-            image_style_prop,
-            manager->priv->style);
 
-    g_free (image_path_prop);
-    g_free (image_style_prop);
+    g_free (monitor_prop);
 
     return FALSE;
 }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list