emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Tabs


From: Eli Zaretskii
Subject: Re: Tabs
Date: Wed, 09 Oct 2019 11:37:09 +0300

> Date: Wed, 9 Oct 2019 01:43:50 +0200
> From: Ergus <address@hidden>
> Cc: address@hidden, address@hidden, address@hidden
> 
> >                  if (FRAME_GARBAGED_P (f))
> >                 {
> >                   fset_redisplay (f);
> >                   f->garbaged = false;  <<<<<<<<<<<<<<<<<<<<
> >                   goto retry_frame;
> >                 }
> >
> >(if your repository is up to date and you are on the master branch,
> >this should be line 15690), does the breakpoint fire after you type
> >the "C-x 6 f FILENAME RET" command?
> 
> No actually. I only get some messages:
> But nothing else; the breakpoint is not reached.

OK, so this is not due to the recent change which introduced the above
code.

In your original message you wrote:

> This used to work fine before... I just pull and recompiled (since
> saturday)...

Can you tell what was the latest date when this problem in GUI frames
didn't exist in your builds?

> Something else I observe is that when I leave the desktop and return
> back; the tab-bar is visible, but with the cursor there. When I move the
> cursor horizontally, the tabs image is substituted with the text that is
> supposed to be in the first visible line that is supposed to be bellow
> the tab-bar (attached image with the config.log open.)

Yes, these and other symptoms you described all tell one thing: that
some redisplay optimization is taken that shouldn't be used in this
case.  IOW, Emacs optimizes redisplay ignoring the fact that there is
now a tab bar, which usurps portions of display that previously
belonged to some window.  I just don't yet understand why this
happens, because the call to SET_FRAME_GARBAGED in
x_change_tab_bar_height should have had the effect of disabling all
the redisplay optimizations for this frame...

Does the change below fix this problem, per chance?

diff --git a/src/xfns.c b/src/xfns.c
index 20e63a2..f2264be 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -1660,6 +1660,8 @@ x_change_tab_bar_height (struct frame *f, int height)
 
   if ((height < old_height) && WINDOWP (f->tab_bar_window))
     clear_glyph_matrix (XWINDOW (f->tab_bar_window)->current_matrix);
+  else if (height > old_height)
+    clear_current_matrices (f);
 
   /* Recalculate tabbar height.  */
   f->n_tab_bar_rows = 0;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]