[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#25542: 25.1; Restoring the frame from fullscreen to maximized
From: |
martin rudalics |
Subject: |
bug#25542: 25.1; Restoring the frame from fullscreen to maximized |
Date: |
Fri, 27 Jan 2017 14:47:40 +0100 |
> ** 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@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
- bug#25542: 25.1; Restoring the frame from fullscreen to maximized, (continued)
- bug#25542: 25.1; Restoring the frame from fullscreen to maximized, martin rudalics, 2017/01/27
- bug#25542: 25.1; Restoring the frame from fullscreen to maximized, Dani Moncayo, 2017/01/27
- bug#25542: 25.1; Restoring the frame from fullscreen to maximized, Dani Moncayo, 2017/01/27
- bug#25542: 25.1; Restoring the frame from fullscreen to maximized, martin rudalics, 2017/01/27
- bug#25542: 25.1; Restoring the frame from fullscreen to maximized, Dani Moncayo, 2017/01/27
- bug#25542: 25.1; Restoring the frame from fullscreen to maximized, Dani Moncayo, 2017/01/27
- bug#25542: 25.1; Restoring the frame from fullscreen to maximized, martin rudalics, 2017/01/27
- bug#25542: 25.1; Restoring the frame from fullscreen to maximized, Dani Moncayo, 2017/01/27
- bug#25542: 25.1; Restoring the frame from fullscreen to maximized,
martin rudalics <=
- bug#25542: 25.1; Restoring the frame from fullscreen to maximized, Noam Postavsky, 2017/01/27
- bug#25542: 25.1; Restoring the frame from fullscreen to maximized, martin rudalics, 2017/01/28
bug#25542: 25.1; Restoring the frame from fullscreen to maximized, Eli Zaretskii, 2017/01/26