linuxmint / cinnamon-desktop

The cinnamon-desktop library (and common settings schemas for the cinnamon desktop)
GNU General Public License v2.0
187 stars 63 forks source link

Window goes completely berserk, cannt recover control of it #162

Open php4fan opened 4 years ago

php4fan commented 4 years ago

NOTE 1: the only way I have found to trigger this issue is with Chrome with a test page that has some javascript. However, this is NOT an issue in Chrome, it's an issue with the window manager. No matter how badly Chrome is behaving (if it is at all), not being able to focus the window by clicking on it, or to move it by dragging it, is an issue in the window manager.

The reason I report this against Cinnamon is that I don't observe it with Gnome or KDE Plasma.

NOTE 2: you may need to retry a few times. This happens randomly, not 100% of the times. I don't know exactly what condition trigger it, so I haven't been able to create a test case that reproduces it 100% systematically. However, by retrying two or three times I am always able to reproduce it.

So here's the issue:

Steps to reproduce:

  1. Go to http://opentarget.org/test/stupidchrome/window_berserk/ and click on "Launch". This will open a popup
  2. In the popup, click the "Go" button. The popup will start growing to the right and to the bottom by 1px every 10 milliseconds for about 10 seconds (you can also change the values in the form) (btw the "stop" button doesn't work).
  3. While the popup is growing, before 10 seconds have passed, start moving around the popup window. Move it around as frenetically as you can, as this is likely to increase the chances of observing the issue. Do so by pressing the mouse button once over the window title bar, and then dragging without ever releasing the mouse button.
  4. Make sure you keep dragging the popup for at least 10 second after you start. This is to ensure that you keep moving it longer than it would stop growing. When 10 seconds have passed since you started, release the mouse button

What the javascript is doing is just increase the size of the window by a certain amount of pixels at a given interval for a given duration of time.

Expected behavior It might be expected that while you move the popup, it doesn't grow. Either way, when you stop moving it, and it is no longer growing, the window should be fully functional. You should be able to:

Observed result The window goes completely berserk. When you click on it, focus is given to some other window behind it and the window disappears into the background. If you give it focus again by using the Launcher icons, and then click on it, the same will happen again. There is no way to recover control of the window, or even close it, except by using the Launcher icons.

I recorded a screencast:

http://opentarget.org/test/stupidchrome/window_berserk/screencast.webm

You can see at about 0:17 I click on the window title bar and the window disappears (actually gets to the background), behaving as if I had clicked somewhere else. Then at 0:24 I get it back to the foreground, but you can see that I click on the title bar, but it behave as if I'm clicking somewhere else within it, randomly selecting some contents; then when I click on the title bar, at some point it behaves as if I was resizing by dragging its border, and then it suddenly starts behaving normally.

Basically the window manager goes berserk when I interact with the window and acts as if the mouse cursor is somewhere else with respect to where it really is.

That's not the screencast recorder interfering. The same behavior is observed without grabbing a screencast.