unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: martin rudalics <rudalics@gmx.at>
To: Tassilo Horn <tsdh@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: Proposing changes to adjust_frame_size
Date: Sun, 9 May 2021 10:41:00 +0200	[thread overview]
Message-ID: <726883d4-8d13-a3cb-30b7-a74c4b44f8ed@gmx.at> (raw)
In-Reply-To: <87v97tvt7e.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 1224 bytes --]

 >> But thhis last ConfigureNotify event is not explicable to me, values
 >> like 789x845 are unprecedented so far.  Does your WM deliberately
 >> resize the frame?
 >
 > Yes, pretty much like Emacs splits windows into two balanced halves.  I
 > have a 1600 pixel wide screen, 3 pixels gap between WM windows, and 3
 > pixel window borders.  That makes 1579 pixels width for actual WM
 > windows, divided by two (I've had a terminal at the left and emacs at
 > the right), makes 789.5 pixels per window.

Elementary.  But why should it react so allergically to our resize
request?  Basically, we have no choice: For some "normal" WMs we have to
tell them the size we want when the frame is mapped because before that
they may ignore our resize requests and after that the frame has already
appeared with its wrong size.  For a tiling WM requesting a size when
the frame is mapped is apparently a mortal sin.

Whatever it be, I attach a patch to address this issue.  It basically
means that on a tiling WM you cannot start with an iconic frame (but
doing so should not make sense anyway).  If people still want to do
that, we probably need a customizable variable where users tell Emacs
what kind of WM they use.

martin





[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Tassilo.diff --]
[-- Type: text/x-patch; name="Tassilo.diff", Size: 2844 bytes --]

diff --git a/src/frame.h b/src/frame.h
index 744b95e1e0..75a0b184c1 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -456,7 +456,11 @@ #define EMACS_FRAME_H
   /* True when new_width or new_height were set by change_frame_size,
      false when they were set by adjust_frame_size internally or not
      set.  */
-  bool_bf new_size_p;
+  bool_bf new_size_p : 1;
+
+  /* True when frame was invisible before first MapNotify event.  Used
+     in X builds only.  */
+  bool_bf was_invisible : 1;

   /* Bitfield area ends here.  */

diff --git a/src/nsfns.m b/src/nsfns.m
index 1f281f75fd..d14f7b51ea 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -1404,6 +1404,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side.
       else
         {
 	  /* Must have been Qnil.  */
+	  f->was_invisible = true;
         }
     }

diff --git a/src/w32fns.c b/src/w32fns.c
index 66baeaecbd..e5edd62abb 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -6107,6 +6107,8 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,

 	  if (!NILP (visibility))
 	    w32_make_frame_visible (f);
+	  else
+	    f->was_invisible = true;
 	}

       store_frame_param (f, Qvisibility, visibility);
diff --git a/src/xfns.c b/src/xfns.c
index 782e0a483c..82ad15c52c 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -4140,6 +4140,8 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,

 	  if (!NILP (visibility))
 	    x_make_frame_visible (f);
+	  else
+	    f->was_invisible = true;
 	}

       store_frame_param (f, Qvisibility, visibility);
diff --git a/src/xterm.c b/src/xterm.c
index 9edaed9a34..a663a0f184 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -8181,8 +8181,12 @@ handle_one_xevent (struct x_display_info *dpyinfo,
 #if defined USE_GTK && defined HAVE_GTK3
 	      /* If GTK3 wants to impose some old size here (Bug#24526),
 		 tell it that the current size is what we want.  */
-	      xg_frame_set_char_size
-		(f, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f));
+	      if (f->was_invisible)
+		{
+		  xg_frame_set_char_size
+		    (f, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f));
+		  f->was_invisible = false;
+		}
 #endif
 	      XSETFRAME (inev.ie.frame_or_window, f);
 	    }
