mir_demo_server(_minimal): Window movement/resizing stops responding when the cursor leaves the surface, and can lead to windows 1px wide and unrecoverable.
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Fix Released
|
Medium
|
Alan Griffiths | ||
MirAL |
Fix Released
|
Medium
|
Alan Griffiths | ||
mir (Ubuntu) |
Fix Released
|
Medium
|
Unassigned |
Bug Description
mir_demo_
If you move or resize a surface with Alt+(button1/
Essentially the problem is the shell is only looking at the current cursor position and doesn't do anything if it's outside of the surface. This is frustrating as waiving the mouse around a bit it's very easy to reach this situation.
It should be looking at the gesture as a whole and only doing position checking at the start of the move/resize gesture (ie. mouse button down). Thereafter the gesture should be continuous until the button is released, regardless of whether the cursor is still inside the surface/titlebar. You will find this is how all real desktops work, and mir_proving_server tries to too. Surfaces should always "own" input regardless of cursor position, just so long as the gesture (mouse down) began on that surface.
The "unrecoverable" bit: This happens if you resize a surface too small/thin and it becomes impossible to resize it bigger again.
Related branches
- Cemil Azizoglu (community): Approve
-
Diff: 148 lines (+53/-23)2 files modifiedmiral-shell/canonical_window_manager.cpp (+48/-22)
miral-shell/canonical_window_manager.h (+5/-1)
- Daniel van Vugt: Approve
- Cemil Azizoglu (community): Approve
- Mir CI Bot: Approve (continuous-integration)
-
Diff: 264 lines (+98/-38)4 files modifiedexamples/server_example_canonical_window_manager.cpp (+45/-19)
examples/server_example_canonical_window_manager.h (+4/-0)
src/include/server/mir/shell/canonical_window_manager.h (+4/-0)
src/server/shell/canonical_window_manager.cpp (+45/-19)
Changed in mir: | |
importance: | Undecided → Medium |
status: | New → Triaged |
Changed in mir (Ubuntu): | |
status: | New → Invalid |
description: | updated |
description: | updated |
tags: | added: wm |
Changed in miral: | |
status: | New → Confirmed |
importance: | Undecided → Medium |
assignee: | nobody → Alan Griffiths (alan-griffiths) |
Changed in mir: | |
milestone: | none → 0.23.0 |
assignee: | nobody → Alan Griffiths (alan-griffiths) |
status: | Triaged → In Progress |
Changed in miral: | |
status: | Confirmed → In Progress |
Changed in mir: | |
status: | Fix Committed → Fix Released |
Changed in miral: | |
status: | In Progress → Fix Committed |
Changed in miral: | |
status: | Fix Committed → Fix Released |
Workaround:
Use mir_proving_server which does not have this bug. Because it doesn't require that resizing occur while the cursor is inside the app window. This is related to the "aura" feature detailed in Trello.