emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to restore the layout?


From: martin rudalics
Subject: Re: How to restore the layout?
Date: Sat, 06 Jul 2013 12:44:23 +0200

> Programmatically, with w32-send-sys-command.

OK.  If in w32term.c I simply replace this chunk

                case SIZE_MAXIMIZED:
                case SIZE_RESTORED:
                  {
                    bool iconified = FRAME_ICONIFIED_P (f);

                    SET_FRAME_VISIBLE (f, 1);
                    SET_FRAME_ICONIFIED (f, 0);

                    /* wait_reading_process_output will notice this
                       and update the frame's display structures.  */
                    SET_FRAME_GARBAGED (f);

                    if (iconified)
                      {
                        int x, y;

                        /* Reset top and left positions of the Window
                           here since Windows sends a WM_MOVE message
                           BEFORE telling us the Window is minimized
                           when the Window is iconified, with 3000,3000
                           as the co-ords. */
                        x_real_positions (f, &x, &y);
                        f->left_pos = x;
                        f->top_pos = y;

                        inev.kind = DEICONIFY_EVENT;
                        XSETFRAME (inev.frame_or_window, f);
                      }
                    else if (! NILP (Vframe_list)
                             && ! NILP (XCDR (Vframe_list)))
                      /* Force a redisplay sooner or later
                         to update the frame titles
                         in case this is the second frame.  */
                      record_asynch_buffer_change ();
                  }
                  break;

with

                case SIZE_MAXIMIZED:
                  {
                    bool iconified = FRAME_ICONIFIED_P (f);

                    SET_FRAME_VISIBLE (f, 1);
                    SET_FRAME_ICONIFIED (f, 0);

                    /* wait_reading_process_output will notice this
                       and update the frame's display structures.  */
                    SET_FRAME_GARBAGED (f);

                    if (iconified)
                      {
                        int x, y;

                        /* Reset top and left positions of the Window
                           here since Windows sends a WM_MOVE message
                           BEFORE telling us the Window is minimized
                           when the Window is iconified, with 3000,3000
                           as the co-ords. */
                        x_real_positions (f, &x, &y);
                        f->left_pos = x;
                        f->top_pos = y;

                        inev.kind = DEICONIFY_EVENT;
                        XSETFRAME (inev.frame_or_window, f);
                      }
                    else if (! NILP (Vframe_list)
                             && ! NILP (XCDR (Vframe_list)))
                      /* Force a redisplay sooner or later
                         to update the frame titles
                         in case this is the second frame.  */
                      record_asynch_buffer_change ();
                  }

                  store_frame_param (f, Qfullscreen, Qmaximized);
                  break;

                case SIZE_RESTORED:
                  {
                    bool iconified = FRAME_ICONIFIED_P (f);

                    SET_FRAME_VISIBLE (f, 1);
                    SET_FRAME_ICONIFIED (f, 0);

                    /* wait_reading_process_output will notice this
                       and update the frame's display structures.  */
                    SET_FRAME_GARBAGED (f);

                    if (iconified)
                      {
                        int x, y;

                        /* Reset top and left positions of the Window
                           here since Windows sends a WM_MOVE message
                           BEFORE telling us the Window is minimized
                           when the Window is iconified, with 3000,3000
                           as the co-ords. */
                        x_real_positions (f, &x, &y);
                        f->left_pos = x;
                        f->top_pos = y;

                        inev.kind = DEICONIFY_EVENT;
                        XSETFRAME (inev.frame_or_window, f);
                      }
                    else if (! NILP (Vframe_list)
                             && ! NILP (XCDR (Vframe_list)))
                      /* Force a redisplay sooner or later
                         to update the frame titles
                         in case this is the second frame.  */
                      record_asynch_buffer_change ();
                  }

                  store_frame_param (f, Qfullscreen, Qnil);
                  break;

the fullscreen parameter gets set to 'maximized.  Then we could try to
restore the state in `desktop-read' via `w32-send-sys-command'.  But
obviously that function should be then also called when changing the
fullscreen frame parameter ...

martin




reply via email to

[Prev in Thread] Current Thread [Next in Thread]