unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: "Basil L. Contovounesios" <contovob@tcd.ie>
To: martin rudalics <rudalics@gmx.at>
Cc: 48809@debbugs.gnu.org
Subject: bug#48809: 28.0.50; Missing Lucid/GTK2 graphical elements on tiling WM
Date: Fri, 11 Jun 2021 13:02:10 +0100	[thread overview]
Message-ID: <87y2bgfw3h.fsf@tcd.ie> (raw)
In-Reply-To: <1e9040b0-dbb8-fc45-2bb7-6ec6d9bf81eb@gmx.at> (martin rudalics's message of "Fri, 4 Jun 2021 11:17:05 +0200")

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

martin rudalics <rudalics@gmx.at> writes:

>> Further to the tangent in bug#48229, the menu, tool, and scroll bars are
>> sometimes not drawn when creating new Lucid/GTK2 frames under the tiling
>> WM Xmonad.  The missing elements reappear after the affected frames are
>> resized.
>>
>> I cannot reproduce any of these issues with GTK3/PGTK, but the Lucid
>> behaviour is present since at least Emacs 24.5.1 (I don't have old GTK2
>> builds at hand).  Affected Emacs 28 configurations follow my signature.
>
> Thanks.  The only thing that is evident from your examples is that only
> toolkit elements are affected.  Elements Emacs draws itself are not
> missing in your examples.  I suppose the behavior you see happens
> because Xmonad rejects a first size proposal of Emacs for these elements
> and does not draw them, notifies Emacs that it wants different sizes for
> these elements and that notification gets lost - somehow and at least
> sometimes.  I have no good explanation why things work with GTK3 and not
> with GTK2 though.  Are all behaviors you reported reliably reproducible?

Yes, 100% reliable/deterministic AFAICT, at least in my current setup.

> One thing I'd like to exclude is that this is yet another instance of
> Tom Gillespie's observation that Emacs does not play well with window
> managers that do not set _NET_WM_STATE.  x_get_current_wm_state
> apparently fails on such systems and we probably never (or at least not
> always) get a not_hidden frame in the MapNotify case and have to wait
> for a ConfigureNotify instead (which your remark about the reappearance
> of missing elements after resizing would confirm).
>
> To check this please do (setq frame-size-history '(100)) and proceed
> with some of your broken behaviors.  I'd be interested if when you then
> do (frame--size-history) and look into the *frame-size-history* buffer
> you can see
>
> "MapNotify, not hidden & not iconified"

Correct:

0. emacs -Q
1. (setq frame-size-history '(100)) C-j
2. C-x 5 2
   [The left scroll bar of the unselected frame is now missing.]
3. (progn (frame--size-history)
          (pop-to-buffer-same-window "*frame-size-history*"))
   C-x C-e

This gives the following with Lucid, GTK2, and GTK3, respectively:


[-- Attachment #2: Lucid frame size history --]
[-- Type: text/plain, Size: 2124 bytes --]

Frame size history of #<frame *scratch* 0x55fcc2910a78>
x_create_frame_1 (5), TS=80x25~>720x450, NS=80x25~>738x452, IS=80x25~>736x450, MS=18x36 IH IV
tool-bar-lines (1), NS=738x452~>738x470, MS=90x90
gui_figure_window_size (5), TS=720x450~>720x648, TC=80x25~>80x36, NS=738x470~>738x686, IS=736x450~>736x648, MS=18x36 IH IV
update_from_various_frame_slots, PS=738x686, XS=738x686
set_frame_size
EmacsFrameRealize
EmacsFrameResize, PS=738x686, XS=738x686
change_frame_size_1, delayed, PS=738x686, XS=738x686
scroll-bar-width (3), NS=738x686~>754x686, IS=736x648~>752x648, MS=90x90
scroll-bar-height (3), MS=90x90
EmacsFrameResize, PS=754x686, XS=738x661, DS=738x686
change_frame_size_1, delayed, PS=754x686, XS=738x661, DS=738x686
menu-bar-lines (2), MS=90x90
EmacsFrameResize, PS=754x686, XS=738x661, DS=738x661
change_frame_size_1, delayed, PS=754x686, XS=738x661, DS=738x661
EmacsFrameResize, PS=754x686, XS=738x661, DS=738x661
change_frame_size_1, delayed, PS=754x686, XS=738x661, DS=738x661
x_create_frame_2 (0), MS=90x90
x_set_window_size_1, invisible, PS=754x686, XS=754x686, DS=754x686
x_set_window_size_1 (5), MS=18x36 IH IV
EmacsFrameResize, PS=754x686, XS=754x686, DS=754x686
EmacsFrameResize, PS=754x686, XS=754x686, DS=754x686
x_make_frame_visible
EmacsFrameResize, PS=754x686, XS=956x1029, DS=754x686
change_frame_size_1, delayed, PS=754x686, XS=956x1029, DS=754x686
MapNotify, not hidden & not iconified, PS=754x686, DS=956x1029
EmacsFrameResize, PS=754x686, XS=956x1029, DS=956x1029
change_frame_size_1, delayed, PS=754x686, XS=956x1029, DS=956x1029
change_frame_size (5), TS=720x648~>922x991, TC=80x36~>102x55, NS=754x686~>956x1029, IS=752x648~>954x991, MS=18x36 IH IV
EmacsFrameResize, PS=956x1029, XS=956x1029
change_frame_size_1, delayed, PS=956x1029, XS=956x1029
EmacsFrameResize, PS=956x1029, XS=956x1029, DS=956x1029
EmacsFrameResize, PS=956x1029, XS=956x1029, DS=956x1029
EmacsFrameResize, PS=956x1029, XS=956x1029
change_frame_size_1, delayed, PS=956x1029, XS=956x1029
EmacsFrameResize, PS=956x1029, XS=956x1029, DS=956x1029
change_frame_size (5), MS=18x36 IH IV
change_frame_size (5), MS=18x36 IH IV

[-- Attachment #3: GTK2 frame size history --]
[-- Type: text/plain, Size: 1330 bytes --]

Frame size history of #<frame *scratch* 0x557471f85e50>
x_create_frame_1 (5), TS=80x25~>720x450, NS=80x25~>736x450, IS=80x25~>736x450, MS=18x36 IH IV
gui_figure_window_size (5), TS=720x450~>720x648, TC=80x25~>80x36, NS=736x450~>736x648, IS=736x450~>736x648, MS=18x36 IH IV
scroll-bar-width (3), NS=736x648~>752x648, IS=736x648~>752x648, MS=90x90
scroll-bar-height (3), MS=90x90
menu-bar-lines (2), MS=90x90
x_create_frame_2 (0), MS=90x90
xg_frame_set_char_size, invisible, PS=752x648, XS=752x648, DS=752x648
xg_frame_set_char_size (5), MS=18x36 IH IV
x_make_frame_visible
ConfigureNotify, PS=752x648, XS=752x648, DS=752x648
xg_frame_resized, unchanged, PS=752x648, XS=752x648
MapNotify, not hidden & not iconified, PS=752x648, DS=752x648
ConfigureNotify, PS=752x648, XS=956x1029, DS=752x648
xg_frame_resized, changed, PS=752x648, XS=956x1029
change_frame_size_1, delayed, PS=752x648, XS=956x1029, DS=752x648
tool-bar-lines (2), NS=752x648~>956x1029, MS=90x90
xg_frame_set_char_size, visible, PS=752x648, XS=956x1029, DS=956x1029
ConfigureNotify, PS=752x648, XS=956x985, DS=956x1029
xg_frame_resized, changed, PS=752x648, XS=956x985, DS=956x1029
change_frame_size_1, delayed, PS=752x648, XS=956x985, DS=956x1029
change_frame_size (5), TS=720x648~>924x985, TC=80x36~>102x54, NS=752x648~>956x985, IS=752x648~>956x985, MS=18x36 IH IV

[-- Attachment #4: GTK3 frame size history --]
[-- Type: text/plain, Size: 1282 bytes --]

Frame size history of #<frame *scratch* 0x55f7d6cc7ff8>
x_create_frame_1 (5), TS=80x25~>720x450, NS=80x25~>736x450, IS=80x25~>736x450, MS=18x36 IH IV
gui_figure_window_size (5), TS=720x450~>720x648, TC=80x25~>80x36, NS=736x450~>736x648, IS=736x450~>736x648, MS=18x36 IH IV
scroll-bar-width (3), NS=736x648~>752x648, IS=736x648~>752x648, MS=90x90
scroll-bar-height (3), MS=90x90
menu-bar-lines (2), MS=90x90
x_create_frame_2 (0), MS=90x90
xg_frame_set_char_size, invisible, PS=752x648, XS=752x648, DS=752x648
xg_frame_set_char_size (5), MS=18x36 IH IV
x_make_frame_visible
MapNotify, not hidden & not iconified, PS=752x648, DS=752x648
ConfigureNotify, PS=752x648, XS=956x1029, DS=752x648
xg_frame_resized, changed, PS=752x648, XS=956x1029
change_frame_size_1, delayed, PS=752x648, XS=956x1029, DS=752x648
change_frame_size (5), TS=720x648~>924x1029, TC=80x36~>102x57, NS=752x648~>956x1029, IS=752x648~>956x1029, MS=18x36 IH IV
tool-bar-lines (2), MS=90x90
xg_frame_set_char_size, visible, PS=956x1029, XS=956x1029
ConfigureNotify, PS=956x1029, XS=956x988
xg_frame_resized, changed, PS=956x1029, XS=956x988
change_frame_size_1, delayed, PS=956x1029, XS=956x988
change_frame_size (5), TS=924x1029~>924x988, TC=102x57~>102x54, NS=956x1029~>956x988, IS=956x1029~>956x988, MS=18x36 IH IV

[-- Attachment #5: Type: text/plain, Size: 702 bytes --]


> entries.  Alternatively, you could set a watchpoint at xterm.c's
>
>           bool not_hidden = x_get_current_wm_state (f, event->xmap.window, &value, &sticky);
>
> and see whether a value of true is ever returned.

Also confirmed.

> One thing you could try is to change
>
>       if (v == 1 && f->visible != 1)
> 	redisplay_other_windows ();
>
> to
>
>       if (v == 1)
> 	redisplay_other_windows ();
>
> in frame.h's SET_FRAME_VISIBLE so maybe Emacs would send the modified
> elements (modified because the WM changed their size to something Emacs
> didn't ask for) again.  Honestly, I have no hope that this would help.

Unfortunately it doesn't (at least not with Lucid).

Thanks,

-- 
Basil

  reply	other threads:[~2021-06-11 12:02 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-03 12:51 bug#48809: 28.0.50; Missing Lucid/GTK2 graphical elements on tiling WM Basil L. Contovounesios
2021-06-04  9:17 ` martin rudalics
2021-06-11 12:02   ` Basil L. Contovounesios [this message]
2021-06-11 16:40     ` martin rudalics
2021-06-12 10:44       ` Basil L. Contovounesios
2021-06-12 16:46         ` martin rudalics
2021-11-29 19:27           ` Lars Ingebrigtsen
2021-12-13 13:11             ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-12-14 13:39               ` Lars Ingebrigtsen

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=87y2bgfw3h.fsf@tcd.ie \
    --to=contovob@tcd.ie \
    --cc=48809@debbugs.gnu.org \
    --cc=rudalics@gmx.at \
    /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).