patch 9.1.1725: Wayland code can be improved
Problem: Wayland code can be improved Solution: Refactor Wayland Clipboard code (Foxe Chen) This refactor makes the Wayland codebase less convoluted: - Move clipboard code in wayland.c to clipboard.c - Use C99 bool type - Properly poll the Wayland display file descriptor - Instead of checking if the data source is not NULL in order to determine if a selection event comes from us, use a special mime type to identify selection events coming from ourselves. The problem with the previous approach is that race conditions may occur. - Put the focus stealing code under a new feature "wayland_focus_steal" - Use ELAPSED_* macros instead of gettimeofday() - Pass tests - Reimplement commented out code - Update docs - Make Wayland clipboard behaviour more in line with X11 when connection is lost - add missing malloc checks and possible memory leaks + refactored some tests. closes: #18139 Signed-off-by: Foxe Chen <chen.foxe@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
6a2d0496a1
commit
f50504a87b
@ -1,4 +1,4 @@
|
||||
*builtin.txt* For Vim version 9.1. Last change: 2025 Aug 24
|
||||
*builtin.txt* For Vim version 9.1. Last change: 2025 Sep 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -13161,7 +13161,9 @@ vreplace Compiled with |gR| and |gr| commands. (always true)
|
||||
vtp Compiled for vcon support |+vtp| (check vcon to find
|
||||
out if it works in the current console).
|
||||
wayland Compiled with Wayland protocol support.
|
||||
wayland_clipboard Compiled with support for Wayland selections/clipboard
|
||||
wayland_clipboard Compiled with support for Wayland clipboard.
|
||||
wayland_focus_steal Compiled with support for Wayland clipboard focus
|
||||
stealing.
|
||||
wildignore Compiled with 'wildignore' option.
|
||||
wildmenu Compiled with 'wildmenu' option.
|
||||
win16 old version for MS-Windows 3.1 (always false)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
*gui_x11.txt* For Vim version 9.1. Last change: 2025 Aug 10
|
||||
*gui_x11.txt* For Vim version 9.1. Last change: 2025 Sep 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -709,8 +709,8 @@ overwriting selected text.
|
||||
|
||||
*W23*
|
||||
When you are yanking into the "* or "+ register and Vim cannot establish a
|
||||
connection to the X11 selection (or clipboard), it will use register 0 and
|
||||
output a warning:
|
||||
connection to the X11 selection (or X11/Wayland clipboard), it will use
|
||||
register 0 and output a warning:
|
||||
|
||||
Warning: Clipboard register not available, using register 0 ~
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 9.1. Last change: 2025 Aug 27
|
||||
*options.txt* For Vim version 9.1. Last change: 2025 Sep 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -10195,7 +10195,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
*'wlsteal'* *'wst'* *'nowlsteal'* *'nowst'*
|
||||
'wlsteal' 'wst' boolean (default off)
|
||||
global
|
||||
{only when the |+wayland_clipboard| feature is included}
|
||||
{only when the |+wayland_focus_steal| feature is
|
||||
included}
|
||||
When enabled, then allow Vim to steal focus by creating a temporary
|
||||
surface, in order to access the clipboard. For more information see
|
||||
|wayland-focus-steal|.
|
||||
|
||||
@ -1542,6 +1542,7 @@ $quote eval.txt /*$quote*
|
||||
+vtp various.txt /*+vtp*
|
||||
+wayland various.txt /*+wayland*
|
||||
+wayland_clipboard various.txt /*+wayland_clipboard*
|
||||
+wayland_focus_steal various.txt /*+wayland_focus_steal*
|
||||
+wildignore various.txt /*+wildignore*
|
||||
+wildmenu various.txt /*+wildmenu*
|
||||
+windows various.txt /*+windows*
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
*various.txt* For Vim version 9.1. Last change: 2025 Aug 18
|
||||
*various.txt* For Vim version 9.1. Last change: 2025 Sep 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -528,6 +528,8 @@ T *+vreplace* |gR| and |gr|
|
||||
*+vtp* on MS-Windows console: support for 'termguicolors'
|
||||
N *+wayland* Unix only: support for the Wayland protocol.
|
||||
N *+wayland_clipboard* Unix only: support for Wayland selections/clipboard.
|
||||
N *+wayland_focus_steal* Unix only: support for Wayland clipboard on
|
||||
compositors without a data control protocol.
|
||||
T *+wildignore* 'wildignore' Always enabled since 9.0.0278
|
||||
T *+wildmenu* 'wildmenu' Always enabled since 9.0.0279
|
||||
T *+windows* more than one window; Always enabled since 8.0.1118.
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
*wayland.txt* For Vim version 9.1. Last change: 2025 Aug 27
|
||||
*wayland.txt* For Vim version 9.1. Last change: 2025 Sep 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -105,7 +105,8 @@ To solve this problem, Vim implements a way of gaining focus in order to
|
||||
access the clipboard, by creating a temporary transparent top-level surface.
|
||||
This is by default disabled and can be enabled via the 'wlsteal' option.
|
||||
Moreover, a seat that has a keyboard is also required, see 'wlseat', and the
|
||||
xdg-shell protocol must be available.
|
||||
xdg-shell protocol must be available. Additionally, Vim must be compiled with
|
||||
the |+wayland_focus_steal| feature.
|
||||
|
||||
Note that this method can have several side effects from the result of focus
|
||||
stealing. For example, if you have a taskbar that shows currently opened apps
|
||||
|
||||
Reference in New Issue
Block a user