diff --git a/src/core/screen-private.h b/src/core/screen-private.h index 594f53712..52007cbaa 100644 --- a/src/core/screen-private.h +++ b/src/core/screen-private.h @@ -116,6 +116,7 @@ struct _MetaScreen #endif Window wm_cm_selection_window; + guint32 wm_cm_timestamp; guint work_area_later; diff --git a/src/core/screen.c b/src/core/screen.c index 21b4663b4..7ac65d0fa 100644 --- a/src/core/screen.c +++ b/src/core/screen.c @@ -3145,11 +3145,14 @@ meta_screen_set_cm_selection (MetaScreen *screen) char selection[32]; Atom a; + screen->wm_cm_timestamp = meta_display_get_current_time_roundtrip ( + screen->display); + g_snprintf (selection, sizeof(selection), "_NET_WM_CM_S%d", screen->number); meta_verbose ("Setting selection: %s\n", selection); a = XInternAtom (screen->display->xdisplay, selection, FALSE); XSetSelectionOwner (screen->display->xdisplay, a, - screen->wm_cm_selection_window, CurrentTime); + screen->wm_cm_selection_window, screen->wm_cm_timestamp); } void @@ -3160,7 +3163,8 @@ meta_screen_unset_cm_selection (MetaScreen *screen) g_snprintf (selection, sizeof(selection), "_NET_WM_CM_S%d", screen->number); a = XInternAtom (screen->display->xdisplay, selection, FALSE); - XSetSelectionOwner (screen->display->xdisplay, a, None, CurrentTime); + XSetSelectionOwner (screen->display->xdisplay, a, + None, screen->wm_cm_timestamp); } GList *