VirtualBox

Ignore:
Timestamp:
Jun 30, 2015 3:19:04 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
101346
Message:

FE/Qt: 7844: Store desired guest-screen visibility statuses in extra-data.

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

Legend:

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

    r55939 r56704  
    112112#endif /* Q_WS_X11 */
    113113const char* UIExtraDataDefs::GUI_AutoresizeGuest = "GUI/AutoresizeGuest";
     114const char* UIExtraDataDefs::GUI_LastVisibilityStatusForGuestScreen = "GUI/LastVisibilityStatusForGuestScreen";
    114115const char* UIExtraDataDefs::GUI_LastGuestSizeHint = "GUI/LastGuestSizeHint";
    115116const char* UIExtraDataDefs::GUI_VirtualScreenToHostScreen = "GUI/VirtualScreenToHostScreen";
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h

    r56098 r56704  
    190190        extern const char* GUI_AutoresizeGuest;
    191191        /** Prefix used by composite extra-data keys,
     192          * which holds last guest-screen visibility status per screen-index. */
     193        extern const char* GUI_LastVisibilityStatusForGuestScreen;
     194        /** Prefix used by composite extra-data keys,
    192195          * which holds last guest-screen size-hint per screen-index. */
    193196        extern const char* GUI_LastGuestSizeHint;
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp

    r56701 r56704  
    17771777           << GUI_Fullscreen_LegacyMode
    17781778#endif /* Q_WS_X11 */
    1779            << GUI_AutoresizeGuest << GUI_LastGuestSizeHint
     1779           << GUI_AutoresizeGuest << GUI_LastVisibilityStatusForGuestScreen << GUI_LastGuestSizeHint
    17801780           << GUI_VirtualScreenToHostScreen << GUI_AutomountGuestScreens
    17811781#ifdef VBOX_WITH_VIDEOHWACCEL
     
    30703070    /* 'False' if feature restricted, null-string otherwise: */
    30713071    setExtraDataString(GUI_AutoresizeGuest, toFeatureRestricted(!fEnabled), strID);
     3072}
     3073
     3074bool UIExtraDataManager::lastGuestScreenVisibilityStatus(ulong uScreenIndex, const QString &strID)
     3075{
     3076    /* Not for primary screen: */
     3077    AssertReturn(uScreenIndex > 0, true);
     3078
     3079    /* Compose corresponding key: */
     3080    const QString strKey = extraDataKeyPerScreen(GUI_LastVisibilityStatusForGuestScreen, uScreenIndex);
     3081
     3082    /* 'False' unless feature allowed: */
     3083    return isFeatureAllowed(strKey, strID);
     3084}
     3085
     3086void UIExtraDataManager::setLastGuestScreenVisibilityStatus(ulong uScreenIndex, bool fEnabled, const QString &strID)
     3087{
     3088    /* Not for primary screen: */
     3089    AssertReturnVoid(uScreenIndex > 0);
     3090
     3091    /* Compose corresponding key: */
     3092    const QString strKey = extraDataKeyPerScreen(GUI_LastVisibilityStatusForGuestScreen, uScreenIndex);
     3093
     3094    /* 'True' if feature allowed, null-string otherwise: */
     3095    return setExtraDataString(strKey, toFeatureAllowed(fEnabled), strID);
    30723096}
    30733097
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h

    r56701 r56704  
    379379        void setGuestScreenAutoResizeEnabled(bool fEnabled, const QString &strID);
    380380
     381        /** Returns last guest-screen visibility status for screen with @a uScreenIndex. */
     382        bool lastGuestScreenVisibilityStatus(ulong uScreenIndex, const QString &strID);
     383        /** Defines whether last guest-screen visibility status was @a fEnabled for screen with @a uScreenIndex. */
     384        void setLastGuestScreenVisibilityStatus(ulong uScreenIndex, bool fEnabled, const QString &strID);
     385
    381386        /** Returns last guest-screen size-hint for screen with @a uScreenIndex. */
    382387        QSize lastGuestScreenSizeHint(ulong uScreenIndex, const QString &strID);
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp

    r56701 r56704  
    923923}
    924924
     925bool UIMachineView::guestScreenVisibilityStatus() const
     926{
     927    /* Always 'true' for primary guest-screen: */
     928    if (m_uScreenId == 0)
     929        return true;
     930
     931    /* Actual value for other guest-screens: */
     932    return gEDataManager->lastGuestScreenVisibilityStatus(m_uScreenId, vboxGlobal().managedVMUuid());
     933}
     934
    925935QSize UIMachineView::guestScreenSizeHint() const
    926936{
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h

    r56701 r56704  
    210210    QSize maxGuestSize();
    211211
     212    /** Retrieves the last guest-screen visibility status from extra-data. */
     213    bool guestScreenVisibilityStatus() const;
     214
    212215    /** Retrieves the last guest-screen size-hint from extra-data. */
    213216    QSize guestScreenSizeHint() const;
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp

    r56443 r56704  
    19371937bool UISession::isScreenVisible(ulong uScreenId) const
    19381938{
    1939     Assert(uScreenId < (ulong)m_monitorVisibilityVector.size());
    1940     return m_monitorVisibilityVector.value((int)uScreenId, false);
     1939    /* Make sure index feats the bounds: */
     1940    AssertReturn(uScreenId < (ulong)m_monitorVisibilityVector.size(), false);
     1941
     1942    /* Return 'actual' visibility status: */
     1943    return m_monitorVisibilityVector.value((int)uScreenId);
    19411944}
    19421945
    19431946void UISession::setScreenVisible(ulong uScreenId, bool fIsMonitorVisible)
    19441947{
    1945     Assert(uScreenId < (ulong)m_monitorVisibilityVector.size());
    1946     if (uScreenId < (ulong)m_monitorVisibilityVector.size())
    1947         m_monitorVisibilityVector[(int)uScreenId] = fIsMonitorVisible;
     1948    /* Make sure index feats the bounds: */
     1949    AssertReturnVoid(uScreenId < (ulong)m_monitorVisibilityVector.size());
     1950
     1951    /* Remember 'actual' visibility status: */
     1952    m_monitorVisibilityVector[(int)uScreenId] = fIsMonitorVisible;
     1953    /* Remember 'desired' visibility status: */
     1954    gEDataManager->setLastGuestScreenVisibilityStatus(uScreenId, fIsMonitorVisible, vboxGlobal().managedVMUuid());
    19481955}
    19491956
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineViewNormal.cpp

    r56701 r56704  
    159159    ///       Just let the guest start at the default 800x600?
    160160    display().SetVideoModeHint(screenId(),
    161                                true /* temporary decision */,
     161                               guestScreenVisibilityStatus(),
    162162                               false, 0, 0, sizeHint.width(), sizeHint.height(), 0);
    163163}
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineViewScale.cpp

    r56701 r56704  
    163163    /* Send saved size-hint to the guest: */
    164164    display().SetVideoModeHint(screenId(),
    165                                true /* temporary decision */,
     165                               guestScreenVisibilityStatus(),
    166166                               false, 0, 0, sizeHint.width(), sizeHint.height(), 0);
    167167}
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