Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp	(revision 66494)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp	(revision 66495)
@@ -371,10 +371,14 @@
          * the same problem. At present we just let that problem be.) */
 
-         /* Grab the mouse button.
-          * We do not check for failure as we do not currently implement a back-up plan. */
-         m_hButtonGrabWindow = QX11Info::appRootWindow();
-         xcb_grab_button_checked(QX11Info::connection(), 0, m_hButtonGrabWindow,
-                                 XCB_EVENT_MASK_BUTTON_PRESS, XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC,
-                                 XCB_NONE, XCB_NONE, XCB_BUTTON_INDEX_ANY, XCB_MOD_MASK_ANY);
+        /* Grab the mouse button.
+         * We do not check for failure as we do not currently implement a back-up plan. */
+        /* If any previous grab is still in process, release it. */
+        if (m_hButtonGrabWindow != 0)
+            xcb_ungrab_button_checked(QX11Info::connection(), XCB_BUTTON_INDEX_ANY,
+                                      m_hButtonGrabWindow, XCB_MOD_MASK_ANY);
+        m_hButtonGrabWindow = QX11Info::appRootWindow();
+        xcb_grab_button_checked(QX11Info::connection(), 0, m_hButtonGrabWindow,
+                                XCB_EVENT_MASK_BUTTON_PRESS, XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC,
+                                XCB_NONE, XCB_NONE, XCB_BUTTON_INDEX_ANY, XCB_MOD_MASK_ANY);
         /* And grab the keyboard, using XCB directly, as Qt does not report failure. */
         xcb_grab_keyboard_cookie_t xcbGrabCookie = xcb_grab_keyboard(QX11Info::connection(), false, m_views[m_iKeyboardCaptureViewIndex]->winId(),
@@ -387,4 +391,5 @@
             xcb_ungrab_button_checked(QX11Info::connection(), XCB_BUTTON_INDEX_ANY,
                                       m_hButtonGrabWindow, XCB_MOD_MASK_ANY);
+            m_hButtonGrabWindow = 0;
             /* Try again later: */
             free(pGrabReply);
@@ -489,4 +494,5 @@
         xcb_ungrab_button_checked(QX11Info::connection(), XCB_BUTTON_INDEX_ANY,
                                   m_hButtonGrabWindow, XCB_MOD_MASK_ANY);
+        m_hButtonGrabWindow = 0;
 
 # endif /* QT_VERSION >= 0x050000 */
