Subject: Re: bug#72986: Disabling menu-bar-mode changes size of new frames

From: Reuben Thomas <[email-masked]>
Date: Sat, 26 Oct 2024 13:39:17 +0100

On Sun, 6 Oct 2024 at 16:02, martin rudalics <[email-masked]> wrote:

[Apologies for the delay since last time!]

Let us next check whether our event handler
> drops events because they come with the same sizes.  With the attached
> gtkutil-frame-2.diff and the first frame without minibuffer.
>

Frame size history from opening first frame without minibuffer:

Frame size history of #<frame  *Minibuf-1* - GNU Emacs at ecls
0x5595b811ad50>
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
ConfigureNotify, PS=1328x1260, XS=1328x1258, DS=1328x1260
xg_frame_resized, changed, PS=1328x1260, XS=1328x1258
change_frame_size_1, delayed, PS=1328x1260, XS=1328x1258, DS=1328x1260
change_frame_size (5), TS=1280x1260~>1280x1258, TC=80x36~>80x35,
NS=1328x1260~>1328x1258, IS=1328x1260~>1328x1258, MS=32x70 IH IV
menu-bar-lines (2), MS=160x175
xg_frame_set_char_size, visible, PS=1328x1258, XS=1328x1258
 +values, PS=664x654, XS=664x629
ConfigureNotify, PS=1328x1258, XS=1328x1258
xg_frame_resized, unchanged, PS=1328x1258, XS=1328x1258
tool-bar-lines (2), MS=160x175
xg_frame_set_char_size, visible, PS=1328x1258, XS=1328x1258
 +values, PS=664x629, XS=664x670
ConfigureNotify, PS=1328x1258, XS=1328x1258
xg_frame_resized, unchanged, PS=1328x1258, XS=1328x1258
set_window_configuration (4), MS=160x175 IH IV

I wasn't sure exactly what you wanted, so here's the same for the second
frame:

Frame size history of #<frame  *Minibuf-1* 0x5963494a84d0>
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
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=400x374, DS=1328x1260
xg_frame_resized, changed, PS=1328x1260, XS=400x374
change_frame_size_1, delayed, PS=1328x1260, XS=400x374, DS=1328x1260
change_frame_size (5), TS=1280x1260~>352x374, TC=80x36~>22x10,
NS=1328x1260~>400x374, IS=1328x1260~>400x374, MS=32x70 IH IV
tool-bar-lines (2), MS=160x175
xg_frame_set_char_size, visible, PS=400x374, XS=400x374
 +values, PS=200x187, XS=200x228
ConfigureNotify, PS=400x374, XS=400x374
xg_frame_resized, unchanged, PS=400x374, XS=400x374
set_window_configuration (4), MS=160x175 IH IV

If you have any idea how to debug mutter on your system, we should be
> able to get the cause right from there.

It's possible to turn on debug topics in Mutter at run-time using the
built-in Looking Glass debugger (`lg` from "Run Command" prompt).

Having done this, I can see the output in journalctl.

Using xwininfo, I found that the first window is ID 0x5000148 and the
second window I opened is ID 0x500031c.

Then, the logs show, grepping for the first ID:

Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x5000148 in
move from 50,108 1328x1430 to 50,108 1328x1430
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 has
height_inc (34) that does not evenly divide min_height - base_height (340 -
116); thus >
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets
gravity 1
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets
resize width inc: 16 height inc: 34
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets min
size 128 x 340
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets
base size 64 x 116
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Updating WM_NORMAL_HINTS
for 0x5000148
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x5000148 in
move from 50,108 1328x1430 to 50,108 1328x1430
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x5000148 in
move from 50,108 1328x1314 to 50,108 1328x1430
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 has
height_inc (34) that does not evenly divide min_height - base_height (238 -
116); thus >
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets
gravity 1
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets
resize width inc: 16 height inc: 34
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets min
size 128 x 238
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets
base size 64 x 116
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Updating WM_NORMAL_HINTS
for 0x5000148
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x5000148 in
move from 50,108 1328x1314 to 50,108 1328x1314
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x5000148 in
move from 50,108 1328x1314 to 50,108 1328x1314
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x5000148 in
move from 50,108 1328x1364 to 50,108 1328x1314
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets
gravity 1
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets
resize width inc: 16 height inc: 34
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets min
size 128 x 102
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets
base size 64 x 34
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Updating WM_NORMAL_HINTS
for 0x5000148
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets
gravity 1
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets
resize width inc: 16 height inc: 34
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets min
size 128 x 102
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Window 0x5000148 sets
base size 64 x 34
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Updating WM_NORMAL_HINTS
for 0x5000148
Oct 26 13:33:47 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x5000148 in
move from 50,108 1328x1366 to 50,108 1328x1364

and for the second ID:

Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x500031c in
move from 130,188 400x512 to 130,188 400x512
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c has
height_inc (34) that does not evenly divide min_height - base_height (340 -
116); thus >
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c sets
gravity 1
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c sets
resize width inc: 16 height inc: 34
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c sets min
size 128 x 340
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c sets
base size 64 x 116
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Updating WM_NORMAL_HINTS
for 0x500031c
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x500031c in
move from 130,188 400x512 to 130,188 400x512
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x500031c in
move from 130,188 400x430 to 130,188 400x512
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c has
height_inc (34) that does not evenly divide min_height - base_height (238 -
116); thus >
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c sets
gravity 1
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c sets
resize width inc: 16 height inc: 34
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c sets min
size 128 x 238
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c sets
base size 64 x 116
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Updating WM_NORMAL_HINTS
for 0x500031c
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x500031c in
move from 130,188 400x430 to 130,188 400x456
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x500031c in
move from 130,188 400x430 to 130,188 400x456
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Sending synthetic
configure notify to 0x500031c with x: 130 y: 244 w: 400 h: 374
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: require_titlebar_visible
for 0x500031c toggled to TRUE
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x500031c in
move from 0,58 400x430 to 0,0 400x456
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Setting
_NET_FRAME_EXTENTS on managed window 0x500031c to left = 0, right = 0, top
= 56, bottom = 0
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: require_titlebar_visible
for 0x500031c toggled to FALSE
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Constraining 0x500031c in
move from 0,0 1328x1258 to 0,0 400x456
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c sets
gravity 1
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c sets
resize width inc: 16 height inc: 34
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c sets min
size 128 x 102
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c sets
base size 64 x 34
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Updating WM_NORMAL_HINTS
for 0x500031c
Oct 26 13:33:48 ecls gnome-shell[3227]: GEOMETRY: Window 0x500031c sets min
height to 0, which makes no sense

These traces include the "Sending synthetic configure" message you
mentioned, hopefully helpful!

(At least good to know that it's easy to turn on debugging in a production
build.)

-- 
https://rrt.sc3d.org