Open gvim
Use a Plugin say Nerdtree and do NerdTreeToggle repeatedly
The Gvim window starts reducing its size vertically
Open gvim
Type in :tabnew and :tabclose repeatedly
The Gvim window starts reducing its size horizontally
vertical_window_size_reduction.webm
horizontal_window_size_reduction.webm
Window should never be resized
VIM 9.0
Operating system: Kubuntu 23.10
Terminal: NA
No response
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
I see this with gvim (with GTK3) and :tabnew
and :tabclose
, except that the number of lines, &lines, reduces, and I'd call that reducing vertically.
It's to do with drawing the tab line. Setting stal=2
then setting it to 0 has the same effect. Adding the tab line reduces &lines by 3, and removing it only increases &lines by 2. I suspect that the font used to draw the tab label is relevant; this font comes from the desktop environment and maybe gvim gets its height wrong. There may also be a race condition as I could sometimes get an intermediate DE window size.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
You can use :set guioptions+=k
I think
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
guioptions+=k
@chrisbra : I tried this and it does not work.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
so, if you selectively disable gui elements (meaning disabling menu, statuslines etc from 'guioptions', which sub-option does cause this behaviour then? Also, you did not mention: What GUI you used, what Windowmanager, does it happen with a different X11 Window manager, etc?
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
@chrisbra : My guioptions has menubar and toolbar disabled.
I don't have any other guioptions in my config. I have added guioptions+=k now to test and it did not make any difference.
I set statusline=0 and disabled vim-airline and the airline themes and it still did not make any difference.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
I don't see how airline could interfere here. Please try to reproduce using vim --clean
and please also show the complete : :version
output.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
@chrisbra : About the vim.gtk3, please disregard that as it opened terminal vim which I got confused with gvim.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
@chrisbra : I tried gvim --clean. One thing I noticed is when I change the font to a higher size it starts the reduction. I tried tabnew and tabclose to reduce it horizontally.
Version information:
image.png (view on web)
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
please don't post images.
One thing I noticed is when I change the font to a higher size it starts the reduction.
That is expected I think. If you change the font size, the space needed to keep the same columns and lines visible will also change of course.
I tried tabnew and tabclose to reduce it horizontally.
I don't understand what you are trying to say here.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
The issue is flaky, but here's a typical sequence, running gvim --clean
from a 24 line xterm:
:echo &lines
24
:set stal=2
:set stal=0
:echo &lines
22
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
I tried tabnew and tabclose to reduce it horizontally.
I don't understand what you are trying to say here.
I meant that I could trigger the issue of constant row reduction but doing doing a series of repetitive :tabnew and :tabclose commands like in the 2nd video of the description.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
Do you have a video of how guioptions+=k
doesn't work? The issue should be exactly what that option is supposed to fix. So I'm curious if this is a bug, or I'm not understanding the issue here.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
@ychin : Even with guioptions+=k
the issue is the same. I have it in my .gvimrc
.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
Have you verified, it is actually in your 'guioptions' setting? Check the output of :set guioptions?
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
@chrisbra : Yes the output is guioptions=aegirLtk
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
I think there is a bug in the GTK3 code related to the GUI shell size versus columns
. I've been trying to convert the CI job to run the GTK3 code instead of the GTK2 code and many tests fails due to broken expectations re: the window size. I've modified runtest.vim
to record the columns
and lines
values before and after each test, logging any diff. See below for a few sample runs (omitting the very verbose errors resulting from broken window size expectations). You can see that most of the time columns
shrinks (as reported here) but once in a while it grows too.
Each of these came from the command:
DISPLAY=:99 make test_breakindent GUI_FLAG=-g
From test_breakindent.vim:
Executed Test_breakindent01() in 0.008244 seconds columns changed: 80->78
Executed Test_breakindent01_vartabs() in 0.024820 seconds
Executed Test_breakindent02() in 0.005991 seconds
Executed Test_breakindent02_vartabs() in 0.005652 seconds
Executed Test_breakindent03() in 0.025799 seconds
Executed Test_breakindent03_vartabs() in 0.005686 seconds
Executed Test_breakindent04() in 0.015795 seconds
Executed Test_breakindent04_vartabs() in 0.014460 seconds
Executed Test_breakindent05() in 0.006040 seconds
Executed Test_breakindent05_vartabs() in 0.016876 seconds columns changed: 78->76
Executed Test_breakindent06() in 0.024570 seconds
Executed Test_breakindent06_vartabs() in 0.005311 seconds
Executed Test_breakindent07() in 0.006000 seconds
Executed Test_breakindent07_vartabs() in 0.043972 seconds
Executed Test_breakindent07a() in 0.005462 seconds
Executed Test_breakindent07a_vartabs() in 0.017949 seconds
Executed Test_breakindent08() in 0.020008 seconds
Executed Test_breakindent08_vartabs() in 0.035646 seconds
Executed Test_breakindent08a() in 0.065498 seconds
Executed Test_breakindent08a_vartabs() in 0.058515 seconds
Executed Test_breakindent09() in 0.048505 seconds
Executed Test_breakindent09_vartabs() in 0.040821 seconds
Executed Test_breakindent10() in 0.047771 seconds
Executed Test_breakindent10_vartabs() in 0.040107 seconds
Executed Test_breakindent11() in 0.012893 seconds
Executed Test_breakindent11_vartabs() in 0.004225 seconds
Executed Test_breakindent12() in 0.005940 seconds
Executed Test_breakindent12_vartabs() in 0.013991 seconds
Executed Test_breakindent13() in 0.030896 seconds columns changed: 76->77
Executed Test_breakindent13_vartabs() in 0.004521 seconds
Executed Test_breakindent14() in 0.045080 seconds
Executed Test_breakindent14_vartabs() in 0.005946 seconds
Executed Test_breakindent15() in 0.027965 seconds
Executed Test_breakindent15_vartabs() in 0.005490 seconds
Executed Test_breakindent16() in 0.061620 seconds
Executed Test_breakindent16_vartabs() in 0.008427 seconds
Executed Test_breakindent17_vartabs() in 0.070496 seconds
Executed Test_breakindent18_vartabs() in 0.065187 seconds
Executed Test_breakindent19_sbr_nextpage() in 0.053243 seconds
Executed Test_breakindent20_cpo_n_nextpage() in 0.036682 seconds
2hExecuted Test_breakindent20_list() in 0.104901 seconds31H
Executed Test_breakindent_change_display_uhex() in 0.067217 seconds
Executed Test_breakindent_column() in 0.058603 seconds
Executed Test_breakindent_list_split() in 0.023736 seconds
Executed Test_breakindent_min_with_signcol() in 0.063941 seconds
Executed Test_breakindent_with_double_width_wrap() in 0.002282 seconds
2hExecuted Test_cursor_position_with_showbreak() in 0.115834 seconds31H
2hExecuted Test_linebreak_list() in 0.113023 seconds31H
Executed Test_no_extra_indent() in 0.037791 seconds
Executed Test_no_spurious_match() in 0.006317 seconds
2hExecuted Test_visual_starts_before_skipcol() in 0.122024 seconds31H
Executed Test_window_resize_with_linebreak() in 0.073112 seconds
2hExecuted 52 tests in 2.254781 seconds31H
From test_breakindent.vim:
Executed Test_breakindent01() in 0.034208 seconds
Executed Test_breakindent01_vartabs() in 0.005564 seconds
Executed Test_breakindent02() in 0.006136 seconds
Executed Test_breakindent02_vartabs() in 0.043047 seconds
Executed Test_breakindent03() in 0.006314 seconds
Executed Test_breakindent03_vartabs() in 0.018169 seconds
Executed Test_breakindent04() in 0.039299 seconds
Executed Test_breakindent04_vartabs() in 0.005937 seconds
Executed Test_breakindent05() in 0.005664 seconds
Executed Test_breakindent05_vartabs() in 0.039138 seconds
Executed Test_breakindent06() in 0.014858 seconds
Executed Test_breakindent06_vartabs() in 0.006066 seconds
Executed Test_breakindent07() in 0.016926 seconds columns changed: 80->78
Executed Test_breakindent07_vartabs() in 0.033061 seconds
Executed Test_breakindent07a() in 0.009209 seconds
Executed Test_breakindent07a_vartabs() in 0.017463 seconds columns changed: 78->76
Executed Test_breakindent08() in 0.036151 seconds
Executed Test_breakindent08_vartabs() in 0.018656 seconds
Executed Test_breakindent08a() in 0.045133 seconds
Executed Test_breakindent08a_vartabs() in 0.006499 seconds
Executed Test_breakindent09() in 0.016156 seconds columns changed: 76->74
Executed Test_breakindent09_vartabs() in 0.024268 seconds
Executed Test_breakindent10() in 0.008825 seconds
Executed Test_breakindent10_vartabs() in 0.018983 seconds
Executed Test_breakindent11() in 0.037116 seconds
Executed Test_breakindent11_vartabs() in 0.005148 seconds
Executed Test_breakindent12() in 0.006291 seconds
Executed Test_breakindent12_vartabs() in 0.041116 seconds
Executed Test_breakindent13() in 0.004630 seconds
Executed Test_breakindent13_vartabs() in 0.004521 seconds
Executed Test_breakindent14() in 0.040437 seconds
Executed Test_breakindent14_vartabs() in 0.006181 seconds
Executed Test_breakindent15() in 0.021619 seconds
Executed Test_breakindent15_vartabs() in 0.007401 seconds columns changed: 74->72
Executed Test_breakindent16() in 0.007823 seconds
Executed Test_breakindent16_vartabs() in 0.037218 seconds
Executed Test_breakindent17_vartabs() in 0.007813 seconds
Executed Test_breakindent18_vartabs() in 0.051014 seconds
Executed Test_breakindent19_sbr_nextpage() in 0.048982 seconds
Executed Test_breakindent20_cpo_n_nextpage() in 0.036810 seconds
Executed Test_breakindent20_list() in 0.068424 seconds
Executed Test_breakindent_change_display_uhex() in 0.023108 seconds
Executed Test_breakindent_column() in 0.046365 seconds
Executed Test_breakindent_list_split() in 0.031088 seconds
Executed Test_breakindent_min_with_signcol() in 0.023367 seconds
Executed Test_breakindent_with_double_width_wrap() in 0.032051 seconds
2hExecuted Test_cursor_position_with_showbreak() in 8.338849 seconds31H
From test_breakindent.vim:
Executed Test_breakindent01() in 0.008177 seconds columns changed: 80->78
Executed Test_breakindent01_vartabs() in 0.033559 seconds
Executed Test_breakindent02() in 0.006209 seconds
Executed Test_breakindent02_vartabs() in 0.005917 seconds
Executed Test_breakindent03() in 0.034174 seconds
Executed Test_breakindent03_vartabs() in 0.006000 seconds
Executed Test_breakindent04() in 0.018986 seconds
Executed Test_breakindent04_vartabs() in 0.035403 seconds
Executed Test_breakindent05() in 0.005817 seconds
Executed Test_breakindent05_vartabs() in 0.022196 seconds
Executed Test_breakindent06() in 0.044402 seconds
Executed Test_breakindent06_vartabs() in 0.037788 seconds
Executed Test_breakindent07() in 0.018456 seconds
Executed Test_breakindent07_vartabs() in 0.072653 seconds
Executed Test_breakindent07a() in 0.041743 seconds columns changed: 78->76
Executed Test_breakindent07a_vartabs() in 0.005565 seconds
Executed Test_breakindent08() in 0.036957 seconds
Executed Test_breakindent08_vartabs() in 0.049017 seconds
Executed Test_breakindent08a() in 0.055215 seconds
Executed Test_breakindent08a_vartabs() in 0.033010 seconds
Executed Test_breakindent09() in 0.034995 seconds
Executed Test_breakindent09_vartabs() in 0.015717 seconds
Executed Test_breakindent10() in 0.059655 seconds
Executed Test_breakindent10_vartabs() in 0.038409 seconds
Executed Test_breakindent11() in 0.004908 seconds
Executed Test_breakindent11_vartabs() in 0.004716 seconds
Executed Test_breakindent12() in 0.039687 seconds
Executed Test_breakindent12_vartabs() in 0.005792 seconds
Executed Test_breakindent13() in 0.019801 seconds
Executed Test_breakindent13_vartabs() in 0.064249 seconds columns changed: 76->77
Executed Test_breakindent14() in 0.051775 seconds
Executed Test_breakindent14_vartabs() in 0.035018 seconds
Executed Test_breakindent15() in 0.098492 seconds
Executed Test_breakindent15_vartabs() in 0.042824 seconds
2hExecuted Test_breakindent16() in 0.101466 seconds31H
Executed Test_breakindent16_vartabs() in 0.063217 seconds
Executed Test_breakindent17_vartabs() in 0.058344 seconds
Executed Test_breakindent18_vartabs() in 0.065324 seconds
2hExecuted Test_breakindent19_sbr_nextpage() in 0.154813 seconds31H
2hExecuted Test_breakindent20_cpo_n_nextpage() in 0.206624 seconds31H
2hExecuted Test_breakindent20_list() in 0.225701 seconds31H
Executed Test_breakindent_change_display_uhex() in 0.052691 seconds
2hExecuted Test_breakindent_column() in 0.174153 seconds31H
Executed Test_breakindent_list_split() in 0.059866 seconds
2hExecuted Test_breakindent_min_with_signcol() in 0.147403 seconds31H
Executed Test_breakindent_with_double_width_wrap() in 0.004910 seconds
2hExecuted Test_cursor_position_with_showbreak() in 8.291256 seconds31H
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
Yeah playing with or without guioptions=k it does seem like the GTK3 implementation is kind of buggy.
With guioptions+=k the GUI doesn't seem to stick to a fixed size and will gradually change size when scroll bars are added/removed.
Without guioptions+=, doing repeated tabnew
and tabclose
also results in a buggy behavior since tabnew
will make the window bigger, but closing the tab would not make it smaller.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
In gui.c
@yegappan left a helpful note re: a GTK quirk:
if (need_set_size != 0)
{
#ifdef FEAT_GUI_GTK
long prev_Columns = Columns;
long prev_Rows = Rows;
#endif
// Adjust the size of the window to make the text area keep the
// same size and to avoid that part of our window is off-screen
// and a scrollbar can't be used, for example.
gui_set_shellsize(FALSE, fix_size, need_set_size);
#ifdef FEAT_GUI_GTK
// GTK has the annoying habit of sending us resize events when
// changing the window size ourselves. This mostly happens when
// waiting for a character to arrive, quite unpredictably, and may
// change Columns and Rows when we don't want it. Wait for a
// character here to avoid this effect.
// If you remove this, please test this command for resizing
// effects (with optional left scrollbar): ":vsp|q|vsp|q|vsp|q".
// Don't do this while starting up though.
// Don't change Rows when adding menu/toolbar/tabline.
// Don't change Columns when adding vertical toolbar.
if (!gui.starting && need_set_size != (RESIZE_VERT | RESIZE_HOR))
(void)char_avail();
if ((need_set_size & RESIZE_VERT) == 0)
Rows = prev_Rows;
if ((need_set_size & RESIZE_HOR) == 0)
Columns = prev_Columns;
#endif
}
If I run GTK under Xnest (so no window manager, much like the test suite) and run that command :vsp|q|vsp|q|vsp|q
it reliably reproduces the incorrect columns
and window width due to the vertical scrollbars being added/removed due the vsplit
invocations.
As a diagnostic, I placed a call to gui_mch_update()
at the very end of execute_common
. That resolves the very specific manual reproduction. It works by ensuring that the visibility change of the vertical scrollbars is fully realized before the next command is run. While obviously not a fix, I think it hints at the cause.
gui_set_shellsize
we are supposed to make sure the GUI shell accommodates Columns
. The new pixel width is calculated from Columns
and Columns
is copied to gui.num_cols
. Then the GUI shell is actually resized with gui_mch_set_shellsize
.gui_resize_shell
to make the UI layout reflect the new size of the GUI shell. Here gui.num_cols
is calculated based on that pixel width.gui_get_shellsize
we copy the value of gui.num_cols
to Columns
.I suspect we are missing one or more calls to gui_mch_update()
that is causing these calls to be interleaved incorrectly in some cases.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
Making gui_get_base_width
always return enough room for both scrollbars does eliminate the spurious Columns
resizing. So it likely has to do with the order in which Columns
and the pixel width of the GUI shell are calculate versus the order in which the scrollbars are shown/hidden.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
I was about to report this bug when I discovered the issue here. Here are my additional observations, for whatever good they might do.
I did my testing on an Ubuntu 22.04.05 system, which uses Wayland by default. I logged out and back in and did some further testing using X. The bug occurs with both systems, but the shrinkage after :tabnew/:tabclose happens with larger jumps in height when using Wayland than X. Also, the window width decreases when using Wayland but not when using X.
I tested this using Vim 9.1.1726, built with the default config (Huge version with GTK3 GUI), and running the following command in my vim project directory from an xterm with 24 lines and 80 columns.
$ VIMRUNTIME=runtime src/vim -g -N -u NONE -i NONE
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
Since #13575 (comment) brought up the possibility of miscalculating widths, in case it's relevant for identifying it for this issue, too, I'll add that I'm seeing set columns=80
somehow ending up as columns=79
when Gvim v9.1.1734 on Arch Linux with Wayland pops up. Something odd is going on for sure.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.
I took another look at this and it appears that with Wayland there is an extra Configure
event coming from GDK that does not happen for X11. I'm not entirely sure why that is but it isn't super surprising. GDK uses the frame clock to schedule layout events and one of the big design differences between Wayland and X11 is how they interface with the frame clock. Here is the backtrace when running with Wayland:
#0 gui_get_shellsize () at gui.c:1658
#1 0x0000555555831153 in ui_get_shellsize () at ui.c:611
#2 0x00005555558033f2 in set_shellsize_inner (width=0, height=0, mustset=0) at term.c:3717
#3 0x00005555558035bc in set_shellsize (width=0, height=0, mustset=0) at term.c:3815
#4 0x0000555555803332 in shell_resized () at term.c:3663
#5 0x00005555558b11ae in gui_resize_shell (pixel_width=1744, pixel_height=1523) at gui.c:1608
#6 0x00005555558c1309 in form_configure_event (widget=0x555555b4d050 [GtkForm], event=0x7fffffffbac0, data=0x0) at gui_gtk_x11.c:4366
#7 0x00007ffff7897caa in ??? () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#12 0x00007ffff72db663 in <emit signal 'configure-event' on instance 0x555555b4d050 [GtkForm]>
(instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3597
#8 0x00007ffff72bf950 in g_closure_invoke
(closure=0x555555efd0e0, return_value=0x7fffffffb630, n_param_values=n_param_values@entry=2, param_values=param_values@entry=0x7fffffffb6c0, invocation_hint=invocation_hint@entry=0x7fffffffb610) at ../../../gobject/gclosure.c:835
#9 0x00007ffff72d3d43 in signal_emit_unlocked_R
(node=node@entry=0x7fffffffb7a0, detail=detail@entry=0, instance=instance@entry=0x555555b4d050, emission_return=emission_return@entry=0x7fffffffb820, instance_and_params=instance_and_params@entry=0x7fffffffb6c0) at ../../../gobject/gsignal.c:3902
#10 0x00007ffff72d5032 in signal_emit_valist_unlocked
(instance=instance@entry=0x555555b4d050, signal_id=signal_id@entry=103, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffb900)
at ../../../gobject/gsignal.c:3547
#11 0x00007ffff72db5a6 in g_signal_emit_valist (instance=0x555555b4d050, signal_id=103, detail=0, var_args=0x7fffffffb900)
at ../../../gobject/gsignal.c:3277
#13 0x00007ffff7b55cbc in ??? () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#14 0x00007ffff7a083ea in gtk_main_do_event () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#15 0x00005555558c7bd8 in form_send_configure (form=0x555555b4d050 [GtkForm]) at gui_gtk_f.c:863
#16 0x00005555558c7193 in form_size_allocate (widget=0x555555b4d050 [GtkForm], allocation=0x7fffffffbbf0) at gui_gtk_f.c:520
#17 0x00007ffff7b60bd0 in gtk_widget_size_allocate_with_baseline () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#18 0x00007ffff78d4235 in ??? () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#19 0x00007ffff78d454b in ??? () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#20 0x00007ffff792e7ee in ??? () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#21 0x00007ffff78d2e14 in ??? () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#22 0x00007ffff7b60bd0 in gtk_widget_size_allocate_with_baseline () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#23 0x00007ffff7b78a13 in ??? () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#28 0x00007ffff72db663 in <emit signal 'size-allocate' on instance 0x555555c07050 [GtkWindow]>
(instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3597
#24 0x00007ffff72bf950 in g_closure_invoke
(closure=closure@entry=0x555555a912a0, return_value=0x0, n_param_values=n_param_values@entry=2, param_values=param_values@entry=0x7fffffffc1a0, invocation_hint=invocation_hint@entry=0x7fffffffc0f0) at ../../../gobject/gclosure.c:835
#25 0x00007ffff72d3e70 in signal_emit_unlocked_R
(node=node@entry=0x7fffffffc280, detail=detail@entry=0, instance=instance@entry=0x555555c07050, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffc1a0) at ../../../gobject/gsignal.c:3735
#26 0x00007ffff72d5769 in signal_emit_valist_unlocked
(instance=instance@entry=0x555555c07050, signal_id=signal_id@entry=73, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffc3e0)
at ../../../gobject/gsignal.c:3534
#27 0x00007ffff72db5a6 in g_signal_emit_valist (instance=0x555555c07050, signal_id=73, detail=0, var_args=0x7fffffffc3e0)
at ../../../gobject/gsignal.c:3277
#29 0x00007ffff7b60de7 in gtk_widget_size_allocate_with_baseline () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#30 0x00007ffff7b7938c in ??? () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#34 0x00007ffff72db663 in <emit signal 'check-resize' on instance 0x555555c07050 [GtkWindow]>
(instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3597
#31 0x00007ffff72bfb81 in _g_closure_invoke_va
(closure=closure@entry=0x555555a77100, return_value=return_value@entry=0x0, instance=instance@entry=0x555555c07050, args=args@entry=0x7fffffffc950, n_params=n_params@entry=0, param_types=param_types@entry=0x0) at ../../../gobject/gclosure.c:898
#32 0x00007ffff72d58b8 in signal_emit_valist_unlocked
(instance=instance@entry=0x555555c07050, signal_id=signal_id@entry=137, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffc950)
at ../../../gobject/gsignal.c:3438
#33 0x00007ffff72db5a6 in g_signal_emit_valist (instance=0x555555c07050, signal_id=137, detail=0, var_args=0x7fffffffc950)
at ../../../gobject/gsignal.c:3277
#35 0x00007ffff7920788 in ??? () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#39 0x00007ffff72db663 in <emit signal 'layout' on instance 0x555555dce860 [GdkFrameClockIdle]>
(instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../../../gobject/gsignal.c:3597
#36 0x00007ffff72bfb81 in _g_closure_invoke_va
(closure=closure@entry=0x5555569857d0, return_value=return_value@entry=0x0, instance=instance@entry=0x555555dce860, args=args@entry=0x7fffffffcce0, n_params=n_params@entry=0, param_types=param_types@entry=0x0) at ../../../gobject/gclosure.c:898
#37 0x00007ffff72d58b8 in signal_emit_valist_unlocked
(instance=instance@entry=0x555555dce860, signal_id=signal_id@entry=44, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffcce0)
at ../../../gobject/gsignal.c:3438
#38 0x00007ffff72db5a6 in g_signal_emit_valist (instance=0x555555dce860, signal_id=44, detail=0, var_args=0x7fffffffcce0)
at ../../../gobject/gsignal.c:3277
#40 0x00007ffff77393dd in ??? () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#41 0x00007ffff772527b in ??? () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#42 0x00007ffff71af40e in g_timeout_dispatch (source=0x555555f174b0, callback=<optimized out>, user_data=<optimized out>)
at ../../../glib/gmain.c:5111
#43 0x00007ffff71ac385 in g_main_dispatch (context=context@entry=0x555555a38770) at ../../../glib/gmain.c:3398
#44 0x00007ffff71ae5b7 in g_main_context_dispatch_unlocked (context=0x555555a38770) at ../../../glib/gmain.c:4249
#45 g_main_context_iterate_unlocked (context=context@entry=0x555555a38770, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
at ../../../glib/gmain.c:4314
#46 0x00007ffff71aed20 in g_main_context_iteration (context=0x555555a38770, may_block=1) at ../../../glib/gmain.c:4379
#47 0x00005555558c4e8b in gui_mch_wait_for_chars (wtime=4000) at gui_gtk_x11.c:6746
#48 0x00005555558b2d2e in gui_wait_for_chars_3 (wtime=4000, interrupted=0x7fffffffd0d0, ignore_input=0) at gui.c:2975
#49 0x000055555583100a in ui_wait_for_chars_or_timer
(wtime=4000, wait_func=0x5555558b2d0f <gui_wait_for_chars_3>, interrupted=0x7fffffffd0d0, ignore_input=0) at ui.c:500
#50 0x00005555558b2d5d in gui_wait_for_chars_or_timer (wtime=4000, interrupted=0x7fffffffd0d0, ignore_input=0) at gui.c:2990
#51 0x0000555555830e6f in inchar_loop
(buf=0x5555559ed0f8 <typebuf_init+88> "", maxlen=741, wtime=-1, tb_change_cnt=41, wait_func=0x5555558b2d30 <gui_wait_for_chars_or_timer>, resize_func=0x0) at ui.c:384
#52 0x00005555558b2e05 in gui_wait_for_chars_buf (buf=0x5555559ed0f8 <typebuf_init+88> "", maxlen=741, wtime=-1, tb_change_cnt=41) at gui.c:3041
#53 0x00005555558b2e6f in gui_inchar (buf=0x5555559ed0f8 <typebuf_init+88> "", maxlen=741, wtime=-1, tb_change_cnt=41) at gui.c:3074
#54 0x0000555555830c31 in ui_inchar (buf=0x5555559ed0f8 <typebuf_init+88> "", maxlen=741, wtime=-1, tb_change_cnt=41) at ui.c:226
#55 0x000055555568f73d in inchar (buf=0x5555559ed0f8 <typebuf_init+88> "", maxlen=2224, wait_time=-1) at getchar.c:4108
#56 0x000055555568f341 in vgetorpeek (advance=1) at getchar.c:3893
#57 0x000055555568bf6d in vgetc () at getchar.c:1951
#58 0x000055555568c945 in safe_vgetc () at getchar.c:2283
#59 0x0000555555700441 in normal_cmd (oap=0x7fffffffd4c0, toplevel=1) at normal.c:764
#60 0x000055555590d3c5 in main_loop (cmdwin=0, noexmode=0) at main.c:1635
#61 0x000055555590c712 in vim_main2 () at main.c:973
#62 0x000055555590bc77 in main (argc=15, argv=0x7fffffffd708) at main.c:446
Anyone using Wayland is welcome to try out the patch on this branch: https://github.com/dvogel/vim/tree/refs/heads/fix-13575. It simply removes that synthetic configure event. (A) It seems unnecessary from a GTK perspective and (B) future versions of GTK make it much more difficult to send these synthetic events. So even if that was added to work around a real issue with GTK3 on X11, we should find an alternative solution moving forward.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you commented.