summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Kareh <[email protected]>2026-05-26 16:13:49 -0400
committerVictor Kareh <[email protected]>2026-05-27 16:06:20 -0400
commitdc818ba279a4806f5bdc985499e2b5ed608a47ac (patch)
tree9899e339e95209a351d401490e591a390eafb887
parentcd9a308a23dd61b7dcab12cf3633b3f879023acd (diff)
downloadcaja-dc818ba279a4806f5bdc985499e2b5ed608a47ac.tar.bz2
caja-dc818ba279a4806f5bdc985499e2b5ed608a47ac.tar.xz
background: always redraw when monitor configuration changesHEADmaster
The monitors-changed signal was handled by the same function as size-changed, which only redraws when the screen dimensions differ. When a monitor is removed without changing the virtual screen size, the desktop background was not repainted. This adds a separate handler that always triggers a redraw, since a monitor layout change requires repainting regardless of whether the dimensions changed. Fixes mate-desktop/mate-desktop#352
-rw-r--r--eel/eel-background.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/eel/eel-background.c b/eel/eel-background.c
index ceaa972f..2344f31d 100644
--- a/eel/eel-background.c
+++ b/eel/eel-background.c
@@ -642,6 +642,12 @@ screen_size_changed (GdkScreen *screen, EelBackground *background)
}
static void
+screen_monitors_changed (GdkScreen *screen, EelBackground *background)
+{
+ g_signal_emit (background, signals[APPEARANCE_CHANGED], 0);
+}
+
+static void
widget_realized_setup (GtkWidget *widget,
EelBackground *self)
{
@@ -664,7 +670,7 @@ widget_realized_setup (GtkWidget *widget,
g_signal_handler_disconnect (screen, self->details->screen_monitors_handler);
}
self->details->screen_monitors_handler =
- g_signal_connect (screen, "monitors-changed", G_CALLBACK (screen_size_changed), self);
+ g_signal_connect (screen, "monitors-changed", G_CALLBACK (screen_monitors_changed), self);
if (GDK_IS_X11_DISPLAY (display))
{