summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndre Miranda <andreldm@xfce.org>2021-01-10 01:00:24 +0100
committerAndre Miranda <andreldm@xfce.org>2021-01-10 01:00:24 +0100
commit958319c022a5d6db34e2ccd914eb34b45c281e2f (patch)
treed409cae5851d5c68eb9c3f9fcdfa9a9805765357 /src
parenta1daf3fcb8a9eeace9bbeafd550dc11ffb57fc68 (diff)
downloadxfdesktop-958319c022a5d6db34e2ccd914eb34b45c281e2f.tar.gz
Fix next background (!16)
Since libxfce4ui was ported to gtk3, "Change the background" is checked for only the first monitor, if enabled, "Next Background" is available to all monitors. When "Next Background" is activated, all monitors with "Change the background" enabled will have their wallpapers cycled. With this commit, "Next background" is only available to monitors with "Change the background" enabled and activating it will just update the wallpaper of the current monitor.
Diffstat (limited to 'src')
-rw-r--r--src/xfce-desktop.c25
-rw-r--r--src/xfce-desktop.h4
-rw-r--r--src/xfdesktop-application.c4
-rw-r--r--src/xfdesktop-file-icon-manager.c2
4 files changed, 24 insertions, 11 deletions
diff --git a/src/xfce-desktop.c b/src/xfce-desktop.c
index b201260c..2da0c328 100644
--- a/src/xfce-desktop.c
+++ b/src/xfce-desktop.c
@@ -1906,9 +1906,11 @@ xfce_desktop_popup_secondary_root_menu(XfceDesktop *desktop,
}
void
-xfce_desktop_refresh(XfceDesktop *desktop, gboolean advance_wallpaper)
+xfce_desktop_refresh(XfceDesktop *desktop,
+ gboolean advance_wallpaper,
+ gboolean all_monitors)
{
- gint i, current_workspace;
+ gint i, current_workspace, current_monitor_num = -1;
TRACE("entering");
@@ -1923,10 +1925,19 @@ xfce_desktop_refresh(XfceDesktop *desktop, gboolean advance_wallpaper)
current_workspace = xfce_desktop_get_current_workspace(desktop);
+ if(!all_monitors) {
+ GdkDisplay *display = gdk_screen_get_display(desktop->priv->gscreen);
+ current_monitor_num = xfdesktop_get_current_monitor_num(display);
+ }
+
/* reload backgrounds */
for(i = 0; i < xfce_desktop_get_n_monitors(desktop); i++) {
XfceBackdrop *backdrop;
+ if(!all_monitors && current_monitor_num != i) {
+ continue;
+ }
+
backdrop = xfce_workspace_get_backdrop(desktop->priv->workspaces[current_workspace], i);
if(advance_wallpaper) {
@@ -1956,18 +1967,18 @@ xfce_desktop_arrange_icons(XfceDesktop *desktop)
gboolean
xfce_desktop_get_cycle_backdrop(XfceDesktop *desktop)
{
- gint monitor;
+ gint monitor_num;
+ GdkDisplay *display;
XfceWorkspace *workspace;
XfceBackdrop *backdrop;
g_return_val_if_fail(XFCE_IS_DESKTOP(desktop), FALSE);
- xfce_gdk_screen_get_active(&monitor);
- if(&monitor == NULL)
- return FALSE;
+ display = gdk_screen_get_display(desktop->priv->gscreen);
+ monitor_num = xfdesktop_get_current_monitor_num(display);
workspace = desktop->priv->workspaces[desktop->priv->current_workspace];
- backdrop = xfce_workspace_get_backdrop(workspace, monitor);
+ backdrop = xfce_workspace_get_backdrop(workspace, monitor_num);
return xfce_backdrop_get_cycle_backdrop(backdrop);
}
diff --git a/src/xfce-desktop.h b/src/xfce-desktop.h
index 509ff6af..2fe53a03 100644
--- a/src/xfce-desktop.h
+++ b/src/xfce-desktop.h
@@ -111,7 +111,9 @@ void xfce_desktop_popup_secondary_root_menu(XfceDesktop *desktop,
guint button,
guint activate_time);
-void xfce_desktop_refresh(XfceDesktop *desktop, gboolean advance_wallpaper);
+void xfce_desktop_refresh(XfceDesktop *desktop,
+ gboolean advance_wallpaper,
+ gboolean all_monitors);
void xfce_desktop_arrange_icons(XfceDesktop *desktop);
diff --git a/src/xfdesktop-application.c b/src/xfdesktop-application.c
index 1f6b2c85..2022fe8c 100644
--- a/src/xfdesktop-application.c
+++ b/src/xfdesktop-application.c
@@ -375,7 +375,7 @@ reload_idle_cb(gpointer data)
/* reload all the desktop */
if(app->desktop)
- xfce_desktop_refresh(XFCE_DESKTOP(app->desktop), FALSE);
+ xfce_desktop_refresh(XFCE_DESKTOP(app->desktop), FALSE, TRUE);
g_application_release(G_APPLICATION(app));
@@ -418,7 +418,7 @@ cb_xfdesktop_application_next(GAction *action,
/* reload the desktop forcing the wallpaper to advance */
if(app->desktop)
- xfce_desktop_refresh(XFCE_DESKTOP(app->desktop), TRUE);
+ xfce_desktop_refresh(XFCE_DESKTOP(app->desktop), TRUE, TRUE);
}
static void
diff --git a/src/xfdesktop-file-icon-manager.c b/src/xfdesktop-file-icon-manager.c
index 885d3ae0..0164d6e3 100644
--- a/src/xfdesktop-file-icon-manager.c
+++ b/src/xfdesktop-file-icon-manager.c
@@ -973,7 +973,7 @@ xfdesktop_file_icon_menu_next_background(GtkWidget *widget,
gpointer user_data)
{
XfdesktopFileIconManager *fmanager = XFDESKTOP_FILE_ICON_MANAGER(user_data);
- xfce_desktop_refresh(XFCE_DESKTOP(fmanager->priv->desktop), TRUE);
+ xfce_desktop_refresh(XFCE_DESKTOP(fmanager->priv->desktop), TRUE, FALSE);
}
static void