Package: emacs;
Message #164 received at 72986 <at> debbugs.gnu.org (full text, mbox):
From: martin rudalics <rudalics <at> gmx.at> To: Reuben Thomas <rrt <at> sc3d.org> Cc: Po Lu <luangruo <at> yahoo.com>, Eli Zaretskii <eliz <at> gnu.org>, 72986 <at> debbugs.gnu.org Subject: Re: bug#72986: Disabling menu-bar-mode changes size of new frames Date: Fri, 4 Oct 2024 17:01:25 +0200
> First frame with menu bar: > > Frame size history of #<frame *Minibuf-1* - GNU Emacs at dwks > 0x59e577a85750> > x_create_frame_1 (5), TS=80x25~>1280x875, NS=80x25~>1296x875, > IS=80x25~>1296x875, MS=32x70 IH IV > gui_figure_window_size (5), TS=1280x875~>1280x1260, TC=80x25~>80x36, > NS=1296x875~>1296x1260, IS=1296x875~>1296x1260, MS=32x70 IH IV > scroll-bar-width (3), NS=1296x1260~>1328x1260, IS=1296x1260~>1328x1260, > MS=160x175 > scroll-bar-height (3), MS=160x175 > menu-bar-lines (2), MS=160x175 > x_create_frame_2 (0), MS=160x175 > xg_frame_set_char_size, invisible, PS=1328x1260, XS=1328x1260, DS=1328x1260 This is our first explicit call to set the frame size albeit for an invisible frame. > xg_frame_set_char_size (5), MS=32x70 IH IV > x_make_frame_visible > MapNotify, not hidden & not iconified, PS=1328x1260, DS=1328x1260 > ConfigureNotify, PS=1328x1260, XS=1328x1260, DS=1328x1260 So far I failed to notice that first ConfigureNotify following the MapNotify. It comes with the expected values XS=1328x1260. Where on earth does it come from ... > xg_frame_resized, unchanged, PS=1328x1260, XS=1328x1260 > ConfigureNotify, PS=1328x1260, XS=1328x1258, DS=1328x1260 ... and where does this with XS=1328x1258 come from? On my system, I get just one ConfigureNotify for each xg_frame_set_char_size. > xg_frame_resized, changed, PS=1328x1260, XS=1328x1258 > change_frame_size_1, delayed, PS=1328x1260, XS=1328x1258, DS=1328x1260 Here we steadfastly reject the 1258 pixels conceded to us ... > tool-bar-lines (2), MS=160x175 > xg_frame_set_char_size, visible, PS=1328x1260, XS=1328x1260, DS=1328x1258 > +values, PS=664x654, XS=664x696 ... ask again with 696 (/ (+ 1260 50 82) 2) ... > ConfigureNotify, PS=1328x1260, XS=1328x1258, DS=1328x1258 > xg_frame_resized, changed, PS=1328x1260, XS=1328x1258, DS=1328x1258 > change_frame_size_1, delayed, PS=1328x1260, XS=1328x1258, DS=1328x1258 ... and finally succumb because ConfigureNotify offers us those lousy 1258 pixels once more and we don't delay the change any more. > change_frame_size (5), TS=1280x1260~>1280x1258, TC=80x36~>80x35, > NS=1328x1260~>1328x1258, IS=1328x1260~>1328x1258, MS=32x70 IH IV > set_window_configuration (4), MS=160x175 IH IV We end up with 35 lines as before. > First frame without menu bar: > > Frame size history of #<frame *Minibuf-1* - GNU Emacs at dwks > 0x63f23d459690> > x_create_frame_1 (5), TS=80x25~>1280x875, NS=80x25~>1296x875, > IS=80x25~>1296x875, MS=32x70 IH IV > gui_figure_window_size (5), TS=1280x875~>1280x1260, TC=80x25~>80x36, > NS=1296x875~>1296x1260, IS=1296x875~>1296x1260, MS=32x70 IH IV > scroll-bar-width (3), NS=1296x1260~>1328x1260, IS=1296x1260~>1328x1260, > MS=160x175 > scroll-bar-height (3), MS=160x175 > menu-bar-lines (2), MS=160x175 > x_create_frame_2 (0), MS=160x175 > xg_frame_set_char_size, invisible, PS=1328x1260, XS=1328x1260, DS=1328x1260 > xg_frame_set_char_size (5), MS=32x70 IH IV > x_make_frame_visible > MapNotify, not hidden & not iconified, PS=1328x1260, DS=1328x1260 > ConfigureNotify, PS=1328x1260, XS=1328x1260, DS=1328x1260 > xg_frame_resized, unchanged, PS=1328x1260, XS=1328x1260 > menu-bar-lines (2), MS=160x175 > xg_frame_set_char_size, visible, PS=1328x1260, XS=1328x1260, DS=1328x1260 > +values, PS=664x655, XS=664x630 The 630 here are the next strange thing (they existed in all previous runs you reported but I didn't notice them either). For some reason the height of the tool bar is not added when we do not add the one of the menu bar. This must be a bug on our side. > ConfigureNotify, PS=1328x1260, XS=1328x1308, DS=1328x1260 This one is truly remarkable: 1308 is 1258 + 50 and 50 pixels are the height of your menu bar. Why would anyone add the menu bar height here when we just asked to not add neither the height of the menu nor that of the tool bar? > xg_frame_resized, changed, PS=1328x1260, XS=1328x1308 > change_frame_size_1, delayed, PS=1328x1260, XS=1328x1308, DS=1328x1260 > change_frame_size (5), TS=1280x1260~>1280x1308, TC=80x36~>80x37, So this gets us 37 lines, one too many ... > NS=1328x1260~>1328x1308, IS=1328x1260~>1328x1308, MS=32x70 IH IV > tool-bar-lines (2), MS=160x175 > xg_frame_set_char_size, visible, PS=1328x1308, XS=1328x1308 > +values, PS=664x654, XS=664x695 > ConfigureNotify, PS=1328x1308, XS=1328x1176 > xg_frame_resized, changed, PS=1328x1308, XS=1328x1176 > change_frame_size_1, delayed, PS=1328x1308, XS=1328x1176 > change_frame_size (5), TS=1280x1308~>1280x1176, TC=80x37~>80x33, ... here we shrink back to 33 lines ... > NS=1328x1308~>1328x1176, IS=1328x1308~>1328x1176, MS=32x70 IH IV > ConfigureNotify, PS=1328x1176, XS=1328x1292 > xg_frame_resized, changed, PS=1328x1176, XS=1328x1292 > change_frame_size_1, delayed, PS=1328x1176, XS=1328x1292 > change_frame_size (5), TS=1280x1176~>1280x1292, TC=80x33~>80x36, > NS=1328x1176~>1328x1292, IS=1328x1176~>1328x1292, MS=32x70 IH IV ... and here we get the correct number of lines albeit with a surplus of 12 pixels. How does that first frame without menu bar look to you? > Second frame with menu bar: > > Frame size history of #<frame *Minibuf-1* 0x55cd2d33c8f0> > x_create_frame_1 (5), TS=80x25~>1280x875, NS=80x25~>1296x875, > IS=80x25~>1296x875, MS=32x70 IH IV > gui_figure_window_size (5), TS=1280x875~>1280x1260, TC=80x25~>80x36, > NS=1296x875~>1296x1260, IS=1296x875~>1296x1260, MS=32x70 IH IV > scroll-bar-width (3), NS=1296x1260~>1328x1260, IS=1296x1260~>1328x1260, > MS=160x175 > scroll-bar-height (3), MS=160x175 > menu-bar-lines (2), MS=160x175 > x_create_frame_2 (0), MS=160x175 > xg_frame_set_char_size, invisible, PS=1328x1260, XS=1328x1260, DS=1328x1260 > xg_frame_set_char_size (5), MS=32x70 IH IV > x_make_frame_visible > MapNotify, not hidden & not iconified, PS=1328x1260, DS=1328x1260 > ConfigureNotify, PS=1328x1260, XS=400x340, DS=1328x1260 This is the usual minimization attempt ... > xg_frame_resized, changed, PS=1328x1260, XS=400x340 > change_frame_size_1, delayed, PS=1328x1260, XS=400x340, DS=1328x1260 > change_frame_size (5), TS=1280x1260~>352x340, TC=80x36~>22x9, ... which succeeds here. There's no good first ConfigureNotify event and no second ConfigureNotify as with the initial frame. The remainder can be ignored. This time I'll have to look into our code first - something is fishy. If there are any volunteers on GNOME who can apply a patch and check whether they get the same either buggy or correct behavior, preferably with a scaled screen, I'd be very, very grateful. martin
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.