[Xfce4-commits] <xfdesktop:eric/bugzilla-patches> Backdrop image cycling on a timer

Eric Koegel noreply at xfce.org
Mon Feb 13 06:16:01 CET 2012


Updating branch refs/heads/eric/bugzilla-patches
         to 600504bab2c3067515e225136afa765a6e93e6bb (commit)
       from 1264428edda474f7c59befee1b0d779bc385fc14 (commit)

commit 600504bab2c3067515e225136afa765a6e93e6bb
Author: Eric Koegel <eric.koegel at gmail.com>
Date:   Sun Feb 12 13:12:32 2012 +0300

    Backdrop image cycling on a timer
    
    This code adds the ability to change the backdrop image when it's
    set to an image-list and the backdrop-cycle-enable setting is TRUE.
    It will then change the background every backdrop-cycle-timer
    minutes. The settings app allows the user to change these settings.
    Bug 4850

 settings/main.c                                    |   47 ++++++
 .../xfdesktop-settings-appearance-frame-ui.glade   |   48 ++++++
 src/xfce-backdrop.c                                |  158 +++++++++++++++++++-
 src/xfce-backdrop.h                                |   14 ++
 src/xfce-desktop.c                                 |   48 ++++++-
 5 files changed, 312 insertions(+), 3 deletions(-)

diff --git a/settings/main.c b/settings/main.c
index a6be3b8..9442f30 100644
--- a/settings/main.c
+++ b/settings/main.c
@@ -104,6 +104,9 @@ typedef struct
 
     GtkWidget *brightness_slider;
     GtkWidget *saturation_slider;
+
+    GtkWidget *backdrop_cycle_spinbox;
+    GtkWidget *backdrop_cycle_chkbox;
 } AppearancePanel;
 
 typedef struct
@@ -758,6 +761,21 @@ cb_xfdesktop_chk_custom_font_size_toggled(GtkCheckButton *button,
                              gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)));
 }
 
