VirtualBox

Changeset 59360 in vbox


Ignore:
Timestamp:
Jan 15, 2016 12:02:21 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
105048
Message:

FE/Qt: Qt5 migration (part 57): Reworking keyboard-handler: Update keyboard capture states after it's done, not before.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp

    r59359 r59360  
    232232    if (m_views.contains(uScreenId))
    233233    {
    234         /* Store new keyboard-captured state value: */
    235         m_fIsKeyboardCaptured = true;
    236 
    237         /* Remember which screen had captured keyboard: */
    238         m_iKeyboardCaptureViewIndex = uScreenId;
    239 
    240234#if defined(Q_WS_MAC)
    241235
     
    251245        // TODO: Is that really needed?
    252246        ::DarwinDisableGlobalHotKeys(true);
    253         m_views[m_iKeyboardCaptureViewIndex]->grabKeyboard();
     247        m_views[uScreenId]->grabKeyboard();
    254248
    255249#elif defined(Q_WS_WIN)
     
    274268            {
    275269# if QT_VERSION >= 0x050000
    276                 xcb_grab_key_checked(QX11Info::connection(), 0, m_views.value(m_iKeyboardCaptureViewIndex)->viewport()->winId(), XCB_MOD_MASK_ANY, XCB_GRAB_ANY, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);
     270                xcb_grab_key_checked(QX11Info::connection(), 0, m_views.value(uScreenId)->viewport()->winId(), XCB_MOD_MASK_ANY, XCB_GRAB_ANY, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);
    277271# else /* QT_VERSION < 0x050000 */
    278                 XGrabKey(QX11Info::display(), AnyKey, AnyModifier, m_windows[m_iKeyboardCaptureViewIndex]->winId(), False, GrabModeAsync, GrabModeAsync);
     272                XGrabKey(QX11Info::display(), AnyKey, AnyModifier, m_windows[uScreenId]->winId(), False, GrabModeAsync, GrabModeAsync);
    279273# endif /* QT_VERSION < 0x050000 */
    280274                break;
     
    285279            {
    286280# if QT_VERSION >= 0x050000
    287                 xcb_grab_keyboard(QX11Info::connection(), 0, m_views.value(m_iKeyboardCaptureViewIndex)->viewport()->winId(), XCB_CURRENT_TIME, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);
     281                xcb_grab_keyboard(QX11Info::connection(), 0, m_views.value(uScreenId)->viewport()->winId(), XCB_CURRENT_TIME, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);
    288282# else /* QT_VERSION < 0x050000 */
    289283                /* Keyboard grabbing can fail because of some keyboard shortcut is still grabbed by window manager.
     
    296290                 * for this window on the queue.  This can prevent problems
    297291                 * including two windows fighting to grab the keyboard. */
    298                 hWindow = m_windows[m_iKeyboardCaptureViewIndex]->winId();
     292                hWindow = m_windows[uScreenId]->winId();
    299293                if (!checkForX11FocusEvents(hWindow))
    300294                    while (cTriesLeft && XGrabKeyboard(QX11Info::display(),
     
    313307
    314308        /* On other platforms we are just praying Qt method to work: */
    315         m_views[m_iKeyboardCaptureViewIndex]->grabKeyboard();
     309        m_views[uScreenId]->grabKeyboard();
    316310
    317311#endif
     312
     313        /* Remember which screen had captured keyboard: */
     314        m_iKeyboardCaptureViewIndex = uScreenId;
     315
     316        /* Store new keyboard-captured state value: */
     317        m_fIsKeyboardCaptured = true;
    318318
    319319        /* Notify all the listeners: */
     
    331331    if (m_views.contains(m_iKeyboardCaptureViewIndex))
    332332    {
    333         /* Store new keyboard-captured state value: */
    334         m_fIsKeyboardCaptured = false;
    335 
    336333#if defined(Q_WS_MAC)
    337334
     
    401398        /* Forget which screen had captured keyboard: */
    402399        m_iKeyboardCaptureViewIndex = -1;
     400
     401        /* Store new keyboard-captured state value: */
     402        m_fIsKeyboardCaptured = false;
    403403
    404404        /* Notify all the listeners: */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette