diff --git a/proto.h b/proto.h index 9f55958..b97121e 100644 --- a/proto.h +++ b/proto.h @@ -209,6 +209,7 @@ void ui_clip_request_data(uint32 format); void ui_clip_sync(void); void ui_clip_set_mode(const char *optarg); void xclip_init(void); +void xclip_deinit(void); /* xkeymap.c */ BOOL xkeymap_from_locale(const char *locale); FILE *xkeymap_open(const char *filename); diff --git a/xclip.c b/xclip.c index e0cdcb7..a5c3607 100644 --- a/xclip.c +++ b/xclip.c @@ -1173,3 +1173,13 @@ xclip_init(void) targets[num_targets++] = format_string_atom; targets[num_targets++] = XA_STRING; } + +void +xclip_deinit(void) +{ + if (XGetSelectionOwner(g_display, primary_atom) == g_wnd) + XSetSelectionOwner(g_display, primary_atom, None, acquire_time); + if (XGetSelectionOwner(g_display, clipboard_atom) == g_wnd) + XSetSelectionOwner(g_display, clipboard_atom, None, acquire_time); + xclip_notify_change(); +} diff --git a/xwin.c b/xwin.c index e1909dd..4daa4c4 100644 --- a/xwin.c +++ b/xwin.c @@ -1636,6 +1636,8 @@ ui_deinit(void) sw_remove_window(g_seamless_windows); } + xclip_deinit(); + if (g_IM != NULL) XCloseIM(g_IM);