When trying to enter dual head full screen from a maximized state on Windows results in the client properly entering dual head full screen, but the session is only resized to the size of a single monitor.
Leaving and re-entering full screen fixes the issue.
It doesn't matter if you start out maximized or if you first maximize the client before attempting full screen.
The issue can be seen whilst reconnecting and can be reproduced multiple times with the same client by disconnecting and reconnecting to the same session.
The issue is not seen on Linux.
Tested with 4.10.0, 4.12.0, and a nightly build, so it doesn't look like a regression.
Unfortunately this smells like a Windows bug. I used Spy++ and I can not find any differences between a working window and broken one. So it seems to be something internal.
It is also not just a rendering bug. Windows' window manager doesn't really consider the window fully there. This can be seen in two ways:
a) Clicks go straight through the window and are instead sent to whatever is below.
b) When finding windows in Spy++ it also just sees what's behind the window.
I've tried to work around this in various ways by setting different window styles, giving various flags to SetWindowPos() and using ShowWindow() in different ways. I could only find a single thing that works, and that's doing ShowWindow(SW_RESTORE) before going fullscreen. This is not a very nice workaround though as you get a window jumping around as it unmaximizes before going properly to fullscreen.
It is not a TigerVNC or even FLTK issue as I can see this with a simple pure Win32 test program.
I could not find any existing code to look at. Neither GTK+, Qt, Chrome or Firefox support fullscreen over multiple monitors (on Windows at least).
I've reported this in Microsoft's feedback hub but I doubt I'll get much attention to it without a support issue opened.
Created attachment 964 [details]