Skip to content

Commit 0ea8dea

Browse files
committed
Don't create ALL BackgroundWindows new if monitors change
1 parent c555053 commit 0ea8dea

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

src/ShellClients/BackgroundWindow.vala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,14 @@ public class Gala.BackgroundWindow : Object {
2525

2626
providing_window = new_window;
2727

28+
providing_window.unmanaging.connect (on_window_unmanaging);
29+
30+
reposition ();
31+
}
32+
33+
public void reposition () {
2834
var monitor_geom = display.get_monitor_geometry (monitor_index);
2935
providing_window.move_frame (false, monitor_geom.x, monitor_geom.y);
30-
31-
providing_window.unmanaging.connect (on_window_unmanaging);
3236
}
3337

3438
private void on_window_unmanaging () {

src/ShellClients/ShellClientsManager.vala

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,14 @@ public class Gala.ShellClientsManager : Object {
5353
private void update_background_windows () {
5454
var display = wm.get_display ();
5555

56-
background_windows = new BackgroundWindow[display.get_n_monitors ()];
56+
background_windows.resize (display.get_n_monitors ());
57+
5758
for (int i = 0; i < background_windows.length; i++) {
58-
background_windows[i] = new BackgroundWindow (display, i);
59+
if (background_windows[i] == null) {
60+
background_windows[i] = new BackgroundWindow (display, i);
61+
} else {
62+
background_windows[i].reposition ();
63+
}
5964
}
6065
}
6166

0 commit comments

Comments
 (0)