VirtualBox

Changeset 74914 in vbox for trunk


Ignore:
Timestamp:
Oct 18, 2018 12:06:17 PM (6 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9255. Change the machine window menu to enable per screen scaling

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

Legend:

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

    r74885 r74914  
    40434043
    40444044    data[uScreenIndex] = QString::number(dScaleFactor);
    4045 
    40464045    setExtraDataStringList(GUI_ScaleFactor, data, aID);
    40474046}
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h

    r74885 r74914  
    608608        double scaleFactor(const QUuid &aID, const int uScreenIndex);
    609609        QList<double> scaleFactors(const QUuid &aID);
    610         /** Defines the @a dScaleFactor. */
     610        /** Saves the @a dScaleFactor for the monitor with @a uScreenIndex. If the existing scale factor
     611          * list (from extra data) does not have scale factors for the screens with ids in [0, uScreenIndex)
     612          * the this function appends a default scale factor for said screens.*/
    611613        void setScaleFactor(double dScaleFactor, const QUuid &aID, const int uScreenIndex);
     614        /** Replaces the scale factor list of the machine with @a aID with @a scaleFactors. */
    612615        void setScaleFactors(const QList<double> &scaleFactors, const QUuid &aID);
    613616
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp

    r74805 r74914  
    20512051
    20522052#include "UIActionPool.moc"
    2053 
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolRuntime.cpp

    r74885 r74914  
    13821382};
    13831383
    1384 /** Menu action extension, used as 'Scale Factor' menu class. */
    1385 class UIActionMenuRuntimeScaleFactor : public UIActionMenu
    1386 {
    1387     Q_OBJECT;
    1388 
    1389 public:
    1390 
    1391     /** Constructs action passing @a pParent to the base-class. */
    1392     UIActionMenuRuntimeScaleFactor(UIActionPool *pParent)
    1393         : UIActionMenu(pParent, ":/scale_factor_16px.png", ":/scale_factor_disabled_16px.png")
    1394     {}
    1395 
    1396 protected:
    1397 
    1398     /** Returns action extra-data ID. */
    1399     virtual int extraDataID() const /* override */
    1400     {
    1401         return UIExtraDataMetaDefs::RuntimeMenuViewActionType_ScaleFactor;
    1402     }
    1403     /** Returns action extra-data key. */
    1404     virtual QString extraDataKey() const /* override */
    1405     {
    1406         return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuViewActionType_ScaleFactor);
    1407     }
    1408     /** Returns whether action is allowed. */
    1409     virtual bool isAllowed() const /* override */
    1410     {
    1411         return actionPool()->toRuntime()->isAllowedInMenuView(UIExtraDataMetaDefs::RuntimeMenuViewActionType_ScaleFactor);
    1412     }
    1413 
    1414     /** Handles translation event. */
    1415     virtual void retranslateUi() /* override */
    1416     {
    1417         setName(QApplication::translate("UIActionPool", "S&cale Factor"));
    1418     }
    1419 };
    1420 
    1421 
    14221384/** Menu action extension, used as 'Input' menu class. */
    14231385class UIActionMenuRuntimeInput : public UIActionMenu
     
    31573119    /* Change scale-factor directly: */
    31583120    const double dScaleFactor = pAction->property("Requested Scale Factor").toDouble();
    3159     gEDataManager->setScaleFactor(dScaleFactor, vboxGlobal().managedVMUuid(), 0);
     3121    const int iGuestScreenIndex = pAction->property("Guest Screen Index").toInt();
     3122    gEDataManager->setScaleFactor(dScaleFactor, vboxGlobal().managedVMUuid(), iGuestScreenIndex);
    31603123}
    31613124
     
    32523215    m_pool[UIActionIndexRT_M_View_M_StatusBar_S_Settings] = new UIActionSimpleRuntimeShowStatusBarSettings(this);
    32533216    m_pool[UIActionIndexRT_M_View_M_StatusBar_T_Visibility] = new UIActionToggleRuntimeStatusBar(this);
    3254     m_pool[UIActionIndexRT_M_View_M_ScaleFactor] = new UIActionMenuRuntimeScaleFactor(this);
    32553217
    32563218    /* 'Input' actions: */
     
    33153277    m_menuUpdateHandlers[UIActionIndexRT_M_View_M_MenuBar].ptfr =          &UIActionPoolRuntime::updateMenuViewMenuBar;
    33163278    m_menuUpdateHandlers[UIActionIndexRT_M_View_M_StatusBar].ptfr =        &UIActionPoolRuntime::updateMenuViewStatusBar;
    3317     m_menuUpdateHandlers[UIActionIndexRT_M_View_M_ScaleFactor].ptfr =      &UIActionPoolRuntime::updateMenuViewScaleFactor;
    33183279    m_menuUpdateHandlers[UIActionIndexRT_M_Input].ptfr =                   &UIActionPoolRuntime::updateMenuInput;
    33193280    m_menuUpdateHandlers[UIActionIndexRT_M_Input_M_Keyboard].ptfr =        &UIActionPoolRuntime::updateMenuInputKeyboard;
     
    36173578    }
    36183579
    3619     /* 'Scale Factor' submenu: */
    3620     fSeparator = addAction(pMenu, action(UIActionIndexRT_M_View_M_ScaleFactor)) || fSeparator;
    3621     updateMenuViewScaleFactor();
    3622 
    36233580    /* Do we have to show resize or multiscreen menu? */
    36243581    const bool fAllowToShowActionResize = isAllowedInMenuView(UIExtraDataMetaDefs::RuntimeMenuViewActionType_Resize);
     
    36803637    }
    36813638
    3682     /* 'Scale Factor' submenu: */
    3683     fSeparator = addAction(pMenu, action(UIActionIndexRT_M_View_M_ScaleFactor)) || fSeparator;
    3684     updateMenuViewScaleFactor();
    3685 
    36863639    /* Do we have to show resize menu? */
    36873640    const bool fAllowToShowActionResize = isAllowedInMenuView(UIExtraDataMetaDefs::RuntimeMenuViewActionType_Resize);
     
    37673720}
    37683721
    3769 void UIActionPoolRuntime::updateMenuViewScaleFactor()
    3770 {
    3771     /* Get corresponding menu: */
    3772     UIMenu *pMenu = action(UIActionIndexRT_M_View_M_ScaleFactor)->menu();
     3722void UIActionPoolRuntime::updateMenuViewScaleFactor(QMenu *pMenu)
     3723{
    37733724    AssertPtrReturnVoid(pMenu);
    3774     /* Clear contents: */
    3775     pMenu->clear();
    37763725
    37773726    /* Create exclusive 'scale-factor' action-group: */
     
    37833732
    37843733        /* Get current scale-factor: */
    3785         const double dCurrentScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid(), 0);
     3734        const int iGuestScreenIndex = pMenu->property("Guest Screen Index").toInt();
     3735        const double dCurrentScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid(), iGuestScreenIndex);
    37863736
    37873737        /* Get device-pixel-ratio: */
     
    38033753            AssertPtrReturnVoid(pAction);
    38043754            {
     3755                pAction->setProperty("Guest Screen Index", iGuestScreenIndex);
    38053756                /* For the 'unscaled' action: */
    38063757                if (dScaleFactor == 1.0)
     
    39243875                this, SLOT(sltHandleActionTriggerViewScreenResize(QAction*)));
    39253876    }
     3877    updateMenuViewScaleFactor(pMenu);
    39263878}
    39273879
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolRuntime.h

    r74878 r74914  
    7777    UIActionIndexRT_M_View_M_StatusBar_S_Settings,
    7878    UIActionIndexRT_M_View_M_StatusBar_T_Visibility,
    79     UIActionIndexRT_M_View_M_ScaleFactor,
    8079
    8180    /* 'Input' menu actions: */
     
    251250    void updateMenuViewStatusBar();
    252251    /** Updates 'View' : 'Scale Factor' menu. */
    253     void updateMenuViewScaleFactor();
     252    void updateMenuViewScaleFactor(QMenu *pMenu);
    254253    /** Updates 'View' : 'Virtual Screen #' @a pMenu (Normal, Scale). */
    255254    void updateMenuViewScreen(QMenu *pMenu);
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp

    r74878 r74914  
    10631063    m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_View_M_StatusBar_S_Settings));
    10641064    m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_View_M_StatusBar_T_Visibility));
    1065     m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_View_M_ScaleFactor));
    10661065    m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard));
    10671066    m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard_S_Settings));
  • trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIMenuBarEditorWindow.cpp

    r74878 r74914  
    13101310        prepareCopiedAction(pMenu, actionPool()->action(UIActionIndexRT_M_View_M_StatusBar));
    13111311        pMenu->addSeparator();
    1312         prepareCopiedAction(pMenu, actionPool()->action(UIActionIndexRT_M_View_M_ScaleFactor));
    13131312        prepareNamedAction(pMenu, tr("Virtual Screen Resize"),
    13141313                           UIExtraDataMetaDefs::RuntimeMenuViewActionType_Resize,
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