[virt-tools-list] virt-viewer: Having per window full-screen state causes monitor arrangement issues

Hans de Goede hdegoede at redhat.com
Fri Sep 20 13:52:03 UTC 2013


On 09/20/2013 03:28 PM, Marc-André Lureau wrote:
> ----- Original Message -----
>> Hi,
>> On 09/20/2013 02:06 PM, Marc-André Lureau wrote:
>>> Hi
>>> I think the issue is when a window go fullscreen, we take its monitor
>>> geometry and disable auto-alignment. This can cause overlap, when all
>>> monitors aren't fullscreen.
>>> When we leave fullscreen, ltr-alignment is applied, all is "fine"
>>> So it looks to me like we should do better alignment on "all" monitors
>>> whatever happens. I think current alignment spice-gtk code is too simple
>>> and needs to be improved. What do you think? I will try to see what I can
>>> do.
>> I agree some better alignment for the windowed / mixed case would be good.
>> What I suggest to do for now is do auto ltr arrangement using the current
>> algorithm, on all monitors (except for the all windows fullscreen case), and
>> update monitor coordinates for all monitors, including fullscreen ones, each
>> time a windows size changes (which includes going fullscreen / windowed).
>> As said the all windows fullscreen case is special, in that case we should
>> just use the actual physical monitor coordinates and not do any auto-align.
> I thought about it, but it might reorder and move monitors whenever you unfullscreen/fullscreen. That can really be annoying.

Only on setups with more then 1 row of monitors, we already use the window root coordinates to decide
which display goes first in the sorted list when doing auto-align, so for normal multi0monitor setups
with just a single row of monitors (be it 2, 3 or 5) no re-ordering should happen.

> I am thinking now to just use window root coordinates and size (yes, following the way you started using window coordinates). So, never use alignment. That leaves the following problems:
> - window gaps and overlaps: either we ignore this problem or we improve alignment to cope with this. Note overlap might be actually wanted for mirrors.

Yes overlap if the actual windows overlap should not be an issue

> And gap could probably be ignored?

That means a window could be dragged into the gap, leaving only
a small but visible, or after re-arranging a window could even
be completely hidden by a gap, so I do believe gaps could be
a problem.

Also this would mean that just moving a window a bit (without
moving its upper left corner passed the upper left corner of
another display) will cause a re-configuring of the guest

> - resizing a display inside the guest in fullscreen (scaled), will create even bigger overlaps or gaps.
> Tbh, I don't see how automatic alignment could work without breaking some use cases. I welcome suggestions

For now I would stick with what I've suggested, so keep the current
ltr auto-align, while adding code to make sure we update coordinates
whenever necessary + use physical monitor coordinates in the all
monitors full-screen case.

Alternatively you could simply always do ltr auto-align, but then
setups with more then 1 row of monitors will always be broken, even
in the all fullscreen case.



More information about the virt-tools-list mailing list