+static void
+cb_xfdesktop_chk_cycle_backdrop_toggled(GtkCheckButton *button,
+                                        gpointer user_data)
+{
+    gboolean sensitive = FALSE;
+    GtkWidget *spin_button = GTK_WIDGET(user_data);
+
+    if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)) &&
+       gtk_widget_get_sensitive(GTK_WIDGET(button))) {
+           sensitive = TRUE;
+    }
+
+    gtk_widget_set_sensitive(spin_button, sensitive);
+}
+
 static gboolean
 xfdesktop_spin_icon_size_timer(GtkSpinButton *button)
 {
@@ -1024,6 +1042,8 @@ cb_image_type_radio_clicked(GtkWidget *w,
         gtk_widget_set_sensitive(panel->btn_minus, FALSE);
         gtk_widget_set_sensitive(panel->btn_newlist, FALSE);
         gtk_widget_set_sensitive(panel->frame_image_list, TRUE);
+        gtk_widget_set_sensitive(panel->backdrop_cycle_chkbox, FALSE);
+        gtk_widget_set_sensitive(panel->backdrop_cycle_spinbox, FALSE);
         DBG("show_image=%s", panel->show_image?"true":"false");
         if(!panel->show_image) {
             panel->show_image = TRUE;
@@ -1049,6 +1069,11 @@ cb_image_type_radio_clicked(GtkWidget *w,
         gtk_widget_set_sensitive(panel->btn_minus, TRUE);
         gtk_widget_set_sensitive(panel->btn_newlist, TRUE);
         gtk_widget_set_sensitive(panel->frame_image_list, TRUE);
+        gtk_widget_set_sensitive(panel->backdrop_cycle_chkbox, TRUE);
+        if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(panel->backdrop_cycle_chkbox)))
+            gtk_widget_set_sensitive(panel->backdrop_cycle_spinbox, TRUE);
+        else
+            gtk_widget_set_sensitive(panel->backdrop_cycle_spinbox, FALSE);
         DBG("show_image=%s", panel->show_image?"true":"false");
         if(!panel->show_image) {
             panel->show_image = TRUE;
@@ -1057,6 +1082,8 @@ cb_image_type_radio_clicked(GtkWidget *w,
     } else if(w == panel->radio_none) {
         DBG("widget is none");
         gtk_widget_set_sensitive(panel->frame_image_list, FALSE);
+        gtk_widget_set_sensitive(panel->backdrop_cycle_chkbox, FALSE);
+        gtk_widget_set_sensitive(panel->backdrop_cycle_spinbox, FALSE);
         DBG("show_image=%s", panel->show_image?"true":"false");
         if(panel->show_image) {
             panel->show_image = FALSE;
@@ -1433,6 +1460,26 @@ xfdesktop_settings_dialog_add_screens(GtkBuilder *main_gxml,
             g_signal_connect(G_OBJECT(panel->btn_newlist), "clicked",
                              G_CALLBACK(newlist_button_clicked), panel);
 
+            panel->backdrop_cycle_chkbox = GTK_WIDGET(gtk_builder_get_object(appearance_gxml,
+                                                                             "chk_cycle_backdrop"));
+            panel->backdrop_cycle_spinbox = GTK_WIDGET(gtk_builder_get_object(appearance_gxml,
+                                                                             "spin_backdrop_time_minutes"));
+
+            g_signal_connect(G_OBJECT(panel->backdrop_cycle_chkbox), "toggled",
+                            G_CALLBACK(cb_xfdesktop_chk_cycle_backdrop_toggled),
+                            panel->backdrop_cycle_spinbox);
+
+            g_snprintf(buf, sizeof(buf), PER_SCREEN_PROP_FORMAT "/backdrop-cycle-enable",
+                       i, j);
+            xfconf_g_property_bind(channel, buf, G_TYPE_BOOLEAN,
+                                   G_OBJECT(panel->backdrop_cycle_chkbox), "active");
+
+            g_snprintf(buf, sizeof(buf), PER_SCREEN_PROP_FORMAT "/backdrop-cycle-timer",
+                       i, j);
+            xfconf_g_property_bind(channel, buf, G_TYPE_UINT,
+                           G_OBJECT(gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(panel->backdrop_cycle_spinbox))),
+                           "value");
+
             panel->radio_singleimage = GTK_WIDGET(gtk_builder_get_object(appearance_gxml,
                                                                          "radio_singleimage"));
             g_signal_connect(G_OBJECT(panel->radio_singleimage), "toggled",
diff --git a/settings/xfdesktop-settings-appearance-frame-ui.glade b/settings/xfdesktop-settings-appearance-frame-ui.glade
index 3a4fed6..caf55fc 100644
--- a/settings/xfdesktop-settings-appearance-frame-ui.glade
+++ b/settings/xfdesktop-settings-appearance-frame-ui.glade
@@ -17,6 +17,14 @@
     <property name="page_size">0</property>
     <property name="value">1</property>
   </object>
+  <object class="GtkAdjustment" id="adjustment3">
+    <property name="upper">65535</property>
+    <property name="lower">1</property>
+    <property name="page_increment">10</property>
+    <property name="step_increment">1</property>
+    <property name="page_size">0</property>
+    <property name="value">10</property>
+  </object>
   <object class="GtkListStore" id="model1">
     <columns>
       <column type="gchararray"/>
@@ -528,6 +536,46 @@
             <property name="position">1</property>
           </packing>
         </child>
+        <child>
+          <object class="GtkHBox" id="hbox9">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="spacing">4</property>
+            <child>
+              <object class="GtkCheckButton" id="chk_cycle_backdrop">
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">_Change the background (in minutes):</property>
+                <property name="tooltip-text" translatable="yes">While in image list mode, select this option to automatically select a different background from the image list after a set number of minutes.</property>
+                <property name="use_underline">True</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+              </packing>
+            </child>
+          <child>
+            <object class="GtkSpinButton" id="spin_backdrop_time_minutes">
+              <property name="visible">True</property>
+              <property name="sensitive">False</property>
+              <property name="can_focus">True</property>
+              <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+              <property name="adjustment">adjustment3</property>
+              <property name="tooltip-text" translatable="yes">Number of minutes before a different background is randomly selected from the list.</property>
+            </object>
+            <packing>
+              <property name="expand">False</property>
+              <property name="position">2</property>
+            </packing>
+          </child>
+        </object>
+        <packing>
+          <property name="expand">False</property>
+          <property name="position">2</property>
+        </packing>
+      </child>
       </object>
     </child>
   </object>
diff --git a/src/xfce-backdrop.c b/src/xfce-backdrop.c
index 486a796..600d7fd 100644
--- a/src/xfce-backdrop.c
+++ b/src/xfce-backdrop.c
@@ -52,6 +52,7 @@ static void xfce_backdrop_get_property(GObject *object,
                                        guint property_id,
                                        GValue *value,
                                        GParamSpec *pspec);
+static void xfce_backdrop_timer(XfceBackdrop *backdrop);
 
 struct _XfceBackdropPriv
 {
@@ -65,14 +66,20 @@ struct _XfceBackdropPriv
     gboolean show_image;
     XfceBackdropImageStyle image_style;
     gchar *image_path;
+    gchar *backdrop_list;
     
     gint brightness;
     gdouble saturation;
+
+    gboolean cycle_backdrop;
+    guint cycle_timer;
+    guint cycle_timer_id;
 };
 
 enum
 {
     BACKDROP_CHANGED,
+    BACKDROP_CYCLE,
     LAST_SIGNAL,
 };
 
@@ -87,6 +94,8 @@ enum
     PROP_IMAGE_FILENAME,
     PROP_BRIGHTNESS,
     PROP_SATURATION,
+    PROP_BACKDROP_CYCLE_ENABLE,
+    PROP_BACKDROP_CYCLE_TIMER,
 };
 
 static guint backdrop_signals[LAST_SIGNAL] = { 0, };
@@ -240,6 +249,10 @@ xfce_backdrop_class_init(XfceBackdropClass *klass)
             G_OBJECT_CLASS_TYPE(gobject_class), G_SIGNAL_RUN_FIRST,
             G_STRUCT_OFFSET(XfceBackdropClass, changed), NULL, NULL,
             g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+    backdrop_signals[BACKDROP_CYCLE] = g_signal_new("cycle",
+            G_OBJECT_CLASS_TYPE(gobject_class), G_SIGNAL_RUN_FIRST,
+            G_STRUCT_OFFSET(XfceBackdropClass, cycle), NULL, NULL,
+            g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
 
 #define XFDESKTOP_PARAM_FLAGS  (G_PARAM_READWRITE \
                                 | G_PARAM_CONSTRUCT \
@@ -305,6 +318,20 @@ xfce_backdrop_class_init(XfceBackdropClass *klass)
                                                         -10.0, 10.0, 1.0,
                                                         XFDESKTOP_PARAM_FLAGS));
 
+    g_object_class_install_property(gobject_class, PROP_BACKDROP_CYCLE_ENABLE,
+                                    g_param_spec_boolean("backdrop-cycle-enable",
+                                                         "backdrop-cycle-enable",
+                                                         "backdrop-cycle-enable",
+                                                         FALSE,
+                                                         XFDESKTOP_PARAM_FLAGS));
+
+    g_object_class_install_property(gobject_class, PROP_BACKDROP_CYCLE_TIMER,
+                                    g_param_spec_uint("backdrop-cycle-timer",
+                                                     "backdrop-cycle-timer",
+                                                     "backdrop-cycle-timer",
+                                                     0, G_MAXUSHORT, 10,
+                                                     XFDESKTOP_PARAM_FLAGS));
+
 #undef XFDESKTOP_PARAM_FLAGS
 }
 
@@ -314,6 +341,8 @@ xfce_backdrop_init(XfceBackdrop *backdrop)
     backdrop->priv = G_TYPE_INSTANCE_GET_PRIVATE(backdrop, XFCE_TYPE_BACKDROP,
                                                  XfceBackdropPriv);
     backdrop->priv->show_image = TRUE;
+    backdrop->priv->cycle_timer_id = 0;
+    backdrop->priv->backdrop_list = NULL;
 
     /* color defaults */
     backdrop->priv->color1.red = 0x1515;
@@ -333,7 +362,17 @@ xfce_backdrop_finalize(GObject *object)
     
     if(backdrop->priv->image_path)
         g_free(backdrop->priv->image_path);
-    
+
+    if(backdrop->priv->cycle_timer_id != 0) {
+        g_source_remove(backdrop->priv->cycle_timer_id);
+        backdrop->priv->cycle_timer_id = 0;
+    }
+
+    if(backdrop->priv->backdrop_list != NULL) {
+        g_free(backdrop->priv->backdrop_list);
+        backdrop->priv->backdrop_list = NULL;
+    }
+
     G_OBJECT_CLASS(xfce_backdrop_parent_class)->finalize(object);
 }
 
@@ -384,6 +423,14 @@ xfce_backdrop_set_property(GObject *object,
             xfce_backdrop_set_saturation(backdrop, g_value_get_double(value));
             break;
 
+        case PROP_BACKDROP_CYCLE_ENABLE:
+            xfce_backdrop_set_cycle_backdrop(backdrop, g_value_get_boolean(value));
+            break;
+
+        case PROP_BACKDROP_CYCLE_TIMER:
+            xfce_backdrop_set_cycle_timer(backdrop, g_value_get_uint(value));
+            break;
+
         default:
             G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
             break;
@@ -432,6 +479,14 @@ xfce_backdrop_get_property(GObject *object,
             g_value_set_double(value, xfce_backdrop_get_saturation(backdrop));
             break;
 
+        case PROP_BACKDROP_CYCLE_ENABLE:
+            g_value_set_boolean(value, xfce_backdrop_get_cycle_backdrop(backdrop));
+            break;
+
+        case PROP_BACKDROP_CYCLE_TIMER:
+            g_value_set_uint(value, xfce_backdrop_get_cycle_timer(backdrop));
+            break;
+
         default:
             G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
             break;
@@ -701,6 +756,37 @@ xfce_backdrop_get_image_filename(XfceBackdrop *backdrop)
 }
 
 /**
+ * xfce_backdrop_set_list:
+ * @backdrop: An #XfceBackdrop.
+ * @backdrop_list: A list of backdrop images.
+ *
+ * Sets the internal list of wallpaper images assigned to this backdrop.
+ * Frees any previous backdrop list before setting the new one.
+ * [Transfer full]
+ **/
+void
+xfce_backdrop_set_list(XfceBackdrop *backdrop,
+                       gchar *backdrop_list)
+{
+    g_return_if_fail(XFCE_IS_BACKDROP(backdrop));
+
+    if(backdrop->priv->backdrop_list != NULL) {
+        g_free(backdrop->priv->backdrop_list);
+        backdrop->priv->backdrop_list = NULL;
+    }
+
+    backdrop->priv->backdrop_list = backdrop_list;
+}
+
+G_CONST_RETURN gchar*
+xfce_backdrop_get_list(XfceBackdrop *backdrop)
+{
+    g_return_val_if_fail(XFCE_IS_BACKDROP(backdrop), NULL);
+
+    return backdrop->priv->backdrop_list;
+}
+
+/**
  * xfce_backdrop_set_brightness:
  * @backdrop: An #XfceBackdrop.
  * @brightness: A brightness value.
@@ -745,6 +831,76 @@ xfce_backdrop_get_saturation(XfceBackdrop *backdrop)
     return backdrop->priv->saturation;
 }
 
+static void
+xfce_backdrop_timer(XfceBackdrop *backdrop)
+{
+    g_return_if_fail(XFCE_IS_BACKDROP(backdrop));
+
+    g_signal_emit(G_OBJECT(backdrop), backdrop_signals[BACKDROP_CYCLE], 0);
+}
+
+/**
+ * xfce_backdrop_set_cycle_timer:
+ * @backdrop: An #XfceBackdrop.
+ * @cycle_timer: The amount of time, in minutes, to wait before changing the
+ *               background image.
+ *
+ * If cycle_backdrop is enabled then this function will change the backdrop
+ * image based on the cycle_timer, a value between 0 and G_MAXUSHORT.
+ * A value of 0 indicates that the backdrop should not be changed.
+ **/
+void
+xfce_backdrop_set_cycle_timer(XfceBackdrop *backdrop, guint cycle_timer)
+{
+    g_return_if_fail(XFCE_IS_BACKDROP(backdrop));
+
+    if(cycle_timer > G_MAXUSHORT)
+        cycle_timer = G_MAXUSHORT;
+
+    backdrop->priv->cycle_timer = cycle_timer;
+
+    if(backdrop->priv->cycle_timer_id != 0) {
+        g_source_remove(backdrop->priv->cycle_timer_id);
+        backdrop->priv->cycle_timer_id = 0;
+    }
+
+    if(backdrop->priv->cycle_timer != 0 &&
+       backdrop->priv->cycle_backdrop == TRUE) {
+        backdrop->priv->cycle_timer_id = g_timeout_add_seconds(backdrop->priv->cycle_timer * 60,
+                                                               (GSourceFunc)xfce_backdrop_timer,
+                                                               backdrop);
+    }
+}
+
+guint
+xfce_backdrop_get_cycle_timer(XfceBackdrop *backdrop)
+{
+    g_return_val_if_fail(XFCE_IS_BACKDROP(backdrop), 0);
+    return backdrop->priv->cycle_timer;
+}
+
+void
+xfce_backdrop_set_cycle_backdrop(XfceBackdrop *backdrop,
+                                 gboolean cycle_backdrop)
+{
+    g_return_if_fail(XFCE_IS_BACKDROP(backdrop));
+
+    if(backdrop->priv->cycle_backdrop != cycle_backdrop) {
+        backdrop->priv->cycle_backdrop = cycle_backdrop;
+        /* Start or stop the backdrop changing */
+        xfce_backdrop_set_cycle_timer(backdrop,
+                                      xfce_backdrop_get_cycle_timer(backdrop));
+    }
+}
+
+gboolean
+xfce_backdrop_get_cycle_backdrop(XfceBackdrop *backdrop)
+{
+    g_return_val_if_fail(XFCE_IS_BACKDROP(backdrop), 0);
+
+    return backdrop->priv->cycle_backdrop;
+}
+
 /**
  * xfce_backdrop_get_pixbuf:
  * @backdrop: An #XfceBackdrop.
diff --git a/src/xfce-backdrop.h b/src/xfce-backdrop.h
index d193644..78ba6b0 100644
--- a/src/xfce-backdrop.h
+++ b/src/xfce-backdrop.h
@@ -70,6 +70,7 @@ struct _XfceBackdropClass
     
     /*< signals >*/
     void (*changed)(XfceBackdrop *backdrop);
+    void (*cycle)(XfceBackdrop *backdrop);
 };
 
 GType xfce_backdrop_get_type             (void) G_GNUC_CONST;
@@ -113,6 +114,11 @@ void xfce_backdrop_set_image_filename    (XfceBackdrop *backdrop,
 G_CONST_RETURN gchar *xfce_backdrop_get_image_filename
                                          (XfceBackdrop *backdrop);
 
+void xfce_backdrop_set_list              (XfceBackdrop *backdrop,
+                                          gchar *backdrop_list);
+G_CONST_RETURN gchar *xfce_backdrop_get_list
+                                         (XfceBackdrop *backdrop);
+
 void xfce_backdrop_set_brightness        (XfceBackdrop *backdrop,
                                           gint brightness);
 gint xfce_backdrop_get_brightness        (XfceBackdrop *backdrop);
@@ -121,6 +127,14 @@ void xfce_backdrop_set_saturation        (XfceBackdrop *backdrop,
                                           gdouble saturation);
 gdouble xfce_backdrop_get_saturation     (XfceBackdrop *backdrop);
 
+void xfce_backdrop_set_cycle_backdrop    (XfceBackdrop *backdrop,
+                                          gboolean cycle_backdrop);
+gboolean xfce_backdrop_get_cycle_backdrop(XfceBackdrop *backdrop);
+
+void xfce_backdrop_set_cycle_timer       (XfceBackdrop *backdrop,
+                                          guint cycle_timer);
+guint xfce_backdrop_get_cycle_timer      (XfceBackdrop *backdrop);
+
 GdkPixbuf *xfce_backdrop_get_pixbuf      (XfceBackdrop *backdrop);
 
 G_END_DECLS
diff --git a/src/xfce-desktop.c b/src/xfce-desktop.c
index fc7839f..df90f5d 100644
--- a/src/xfce-desktop.c
+++ b/src/xfce-desktop.c
@@ -363,6 +363,28 @@ backdrop_changed_cb(XfceBackdrop *backdrop, gpointer user_data)
 }
 
 static void
+backdrop_cycle_cb(XfceBackdrop *backdrop, gpointer user_data)
+{
+    const gchar* backdrop_list;
+
+    g_return_if_fail(XFCE_IS_BACKDROP(backdrop));
+
+    backdrop_list = xfce_backdrop_get_list(backdrop);
+
+    if(xfdesktop_backdrop_list_is_valid(backdrop_list)) {
+        gchar *backdrop_file;
+        GError *error = NULL;
+
+        backdrop_file = xfdesktop_backdrop_list_choose_random(backdrop_list,
+                                                              &error);
+
+        xfce_backdrop_set_image_filename(backdrop, backdrop_file);
+        g_free(backdrop_file);
+        backdrop_changed_cb(backdrop, user_data);
+    }
+}
+
+static void
 screen_size_changed_cb(GdkScreen *gscreen, gpointer user_data)
 {
     XfceDesktop *desktop = user_data;
@@ -434,6 +456,9 @@ xfce_desktop_monitors_changed(GdkScreen *gscreen,
                 g_signal_connect(G_OBJECT(desktop->priv->backdrops[0]),
                                  "changed",
                                  G_CALLBACK(backdrop_changed_cb), desktop);
+                g_signal_connect(G_OBJECT(desktop->priv->backdrops[0]),
+                                 "cycle",
+                                 G_CALLBACK(backdrop_cycle_cb), desktop);
             }
             desktop->priv->nbackdrops = 1;
         }
@@ -459,6 +484,10 @@ xfce_desktop_monitors_changed(GdkScreen *gscreen,
                                      "changed",
                                      G_CALLBACK(backdrop_changed_cb),
                                      desktop);
+                    g_signal_connect(G_OBJECT(desktop->priv->backdrops[i]),
+                                     "cycle",
+                                     G_CALLBACK(backdrop_cycle_cb),
+                                     desktop);
                 }
             }
             desktop->priv->nbackdrops = n_monitors;
