This change improves the 'fullscreen' frame support on Windows. When going to
fullscreen, the frame gets fullscreened with no window decorations (which causes the
Windows task bar to also disappear) on the nearest monitor.
The old fullscreen functionality was actually 'maximize' behavior so I've moved that to
'maximize'. 'fullwidth' and 'fullheight' are now ignored because they were buggy (at least in
Windows 8, they were not being sized correctly) and are not common Windows idioms.
While they could be supported, I'd do it as follow on work and get it working right on
multiple monitors as well.
I've tested corner cases such as resolution changes and disconnect monitors; in both
cases the fullscreen window stays fullscreen (and moves to a different monitor for the
I've modified the response to WM_WINDOWPOSCHANGED to do nothing when the
frame is fullscreen. Otherwise, the size gets tuned to a multiple of the character cells and
the fullscreen isn't perfectly matching the screen. When this happens, Windows' special
behavior to hide the taskbar doesn't kick in.
* src/w32fns.c (monitor_from_window_fn): New Windows API import.
(w32_monitor_rect): New function to get nearest monitor rect.
* src/w32term.c (w32_fullscreen_hook): Renamed from w32fullscreen_hook
for consistency. Rewritten for improved fullscreen support.
(I signed the FSF copyright assignment papers in January so I'm ok on that front.)