VirtualBox

Changeset 75899 in vbox


Ignore:
Timestamp:
Dec 3, 2018 12:43:58 PM (6 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9309: A bit of cleanup as prerequisite.

File:
1 edited

Legend:

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

    r72692 r75899  
    953953
    954954#ifdef VBOX_WS_WIN
    955         /* Bringing mouse to the opposite side to simulate the endless moving: */
    956 
    957         /* Get visible-viewport-rectangle in global coordinates: */
     955        /* Compose viewport-rectangle in local coordinates: */
    958956        QRect viewportRectangle = m_mouseCursorClippingRect;
    959         /* Get top-left point of full-viewport-rectangle in global coordinates: */
    960957        QPoint viewportRectangleGlobalPos = m_views[uScreenId]->mapToGlobal(m_viewports[uScreenId]->pos());
    961         /* Shift visible-viewport-rectangle to local position because relative position is in local coordinates: */
    962958        viewportRectangle.translate(-viewportRectangleGlobalPos);
    963959
    964         /* Get boundaries: */
    965         int ix1 = viewportRectangle.left() + 1;
    966         int iy1 = viewportRectangle.top() + 1;
    967         int ix2 = viewportRectangle.right() - 1;
    968         int iy2 = viewportRectangle.bottom() - 1;
     960        /* Compose boundaries: */
     961        const int iX1 = viewportRectangle.left() + 1;
     962        const int iY1 = viewportRectangle.top() + 1;
     963        const int iX2 = viewportRectangle.right() - 1;
     964        const int iY2 = viewportRectangle.bottom() - 1;
    969965
    970966        /* Simulate infinite movement: */
    971967        QPoint p = relativePos;
    972         if (relativePos.x() == ix1)
    973             p.setX(ix2 - 1);
    974         else if (relativePos.x() == ix2)
    975             p.setX(ix1 + 1);
    976         if (relativePos.y() == iy1)
    977             p.setY(iy2 - 1);
    978         else if (relativePos.y() == iy2)
    979             p.setY(iy1 + 1);
     968        if (relativePos.x() == iX1)
     969            p.setX(iX2 - 1);
     970        else if (relativePos.x() == iX2)
     971            p.setX(iX1 + 1);
     972        if (relativePos.y() == iY1)
     973            p.setY(iY2 - 1);
     974        else if (relativePos.y() == iY2)
     975            p.setY(iY1 + 1);
    980976        if (p != relativePos)
    981977        {
     
    12151211    if (uisession()->isMouseCaptured())
    12161212    {
    1217         /* Get full-viewport-rectangle in local coordinates: */
     1213        /* Get full-viewport-rectangle in global coordinates: */
    12181214        QRect viewportRectangle = m_viewports[m_iMouseCaptureViewIndex]->visibleRegion().boundingRect();
    1219         /* Get top-left point of full-viewport-rectangle in global coordinates: */
    1220         QPoint viewportRectangleGlobalPos = m_views[m_iMouseCaptureViewIndex]->mapToGlobal(m_viewports[m_iMouseCaptureViewIndex]->pos());
    1221         /* Get full-viewport-rectangle in global coordinates: */
     1215        const QPoint viewportRectangleGlobalPos = m_views[m_iMouseCaptureViewIndex]->mapToGlobal(m_viewports[m_iMouseCaptureViewIndex]->pos());
    12221216        viewportRectangle.translate(viewportRectangleGlobalPos);
     1217
    12231218        /* Trim full-viewport-rectangle by available geometry: */
    12241219        viewportRectangle = viewportRectangle.intersected(gpDesktop->availableGeometry(machineLogic()->machineWindows()[m_iMouseCaptureViewIndex]));
     1220
    12251221        /* Trim partial-viewport-rectangle by top-most windows: */
    1226         QRegion viewportRegion(viewportRectangle);
    1227         QRegion topMostRegion(NativeWindowSubsystem::areaCoveredByTopMostWindows());
    1228         viewportRegion -= topMostRegion;
     1222        QRegion viewportRegion = QRegion(viewportRectangle) - NativeWindowSubsystem::areaCoveredByTopMostWindows();
    12291223        /* Check if partial-viewport-region consists of 1 rectangle: */
    12301224        if (viewportRegion.rectCount() > 1)
    12311225        {
    12321226            /* Choose the largest rectangle: */
    1233             QVector<QRect> rects = viewportRegion.rects();
    12341227            QRect largestRect;
    1235             for (int i = 0; i < rects.size(); ++i)
    1236                 largestRect = largestRect.width() * largestRect.height() < rects[i].width() * rects[i].height() ? rects[i] : largestRect;
     1228            foreach (const QRect &rect, viewportRegion.rects())
     1229                largestRect = largestRect.width() * largestRect.height() < rect.width() * rect.height() ? rect : largestRect;
    12371230            /* Assign the partial-viewport-region to the largest rect: */
    12381231            viewportRegion = largestRect;
     
    12401233        /* Assign the partial-viewport-rectangle to the partial-viewport-region: */
    12411234        viewportRectangle = viewportRegion.boundingRect();
     1235
    12421236        /* Assign the visible-viewport-rectangle to the partial-viewport-rectangle: */
    12431237        m_mouseCursorClippingRect = viewportRectangle;
     1238
    12441239        /* Prepare clipping area: */
    1245         RECT rect = { m_mouseCursorClippingRect.left() + 1, m_mouseCursorClippingRect.top() + 1, m_mouseCursorClippingRect.right(), m_mouseCursorClippingRect.bottom() };
     1240        RECT rect = { viewportRectangle.left() + 1, viewportRectangle.top() + 1, viewportRectangle.right(), viewportRectangle.bottom() };
    12461241        ::ClipCursor(&rect);
    12471242    }
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