Subject: Re: bug#65183: 29.1; Child frame moving and resizing problems

From: Eli Zaretskii <[email-masked]>
Date: Thu, 10 Aug 2023 20:31:21 +0300

[Please use Reply All to reply, so as to keep the bug address CC'ed.]

> From: 陈宇迪 <[email-masked]>
> Date: Thu, 10 Aug 2023 16:07:19 +0100
> 
> About problem 1:
> Sorry, I didn't express what I meant clearly. 
> In the code I gave, the `set-frame-size' and `set-frame-position' are in the binding
> where `inhibit-redisplay' is `t'. So, both the resizing and the moving are expected
> to be displayed (shown on the screen) after the let binding. 
> However, the resizing and the moving are displayed separately, step by step.
> This is what I cannot understand.

As I tried to explain, the frame is redrawn after your function
returns, and by that time the binding of inhibit-redisplay is no
longer in effect.

You see, in Emacs, redisplay happens when Emacs is idle.  Lisp code
invoked from the Emacs commands changes various variables and
parameters: the buffer text, the window and frame dimensions, etc.;
then the command exits, Emacs gets back to its idle loop, and then
redisplay is called and reflects the changes on the screen.  But by
that time your binding is already undone.

> About problem 2:
> It's said to lean that the order is not controllable from Emacs. 
> But if the first problem can be solved, the order would not matter.
> 
> It seems that the problems only occur on specific platforms.
> I am using KDE with KWin (X11) version 5.27.7. I hope this info can help.
> If anyone tells me how to tweak the KWin to find out the cause, I will try it.