VirtualBox

Changeset 27191 in vbox


Ignore:
Timestamp:
Mar 9, 2010 12:20:05 AM (15 years ago)
Author:
vboxsync
Message:

FE/Qt: hide the host cursor when the guest switches to absolute reporting and clean up the cursor logic a bit

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
2 edited

Legend:

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

    r26796 r27191  
    11511151     * support switching to a hardware pointer on demand. */
    11521152    if (enabled)
    1153         viewport()->setCursor (QCursor (Qt::BlankCursor));
     1153    {
     1154        mHideHostPointer = true;
     1155        updateHostCursor();
     1156    }
    11541157
    11551158    mMouseIntegration = enabled;
    11561159
    11571160    emitMouseStateChanged();
     1161}
     1162
     1163void VBoxConsoleView::updateHostCursor()
     1164{
     1165    if (!mMouseIntegration && !mMouseCaptured)
     1166        viewport()->unsetCursor();
     1167    else if (mMouseCaptured || (mMouseCanAbsolute && mHideHostPointer))
     1168        viewport()->setCursor(Qt::BlankCursor);
     1169    else
     1170        viewport()->setCursor(mLastCursor);
    11581171}
    11591172
     
    12521265                /* restoreOverrideCursor() is broken in Qt 4.4.0 if WA_PaintOnScreen
    12531266                 * widgets are present. This is the case on linux with SDL. As
    1254                  * workaround we save/restore the arrow cursor manually. See
     1267                 * workaround we restore the arrow cursor manually after the resize. See
    12551268                 * http://trolltech.com/developer/task-tracker/index_html?id=206165&method=entry
    12561269                 * for details.
    1257                  *
    1258                  * Moreover the current cursor, which could be set by the guest,
    1259                  * should be restored after resize.
    12601270                 */
    12611271                QCursor cursor;
    1262                 if (shouldHideHostPointer())
    1263                     cursor = QCursor (Qt::BlankCursor);
    1264                 else
    1265                     cursor = viewport()->cursor();
    12661272                mFrameBuf->resizeEvent (re);
    1267                 viewport()->setCursor (cursor);
     1273                updateHostCursor();
    12681274
    12691275#ifdef Q_WS_MAC
     
    14031409                    }
    14041410                    else
    1405                         viewport()->unsetCursor();
     1411                        updateHostCursor();
    14061412                    emitMouseStateChanged();
    14071413                    vboxProblem().remindAboutMouseIntegration (mMouseCanAbsolute);
     
    37043710    if (mMouseCaptured)
    37053711    {
    3706         viewport()->setCursor (QCursor (Qt::BlankCursor));
     3712        updateHostCursor();
    37073713#ifdef Q_WS_WIN32
    37083714        QRect r = viewport()->rect();
     
    37193725        /* return the cursor to where it was when we captured it and show it */
    37203726        QCursor::setPos (mCapturedPos);
    3721         viewport()->unsetCursor();
     3727        updateHostCursor();
    37223728    }
    37233729}
     
    38493855            if (hAlphaCursor)
    38503856            {
    3851                 viewport()->setCursor (QCursor (hAlphaCursor));
     3857                mLastCursor = QCursor (hAlphaCursor);
    38523858                ok = true;
    38533859                if (mAlphaCursor)
     
    39123918            if (cur)
    39133919            {
    3914                 viewport()->setCursor (QCursor (cur));
     3920                mLastCursor = QCursor (cur);
    39153921                ok = true;
    39163922            }
     
    39553961        QCursor cursor (QPixmap::fromImage (image),
    39563962                        me->xHot(), me->yHot());
    3957         viewport()->setCursor (cursor);
     3963        mLastCursor = cursor;
    39583964        ok = true;
    39593965        NOREF (srcShapePtrScan);
     
    39643970
    39653971#endif
    3966         if (ok)
    3967             mLastCursor = viewport()->cursor();
    3968         else
    3969             viewport()->unsetCursor();
    3970     }
    3971     else
    3972     {
    3973         /*
    3974          * We did not get any shape data
    3975          */
    3976         if (me->isVisible())
    3977         {
    3978             viewport()->setCursor (mLastCursor);
    3979         }
    3980         else
    3981         {
    3982             viewport()->setCursor (Qt::BlankCursor);
    3983         }
     3972        if (!ok)
     3973            mLastCursor = QCursor();  /* in practice this is equivalent to
     3974                                       * unsetCursor() */
    39843975    }
    39853976    mHideHostPointer = !me->isVisible();
     3977    updateHostCursor();
    39863978}
    39873979
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleView.h

    r26782 r27191  
    101101    bool mouseNeedsHostCursor() const { return mMouseNeedsHostCursor; }
    102102
    103     bool shouldHideHostPointer() const
    104     { return mMouseCaptured || (mMouseCanAbsolute && mHideHostPointer); }
     103    void updateHostCursor();
    105104
    106105    void setAutoresizeGuest (bool on);
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