0
0
mirror of https://github.com/vim/vim.git synced 2025-09-07 22:03:36 -04:00

updated for version 7.4.523

Problem:    When the X11 server is stopped and restarted, while Vim is kept in
            the background, copy/paste no longer works. (Issue 203)
Solution:   Setup the clipboard again. (Christian Brabandt)
This commit is contained in:
Bram Moolenaar 2014-11-19 18:48:46 +01:00
parent 4c7b2f50fd
commit b1e265045c
2 changed files with 23 additions and 0 deletions

View File

@ -1586,12 +1586,15 @@ x_IOerror_check(dpy)
* An X IO Error handler, used to catch terminal errors.
*/
static int x_IOerror_handler __ARGS((Display *dpy));
static void may_restore_clipboard __ARGS((void));
static int xterm_dpy_was_reset = FALSE;
static int
x_IOerror_handler(dpy)
Display *dpy UNUSED;
{
xterm_dpy = NULL;
xterm_dpy_was_reset = TRUE;
x11_window = 0;
x11_display = NULL;
xterm_Shell = (Widget)0;
@ -1602,6 +1605,22 @@ x_IOerror_handler(dpy)
return 0; /* avoid the compiler complains about missing return value */
# endif
}
/*
* If the X11 connection was lost try to restore it.
* Helps when the X11 server was stopped and restarted while Vim was inactive
* (e.g. though tmux).
*/
static void
may_restore_clipboard()
{
if (xterm_dpy_was_reset)
{
xterm_dpy_was_reset = FALSE;
setup_term_clip();
get_x11_title(FALSE);
}
}
#endif
/*
@ -5274,6 +5293,7 @@ RealWaitForChar(fd, msec, check_for_gpm)
}
# endif
# ifdef FEAT_XCLIPBOARD
may_restore_clipboard();
if (xterm_Shell != (Widget)0)
{
xterm_idx = nfd;
@ -5426,6 +5446,7 @@ select_eintr:
}
# endif
# ifdef FEAT_XCLIPBOARD
may_restore_clipboard();
if (xterm_Shell != (Widget)0)
{
FD_SET(ConnectionNumber(xterm_dpy), &rfds);

View File

@ -741,6 +741,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
523,
/**/
522,
/**/