Comment 56 for bug 1976204

Revision history for this message
Daniel van Vugt (vanvugt) wrote (last edit ):

I have a workaround/fix for DING that works. But before I propose that I'm going to see if I can fix mutter still. It seems the problem is more fundamentally in mutter, though they are fighting.

Roughly the problem is:

1. DING creates a fixed size window the size of the monitor. But it always starts on the primary monitor because the extension hasn't noticed it yet so hasn't moved it to the correct monitor.
2. Mutter moves the window down below the panel because on startup it doesn't have any special window type just yet (the extension hasn't seen its own window yet).
3. Now the window extends below the bottom of the monitor.
4. Mutter moves the window right to the next monitor because there's no panel there and it can fit fully on screen.
5. Mutter mistakenly delays in logical window resizing and halves the size of the window to match the OLD monitor scale it is no longer on.
6. Mutter decides this new smaller window is now so small it should move back to the old monitor.
7. Mutter moves the window down below the panel to fit in the work area. Everything fits.
8. Mutter resizes the window to match the scale of the OLD monitor it is no longer on.
9. Goto 3.

The infinite loop in mutter prevents the extension from completing proper startup. It never calls hide_from_window_list() that would allow us to use proper placement rules.