Subject: Emacs and display resolution change

From: Fabrice Popineau <[email-masked]>
Date: Wed, 22 Jan 2014 08:32:31 +0100

Hi,

The current Emacs trunk does not seem to honour display resolution change
under Windows.
There is one case where it is annoying: when the frame is fullsized.
I have a laptop. I run `emacs -Q' , then `M-x toggle-frame-fullscreen'.
Next I connect an external display with a higher resolution.
The frame displays undecorated, but with a size of the previous screen
resolution.
I need to call `M-x toggle-frame-fullscreen' twice to get back a fullsized
frame.

I think that for handling at least this case, the following patch could be
applied:

=== modified file 'src/w32term.c'
--- src/w32term.c       2014-01-06 17:22:52 +0000
+++ src/w32term.c       2014-01-22 05:49:45 +0000
@@ -4841,6 +4844,7 @@
          if (f)
            {
              dpyinfo->n_cbits = msg.msg.wParam;
+             x_check_fullscreen(f);
              DebPrint (("display change: %d %d\n",
                         (short) LOWORD (msg.msg.lParam),
                         (short) HIWORD (msg.msg.lParam)));

However I'm not sure of any possibly harmful side effects.

One thing I have observed is that if you start with a normal frame, lower
the resolution to some point where the y resolution is less than the height
of the frame, then the frame will become height-maximized. So if you raise
the resolution again, it will stay height-maximized.
I'm fine with that, but I'm not sure what users would expect. Memorizing
the frame geometry so that it will be restored in case of several
resolution change maybe more complex.

Apologies if I missed obvious points or ways to handle that.

Regards,

Fabrice Popineau