Subject: Re: bug#42406: Mouse-wheel scrolling can be flickering

From: Eli Zaretskii <[email-masked]>
Date: Fri, 18 Dec 2020 09:50:37 +0200

> Cc: [email-masked], [email-masked], [email-masked]
> From: martin rudalics <[email-masked]>
> Date: Fri, 18 Dec 2020 00:19:48 +0100
> 
>  > That's not my understanding.  My understanding is that the user
>  > scrolls the _selected_ window, because otherwise wset_update_mode_line
>  > doesn't set update_mode_lines:
>  >
>  >    static void
>  >    wset_update_mode_line (struct window *w)
>  >    {
>  >      /* If this window is the selected window on its frame, set the
>  >         global variable update_mode_lines, so that gui_consider_frame_title
>  >         will consider this frame's title for redisplay.  */
>  >      Lisp_Object fselected_window = XFRAME (WINDOW_FRAME (w))->selected_window;
>  >
>  >      if (WINDOWP (fselected_window) && XWINDOW (fselected_window) == w)
>  >        update_mode_lines = 42;
>  >      else
>  >        w->update_mode_line = true;
>  >    }
> 
> Indeed, you're right.  This doesn't make any sense to me at all.  Why
> should a non-selected frame care about whether I scrolled a window on
> the selected frame?

The non-selected frames shouldn't.  But the selected frame should,
because it needs to re-evaluate its frame title.  And we don't have
any means to tell the display engine to consider only the frame title
on a single frame.  We only have the means to tell it which windows on
which frames may need redrawing, but the frame's title doesn't belong
to any window.

>  >> IIUC windows_or_buffers_changed affects frames as well.  For example, I
>  >> have no idea why making a frame (in)visible should redisplay all other
>  >> frames while moving a frame on the screen apparently does not.
>  >
>  > That's commented out now,
> 
> Not in Fmake_frame_invisible AFAICT.
> 
>  > although the comment seems to hint on the
>  > reason.

What about that comment? doesn't it explain the reason?  AFAIU, that
reason is the need to re-evaluate the menu bar.