GNU bug report logs - #25542
25.1; Restoring the frame from fullscreen to maximized

Previous Next

Package: emacs;

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


View this message in rfc822 format

From: martin rudalics <rudalics <at> gmx.at>
To: Dani Moncayo <dmoncayo <at> gmail.com>
Cc: 25542 <at> debbugs.gnu.org
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 <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.