VirtualBox

Changeset 70870 in vbox


Ignore:
Timestamp:
Feb 5, 2018 3:51:16 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
120696
Message:

FE/Qt: bugref:8694: Runtime UI: Make HiDPI Optimization Type macOS feature only; it's a part of cleanup required to handle fractional scales.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h

    r69500 r70870  
    100100template<> bool canConvert<GuruMeditationHandlerType>();
    101101template<> bool canConvert<ScalingOptimizationType>();
     102#ifdef VBOX_WS_MAC
    102103template<> bool canConvert<HiDPIOptimizationType>();
     104#endif
    103105#ifndef VBOX_WS_MAC
    104106template<> bool canConvert<MiniToolbarAlignment>();
    105 #endif /* !VBOX_WS_MAC */
     107#endif
    106108template<> bool canConvert<InformationElementType>();
    107109template<> bool canConvert<MaxGuestResolutionPolicy>();
     
    197199template<> QString toInternalString(const ScalingOptimizationType &optimizationType);
    198200template<> ScalingOptimizationType fromInternalString<ScalingOptimizationType>(const QString &strOptimizationType);
     201#ifdef VBOX_WS_MAC
    199202template<> QString toInternalString(const HiDPIOptimizationType &optimizationType);
    200203template<> HiDPIOptimizationType fromInternalString<HiDPIOptimizationType>(const QString &strOptimizationType);
     204#endif
    201205#ifndef VBOX_WS_MAC
    202206template<> QString toInternalString(const MiniToolbarAlignment &miniToolbarAlignment);
    203207template<> MiniToolbarAlignment fromInternalString<MiniToolbarAlignment>(const QString &strMiniToolbarAlignment);
    204 #endif /* !VBOX_WS_MAC */
     208#endif
    205209template<> QString toString(const InformationElementType &informationElementType);
    206210template<> InformationElementType fromString<InformationElementType>(const QString &strInformationElementType);
  • trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp

    r70185 r70870  
    6868template<> bool canConvert<GuruMeditationHandlerType>() { return true; }
    6969template<> bool canConvert<ScalingOptimizationType>() { return true; }
     70#ifdef VBOX_WS_MAC
    7071template<> bool canConvert<HiDPIOptimizationType>() { return true; }
     72#endif
    7173#ifndef VBOX_WS_MAC
    7274template<> bool canConvert<MiniToolbarAlignment>() { return true; }
    73 #endif /* !VBOX_WS_MAC */
     75#endif
    7476template<> bool canConvert<InformationElementType>() { return true; }
    7577template<> bool canConvert<MaxGuestResolutionPolicy>() { return true; }
     
    16491651}
    16501652
     1653#ifdef VBOX_WS_MAC
    16511654/* QString <= HiDPIOptimizationType: */
    16521655template<> QString toInternalString(const HiDPIOptimizationType &optimizationType)
     
    16801683    return values.at(keys.indexOf(QRegExp(strOptimizationType, Qt::CaseInsensitive)));
    16811684}
     1685#endif /* VBOX_WS_MAC */
    16821686
    16831687#ifndef VBOX_WS_MAC
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp

    r70113 r70870  
    156156#endif /* VBOX_WITH_VIDEOHWACCEL */
    157157const char* UIExtraDataDefs::GUI_HiDPI_UnscaledOutput = "GUI/HiDPI/UnscaledOutput";
     158#ifdef VBOX_WS_MAC
    158159const char* UIExtraDataDefs::GUI_HiDPI_Optimization = "GUI/HiDPI/Optimization";
     160#endif
    159161#ifndef VBOX_WS_MAC
    160162const char* UIExtraDataDefs::GUI_ShowMiniToolBar = "GUI/ShowMiniToolBar";
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h

    r70185 r70870  
    280280        /** Holds whether Runtime UI should use unscaled HiDPI output. */
    281281        extern const char* GUI_HiDPI_UnscaledOutput;
     282#ifdef VBOX_WS_MAC
    282283        /** Holds Runtime UI HiDPI optimization type. */
    283284        extern const char* GUI_HiDPI_Optimization;
     285#endif
    284286#ifndef VBOX_WS_MAC
    285287        /** Holds whether mini-toolbar is enabled for full and seamless screens. */
     
    755757};
    756758
     759#ifdef VBOX_WS_MAC
    757760/** Runtime UI: HiDPI optimization types. */
    758761enum HiDPIOptimizationType
     
    761764    HiDPIOptimizationType_Performance
    762765};
     766#endif /* VBOX_WS_MAC */
    763767
    764768#ifndef VBOX_WS_MAC
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp

    r70856 r70870  
    19971997#endif /* VBOX_WITH_VIDEOHWACCEL */
    19981998           << GUI_HiDPI_UnscaledOutput
     1999#ifdef VBOX_WS_MAC
    19992000           << GUI_HiDPI_Optimization
     2001#endif
    20002002#ifndef VBOX_WS_MAC
    20012003           << GUI_ShowMiniToolBar << GUI_MiniToolBarAutoHide << GUI_MiniToolBarAlignment
     
    37443746}
    37453747
     3748#ifdef VBOX_WS_MAC
    37463749HiDPIOptimizationType UIExtraDataManager::hiDPIOptimizationType(const QString &strID)
    37473750{
    37483751    return gpConverter->fromInternalString<HiDPIOptimizationType>(extraDataString(GUI_HiDPI_Optimization, strID));
    37493752}
     3753#endif /* VBOX_WS_MAC */
    37503754
    37513755#ifndef VBOX_WS_MAC
     
    44154419        else if (strKey == GUI_Scaling_Optimization)
    44164420            emit sigScalingOptimizationTypeChange(strMachineID);
     4421#ifdef VBOX_WS_MAC
    44174422        /* HiDPI optimization type change: */
    44184423        else if (strKey == GUI_HiDPI_Optimization)
    44194424            emit sigHiDPIOptimizationTypeChange(strMachineID);
     4425#endif
    44204426        /* Unscaled HiDPI Output mode change: */
    44214427        else if (strKey == GUI_HiDPI_UnscaledOutput)
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h

    r70113 r70870  
    8585    void sigScalingOptimizationTypeChange(const QString &strMachineID);
    8686
     87#ifdef VBOX_WS_MAC
    8788    /** Notifies about the HiDPI optimization type change. */
    8889    void sigHiDPIOptimizationTypeChange(const QString &strMachineID);
     90#endif
    8991
    9092    /** Notifies about unscaled HiDPI output mode change. */
     
    533535        void setUseUnscaledHiDPIOutput(bool fUseUnscaledHiDPIOutput, const QString &strID);
    534536
     537#ifdef VBOX_WS_MAC
    535538        /** Returns Runtime UI HiDPI optimization type. */
    536539        HiDPIOptimizationType hiDPIOptimizationType(const QString &strID);
     540#endif
    537541
    538542#ifndef VBOX_WS_MAC
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp

    r69957 r70870  
    168168    void setScalingOptimizationType(ScalingOptimizationType type) { m_enmScalingOptimizationType = type; }
    169169
     170#ifdef VBOX_WS_MAC
    170171    /** Returns HiDPI frame-buffer optimization type. */
    171172    HiDPIOptimizationType hiDPIOptimizationType() const { return m_hiDPIOptimizationType; }
    172173    /** Defines HiDPI frame-buffer optimization type: */
    173174    void setHiDPIOptimizationType(HiDPIOptimizationType type) { m_hiDPIOptimizationType = type; }
     175#endif
    174176
    175177    DECLARE_NOT_AGGREGATABLE(UIFrameBufferPrivate)
     
    300302    static void eraseImageRect(QPainter &painter, const QRect &rect,
    301303                               bool fUseUnscaledHiDPIOutput,
     304#ifdef VBOX_WS_MAC
    302305                               HiDPIOptimizationType hiDPIOptimizationType,
     306#endif
    303307                               double dDevicePixelRatio);
    304308    /** Draws corresponding @a rect of passed @a image with @a painter. */
     
    306310                              int iContentsShiftX, int iContentsShiftY,
    307311                              bool fUseUnscaledHiDPIOutput,
     312#ifdef VBOX_WS_MAC
    308313                              HiDPIOptimizationType hiDPIOptimizationType,
     314#endif
    309315                              double dDevicePixelRatio);
    310316
     
    386392    /** Holds whether frame-buffer should use unscaled HiDPI output. */
    387393    bool m_fUseUnscaledHiDPIOutput;
     394#ifdef VBOX_WS_MAC
    388395    /** Holds HiDPI frame-buffer optimization type. */
    389396    HiDPIOptimizationType m_hiDPIOptimizationType;
     397#endif
    390398    /** @} */
    391399
     
    538546    , m_dDevicePixelRatio(1.0)
    539547    , m_fUseUnscaledHiDPIOutput(false)
     548#ifdef VBOX_WS_MAC
    540549    , m_hiDPIOptimizationType(HiDPIOptimizationType_None)
     550#endif
    541551{
    542552    /* Update coordinate-system: */
     
    13991409    drawImageRect(painter, sourceImage, paintRect,
    14001410                  m_pMachineView->contentsX(), m_pMachineView->contentsY(),
    1401                   useUnscaledHiDPIOutput(), hiDPIOptimizationType(), devicePixelRatio());
     1411                  useUnscaledHiDPIOutput(),
     1412#ifdef VBOX_WS_MAC
     1413                  hiDPIOptimizationType(),
     1414#endif
     1415                  devicePixelRatio());
    14021416}
    14031417
     
    14581472    /* Erase rectangle: */
    14591473    eraseImageRect(painter, paintRect,
    1460                    useUnscaledHiDPIOutput(), hiDPIOptimizationType(), devicePixelRatio());
     1474                   useUnscaledHiDPIOutput(),
     1475#ifdef VBOX_WS_MAC
     1476                   hiDPIOptimizationType(),
     1477#endif
     1478                   devicePixelRatio());
    14611479
    14621480    /* Apply painter clipping for painting: */
     
    14831501    drawImageRect(painter, sourceImage, paintRect,
    14841502                  m_pMachineView->contentsX(), m_pMachineView->contentsY(),
    1485                   useUnscaledHiDPIOutput(), hiDPIOptimizationType(), devicePixelRatio());
     1503                  useUnscaledHiDPIOutput(),
     1504#ifdef VBOX_WS_MAC
     1505                  hiDPIOptimizationType(),
     1506#endif
     1507                  devicePixelRatio());
    14861508}
    14871509
     
    15021524void UIFrameBufferPrivate::eraseImageRect(QPainter &painter, const QRect &rect,
    15031525                                          bool fUseUnscaledHiDPIOutput,
     1526#ifdef VBOX_WS_MAC
    15041527                                          HiDPIOptimizationType hiDPIOptimizationType,
     1528#endif
    15051529                                          double dDevicePixelRatio)
    15061530{
     
    15081532    QPixmap subPixmap = QPixmap(rect.width(), rect.height());
    15091533
     1534#ifdef VBOX_WS_MAC
    15101535    /* If HiDPI 'device-pixel-ratio' defined: */
    15111536    if (dDevicePixelRatio > 1.0)
    15121537    {
    1513         /* Should we
    1514          * perform logical HiDPI scaling and optimize it for performance? */
     1538        /* Should we perform logical HiDPI scaling and optimize it for performance? */
    15151539        if (!fUseUnscaledHiDPIOutput && hiDPIOptimizationType == HiDPIOptimizationType_Performance)
    15161540        {
     
    15201544        }
    15211545
    1522         /* Should we
    1523          * not perform logical HiDPI scaling or
    1524          * perform logical HiDPI scaling and optimize it for performance? */
     1546        /* Should we not perform logical HiDPI scaling or perform logical HiDPI scaling and optimize it for performance? */
    15251547        if (fUseUnscaledHiDPIOutput || hiDPIOptimizationType == HiDPIOptimizationType_Performance)
    15261548        {
     
    15291551        }
    15301552    }
     1553#else /* !VBOX_WS_MAC */
     1554    /* If HiDPI 'device-pixel-ratio' defined: */
     1555    if (dDevicePixelRatio > 1.0)
     1556    {
     1557        /* In auto-scale mode: */
     1558        if (!fUseUnscaledHiDPIOutput)
     1559        {
     1560            /* Adjust sub-pixmap: */
     1561            subPixmap = QPixmap((int)(rect.width() * dDevicePixelRatio),
     1562                                (int)(rect.height() * dDevicePixelRatio));
     1563        }
     1564
     1565        /* Mark sub-pixmap HiDPI: */
     1566        subPixmap.setDevicePixelRatio(dDevicePixelRatio);
     1567    }
     1568#endif /* !VBOX_WS_MAC */
    15311569
    15321570    /* Which point we should draw corresponding sub-pixmap? */
     
    15451583                                         int iContentsShiftX, int iContentsShiftY,
    15461584                                         bool fUseUnscaledHiDPIOutput,
     1585#ifdef VBOX_WS_MAC
    15471586                                         HiDPIOptimizationType hiDPIOptimizationType,
     1587#endif
    15481588                                         double dDevicePixelRatio)
    15491589{
     
    15641604    QPixmap subPixmap = QPixmap::fromImage(subImage);
    15651605
     1606#ifdef VBOX_WS_MAC
    15661607    /* If HiDPI 'device-pixel-ratio' defined: */
    15671608    if (dDevicePixelRatio > 1.0)
    15681609    {
    1569         /* Should we
    1570          * perform logical HiDPI scaling and optimize it for performance? */
     1610        /* Should we perform logical HiDPI scaling and optimize it for performance? */
    15711611        if (!fUseUnscaledHiDPIOutput && hiDPIOptimizationType == HiDPIOptimizationType_Performance)
    15721612        {
     
    15761616        }
    15771617
    1578         /* Should we
    1579          * not perform logical HiDPI scaling or
    1580          * perform logical HiDPI scaling and optimize it for performance? */
     1618        /* Should we not perform logical HiDPI scaling or perform logical HiDPI scaling and optimize it for performance? */
    15811619        if (fUseUnscaledHiDPIOutput || hiDPIOptimizationType == HiDPIOptimizationType_Performance)
    15821620        {
     
    15851623        }
    15861624    }
     1625#else /* !VBOX_WS_MAC */
     1626    /* If HiDPI 'device-pixel-ratio' defined: */
     1627    if (dDevicePixelRatio > 1.0)
     1628    {
     1629        /* In auto-scale mode: */
     1630        if (!fUseUnscaledHiDPIOutput)
     1631        {
     1632            /* Fast scale sub-pixmap (2nd copy involved): */
     1633            subPixmap = subPixmap.scaled(subPixmap.size() * dDevicePixelRatio,
     1634                                         Qt::IgnoreAspectRatio, Qt::FastTransformation);
     1635        }
     1636
     1637        /* Mark sub-pixmap HiDPI: */
     1638        subPixmap.setDevicePixelRatio(dDevicePixelRatio);
     1639    }
     1640#endif /* !VBOX_WS_MAC */
    15871641
    15881642    /* Which point we should draw corresponding sub-pixmap? */
     
    17491803}
    17501804
     1805#ifdef VBOX_WS_MAC
    17511806HiDPIOptimizationType UIFrameBuffer::hiDPIOptimizationType() const
    17521807{
     
    17581813    m_pFrameBuffer->setHiDPIOptimizationType(type);
    17591814}
     1815#endif
    17601816
    17611817void UIFrameBuffer::handleNotifyChange(int iWidth, int iHeight)
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.h

    r69931 r70870  
    121121    void setScalingOptimizationType(ScalingOptimizationType type);
    122122
     123#ifdef VBOX_WS_MAC
    123124    /** Returns HiDPI frame-buffer optimization type. */
    124125    HiDPIOptimizationType hiDPIOptimizationType() const;
    125126    /** Defines HiDPI frame-buffer optimization type: */
    126127    void setHiDPIOptimizationType(HiDPIOptimizationType type);
     128#endif
    127129
    128130    /** Handles frame-buffer notify-change-event. */
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp

    r70681 r70870  
    540540}
    541541
     542#ifdef VBOX_WS_MAC
    542543void UIMachineView::sltHandleHiDPIOptimizationChange(const QString &strMachineID)
    543544{
     
    552553    viewport()->update();
    553554}
     555#endif /* VBOX_WS_MAC */
    554556
    555557void UIMachineView::sltHandleUnscaledHiDPIOutputModeChange(const QString &strMachineID)
     
    717719#endif /* !VBOX_WITH_VIDEOHWACCEL */
    718720
     721#ifdef VBOX_WS_MAC
    719722        /* Take HiDPI optimization type into account: */
    720723        m_pFrameBuffer->setHiDPIOptimizationType(gEDataManager->hiDPIOptimizationType(vboxGlobal().managedVMUuid()));
     724#endif
    721725
    722726        /* Take scaling optimization type into account: */
     
    846850    connect(gEDataManager, SIGNAL(sigScalingOptimizationTypeChange(const QString&)),
    847851            this, SLOT(sltHandleScalingOptimizationChange(const QString&)));
     852#ifdef VBOX_WS_MAC
    848853    /* HiDPI-optimization change: */
    849854    connect(gEDataManager, SIGNAL(sigHiDPIOptimizationTypeChange(const QString&)),
    850855            this, SLOT(sltHandleHiDPIOptimizationChange(const QString&)));
     856#endif
    851857    /* Unscaled HiDPI output mode change: */
    852858    connect(gEDataManager, SIGNAL(sigUnscaledHiDPIOutputModeChange(const QString&)),
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h

    r69957 r70870  
    132132    void sltHandleScalingOptimizationChange(const QString &strMachineID);
    133133
     134#ifdef VBOX_WS_MAC
    134135    /** Handles the HiDPI-optimization change. */
    135136    void sltHandleHiDPIOptimizationChange(const QString &strMachineID);
     137#endif
    136138
    137139    /** Handles the unscaled HiDPI output mode change. */
Note: See TracChangeset for help on using the changeset viewer.

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