@@ -626,7 +655,7 @@ xfce_desktop_finalize(GObject *object)
     
     g_object_unref(G_OBJECT(desktop->priv->channel));
     g_free(desktop->priv->property_prefix);
-    
+
     G_OBJECT_CLASS(xfce_desktop_parent_class)->finalize(object);
 }
 
@@ -1029,8 +1058,13 @@ xfce_desktop_image_filename_changed(XfconfChannel *channel,
 
             xfce_backdrop_set_image_filename(backdrop, backdrop_file);
             g_free(backdrop_file);
-        } else
+
+            xfce_backdrop_set_list(backdrop, g_strdup(filename));
+        } else {
             xfce_backdrop_set_image_filename(backdrop, filename);
+
+            xfce_backdrop_set_list(backdrop, NULL);
+        }
     }
 }
 
@@ -1082,6 +1116,16 @@ xfce_desktop_connect_backdrop_settings(XfceDesktop *desktop,
     xfconf_g_property_bind(channel, buf, G_TYPE_DOUBLE,
                            G_OBJECT(backdrop), "saturation");
 
+    buf[pp_len] = 0;
+    g_strlcat(buf, "backdrop-cycle-enable", sizeof(buf));
+    xfconf_g_property_bind(channel, buf, G_TYPE_BOOLEAN,
+                           G_OBJECT(backdrop), "backdrop-cycle-enable");
+
+    buf[pp_len] = 0;
+    g_strlcat(buf, "backdrop-cycle-timer", sizeof(buf));
+    xfconf_g_property_bind(channel, buf, G_TYPE_UINT,
+                           G_OBJECT(backdrop), "backdrop-cycle-timer");
+
     /* the image filename could be an image or a backdrop list, so we
      * can't just bind the property directly */
     buf[pp_len] = 0;


More information about the Xfce4-commits mailing list