GNU bug report logs -
#25542
25.1; Restoring the frame from fullscreen to maximized
Previous Next
Reported by: Dani Moncayo <dmoncayo <at> gmail.com>
Date: Thu, 26 Jan 2017 08:16:02 UTC
Severity: normal
Found in version 25.1
Done: Ken Brown <kbrown <at> cornell.edu>
Bug is archived. No further changes may be made.
Full log
Message #77 received at 25542 <at> debbugs.gnu.org (full text, mbox):
> ** Before step 2 (i.e. just after maximizing the frame with the mouse):
>
> ((outer-position 54 . -8) (outer-size 1554 . 916)
54 because the frame's left outer edge is by external-border-size
pixels left of the taskbar's right end which according to
> LEFT:
> (((geometry 0 0 1600 900) (workarea 62 0 1538 900) (mm-size 443 249)
> (name . "\\\\.\\DISPLAY1") (frames #<frame emacs <at> CPX-L6Q03C31DOX
> 0x10100bc30>)))
is at 62. -8 because the frame's top edge is by external-border-size
pixels above the display.
> (external-border-size 8 . 8) (title-bar-size 1516 . 23)
> (menu-bar-external . t) (menu-bar-size 1538 . 20) (tool-bar-external)
> (tool-bar-position . top) (tool-bar-size 1554 . 36)
> (internal-border-width . 0))
>
> ** After step 3 (i.e. just after pressing F11 a second time)
>
> ((outer-position 192 . 130) (outer-size 689 . 671)
> (external-border-size 8 . 8) (title-bar-size 651 . 23)
> (menu-bar-external . t) (menu-bar-size 673 . 20) (tool-bar-external)
> (tool-bar-position . top) (tool-bar-size 689 . 36)
> (internal-border-width . 0))
All these values are consistent now and indicate that the frame has
returned to its normal state after step 3.
> These values (after final step) are the same I get at the very
> beginning (just after "emacs -Q").
Everything seems clear - the bug is all mine. Windows just told us that
the frame was maximized but the simple hack in w32.term.c
case SIZE_MAXIMIZED:
...
/* Windows can send us a SIZE_MAXIMIZED message even
when fullscreen is fullboth. The following is a
simple hack to check that based on the fact that
only a maximized fullscreen frame should have both
top/left outside the screen. */
if (EQ (fullscreen, Qfullwidth) || EQ (fullscreen, Qfullheight)
|| NILP (fullscreen))
{
int x, y;
x_real_positions (f, &x, &y);
if (x < 0 && y < 0)
store_frame_param (f, Qfullscreen, Qmaximized);
}
fails becaue either x (in your case) or y (in the taskbar at top case)
are greater zero. (I boldly assume that NILP (fullscreen) held, maybe
Noam can verify - I never move my taskbar.) I could replace
if (x < 0 && y < 0)
with
if (x < 0 || y < 0)
to handle the two cases but that check appears downright silly and will
fail anyway for border-less, maximized frames. I must devise something
better.
Thanks for all the information you sent, martin
This bug report was last modified 4 years and 258 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.