@@ -8443,8 +8447,12 @@ handle_one_xevent (struct x_display_info *dpyinfo,
 #if defined USE_GTK && defined HAVE_GTK3
 	      /* If GTK3 wants to impose some old size here (Bug#24526),
 		 tell it that the current size is what we want.  */
-	      xg_frame_set_char_size
-		(f, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f));
+	      if (f->was_invisible)
+		{
+		  xg_frame_set_char_size
+		    (f, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f));
+		  f->was_invisible = false;
+		}
 #endif
 	      f->output_data.x->has_been_visible = true;
 	    }

  reply	other threads:[~2021-05-09  8:41 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-25 17:11 Proposing changes to adjust_frame_size martin rudalics
2021-04-27  8:22 ` martin rudalics
2021-04-27 14:16   ` Yuuki Harano
2021-05-02  8:46     ` martin rudalics
2021-05-02 11:21       ` Alan Third
2021-05-02 16:17         ` martin rudalics
2021-05-05  8:51       ` martin rudalics
2021-05-05 10:47         ` Yuuki Harano
2021-05-05 11:24           ` martin rudalics
2021-05-05 14:07             ` Yuuki Harano
2021-05-05 15:01               ` martin rudalics
2021-05-05 16:45                 ` martin rudalics
2021-05-05 18:54                   ` Tassilo Horn
2021-05-06  7:44                     ` martin rudalics
2021-05-06  7:59                       ` Tassilo Horn
2021-05-06  8:39                         ` martin rudalics
2021-05-06  8:49                           ` Tassilo Horn
2021-05-06 12:10                             ` martin rudalics
2021-05-06 12:31                               ` Tassilo Horn
2021-05-06 14:10                                 ` martin rudalics
2021-05-06 14:47                                   ` Tassilo Horn
2021-05-07  8:03                                     ` martin rudalics
2021-05-08  7:02                                       ` Tassilo Horn
2021-05-08  7:16                                         ` martin rudalics
2021-05-08 14:03                                           ` Tassilo Horn
2021-05-08 15:17                                             ` martin rudalics
2021-05-08 20:32                                               ` Tassilo Horn
2021-05-09  8:41                                                 ` martin rudalics [this message]
2021-05-09 10:09                                                   ` Garjola Dindi
2021-05-09 10:12                                                   ` Garjola Dindi
2021-05-09 18:48                                                   ` Tassilo Horn
2021-05-10  8:25                                                     ` martin rudalics
2021-05-10 12:27                                                       ` martin rudalics
2021-05-10 19:05                                                         ` Tassilo Horn
2021-05-10 19:21                                                           ` martin rudalics
2021-05-10 19:28                                                             ` Tassilo Horn
2021-05-11  8:29                                                               ` martin rudalics
2021-05-11  9:25                                                                 ` Tassilo Horn
2021-05-12  8:44                                                                   ` martin rudalics
2021-05-12 14:53                                                                     ` Tassilo Horn
2021-05-12 16:40                                                                       ` martin rudalics
2021-05-12 19:06                                                                         ` Tassilo Horn
2021-05-13  7:55                                                                           ` martin rudalics
2021-05-13  8:08                                                                             ` Tassilo Horn
2021-05-16  8:29                                                                               ` martin rudalics
2021-05-16  8:33                                                                                 ` Tassilo Horn
2021-05-16  9:14                                                                                   ` martin rudalics
2021-05-16  9:16                                                                                     ` Tassilo Horn
2021-05-16 12:24                                                                                       ` martin rudalics
2021-05-16 19:08                                                                                         ` Tassilo Horn
2021-05-17  7:33                                                                                           ` martin rudalics
2021-05-06 14:41                   ` Yuuki Harano
2021-05-09  9:32                     ` Yuuki Harano
2021-05-09 13:47                       ` martin rudalics
2021-05-09 15:30                         ` Yuuki Harano
2021-05-10  8:24                           ` martin rudalics
2021-05-10 13:18                             ` Yuuki Harano
2021-05-10 14:16                               ` martin rudalics
2021-05-10 15:41                                 ` Yuuki Harano
2021-05-10 19:20                                   ` martin rudalics
2021-05-11 14:32                                     ` Yuuki Harano
2021-05-12  8:47                                       ` martin rudalics
2021-05-13  8:48                                         ` Garjola Dindi
2021-05-01 18:59 ` Alan Third
2021-05-02  7:38   ` martin rudalics

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=726883d4-8d13-a3cb-30b7-a74c4b44f8ed@gmx.at \
    --to=rudalics@gmx.at \
    --cc=emacs-devel@gnu.org \
    --cc=tsdh@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).