Changeset 55939 in vbox
- Timestamp:
- May 19, 2015 3:53:48 PM (9 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 9 edited
-
extradata/UIExtraDataDefs.cpp (modified) (1 diff)
-
extradata/UIExtraDataDefs.h (modified) (1 diff)
-
extradata/UIExtraDataManager.cpp (modified) (2 diffs)
-
extradata/UIExtraDataManager.h (modified) (1 diff)
-
runtime/UIMachineView.cpp (modified) (2 diffs)
-
runtime/normal/UIMachineViewNormal.cpp (modified) (3 diffs)
-
runtime/normal/UIMachineViewNormal.h (modified) (2 diffs)
-
runtime/scale/UIMachineViewScale.cpp (modified) (3 diffs)
-
runtime/scale/UIMachineViewScale.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp
r55346 r55939 113 113 const char* UIExtraDataDefs::GUI_AutoresizeGuest = "GUI/AutoresizeGuest"; 114 114 const char* UIExtraDataDefs::GUI_LastGuestSizeHint = "GUI/LastGuestSizeHint"; 115 const char* UIExtraDataDefs::GUI_LastGuestSizeHintWasFullscreen = "GUI/LastGuestSizeHintWasFullscreen";116 115 const char* UIExtraDataDefs::GUI_VirtualScreenToHostScreen = "GUI/VirtualScreenToHostScreen"; 117 116 const char* UIExtraDataDefs::GUI_AutomountGuestScreens = "GUI/AutomountGuestScreens"; -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
r55401 r55939 193 193 extern const char* GUI_LastGuestSizeHint; 194 194 /** Prefix used by composite extra-data keys, 195 * which holds whether guest size-hint was for full or seamless screen per screen-index. */196 extern const char* GUI_LastGuestSizeHintWasFullscreen;197 /** Prefix used by composite extra-data keys,198 195 * which holds host-screen index per guest-screen index. */ 199 196 extern const char* GUI_VirtualScreenToHostScreen; -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
r55726 r55939 1777 1777 << GUI_Fullscreen_LegacyMode 1778 1778 #endif /* Q_WS_X11 */ 1779 << GUI_AutoresizeGuest << GUI_LastGuestSizeHint << GUI_LastGuestSizeHintWasFullscreen1779 << GUI_AutoresizeGuest << GUI_LastGuestSizeHint 1780 1780 << GUI_VirtualScreenToHostScreen << GUI_AutomountGuestScreens 1781 1781 #ifdef VBOX_WITH_VIDEOHWACCEL … … 3108 3108 /* Re-cache corresponding extra-data: */ 3109 3109 setExtraDataStringList(strKey, data, strID); 3110 }3111 3112 bool UIExtraDataManager::wasLastGuestSizeHintForFullScreen(ulong uScreenIndex, const QString &strID)3113 {3114 /* Choose corresponding key: */3115 const QString strKey = extraDataKeyPerScreen(GUI_LastGuestSizeHintWasFullscreen, uScreenIndex);3116 3117 /* 'True' only if feature is allowed: */3118 return isFeatureAllowed(strKey, strID);3119 }3120 3121 void UIExtraDataManager::markLastGuestSizeHintAsFullScreen(ulong uScreenIndex, bool fWas, const QString &strID)3122 {3123 /* Choose corresponding key: */3124 const QString strKey = extraDataKeyPerScreen(GUI_LastGuestSizeHintWasFullscreen, uScreenIndex);3125 3126 /* 'True' if feature allowed, null-string otherwise: */3127 return setExtraDataString(strKey, toFeatureAllowed(fWas), strID);3128 3110 } 3129 3111 -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h
r55726 r55939 383 383 /** Defines last guest-screen @a sizeHint for screen with @a uScreenIndex. */ 384 384 void setLastGuestSizeHint(ulong uScreenIndex, const QSize &sizeHint, const QString &strID); 385 /** Returns whether guest size-hint was for full or seamless screen with @a uScreenIndex. */386 bool wasLastGuestSizeHintForFullScreen(ulong uScreenIndex, const QString &strID);387 /** Defines whether guest size-hint @a fWas for full or seamless screen with @a uScreenIndex. */388 void markLastGuestSizeHintAsFullScreen(ulong uScreenIndex, bool fWas, const QString &strID);389 385 390 386 /** Returns host-screen index corresponding to passed guest-screen @a iGuestScreenIndex. */ -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp
r55854 r55939 237 237 false, 0, 0, size.width(), size.height(), 0); 238 238 239 /* And track whether we have a "normal" or "fullscreen"/"seamless" size-hint sent: */ 240 gEDataManager->markLastGuestSizeHintAsFullScreen(m_uScreenId, isFullscreenOrSeamless(), vboxGlobal().managedVMUuid()); 239 /* If we are in normal or scaled mode, remember the size sent for the next 240 * time we have to restore one of those two modes: */ 241 if (!isFullscreenOrSeamless()) 242 storeGuestSizeHint(size); 241 243 } 242 244 … … 826 828 QSize UIMachineView::sizeHint() const 827 829 { 828 if (m_sizeHintOverride.isValid() )830 if (m_sizeHintOverride.isValid() && uisession()->isGuestSupportsGraphics()) 829 831 return m_sizeHintOverride; 830 832 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineViewNormal.cpp
r54160 r55939 55 55 , m_bIsGuestAutoresizeEnabled(actionPool()->action(UIActionIndexRT_M_View_T_GuestAutoresize)->isChecked()) 56 56 { 57 /* Resend the last resize hint if necessary: */58 maybeResendSizeHint();57 /* Resend the last resize hint: */ 58 resendSizeHint(); 59 59 } 60 60 61 61 UIMachineViewNormal::~UIMachineViewNormal() 62 62 { 63 /* Save machine view settings: */64 saveMachineViewSettings();65 66 63 /* Cleanup frame buffer: */ 67 64 cleanupFrameBuffer(); … … 127 124 } 128 125 129 void UIMachineViewNormal::saveMachineViewSettings()130 {131 /* If guest screen-still visible => store it's size-hint: */132 if (uisession()->isScreenVisible(screenId()))133 storeGuestSizeHint(QSize(frameBuffer()->width(), frameBuffer()->height()));134 }135 136 126 void UIMachineViewNormal::setGuestAutoresizeEnabled(bool fEnabled) 137 127 { … … 145 135 } 146 136 147 void UIMachineViewNormal:: maybeResendSizeHint()137 void UIMachineViewNormal::resendSizeHint() 148 138 { 149 if (m_bIsGuestAutoresizeEnabled && uisession()->isGuestSupportsGraphics()) 150 { 151 /* Send guest-screen size-hint if needed to reverse a transition to fullscreen or seamless: */ 152 if (gEDataManager->wasLastGuestSizeHintForFullScreen(m_uScreenId, vboxGlobal().managedVMUuid())) 153 { 154 const QSize sizeHint = guestSizeHint(); 155 LogRel(("UIMachineViewNormal::maybeResendSizeHint: " 156 "Restoring guest size-hint for screen %d to %dx%d\n", 157 (int)screenId(), sizeHint.width(), sizeHint.height())); 158 /* Temporarily restrict the size to prevent a brief resize to the 159 * framebuffer dimensions (see @a UIMachineView::sizeHint()) before 160 * the following resize() is acted upon. */ 161 setMaximumSize(sizeHint); 162 m_sizeHintOverride = sizeHint; 163 sltPerformGuestResize(sizeHint); 164 } 165 } 139 const QSize sizeHint = guestSizeHint(); 140 LogRel(("GUI: UIMachineViewNormal::resendSizeHint: Restoring guest size-hint for screen %d to %dx%d\n", 141 (int)screenId(), sizeHint.width(), sizeHint.height())); 142 /* Temporarily restrict the size to prevent a brief resize to the 143 * framebuffer dimensions (see @a UIMachineView::sizeHint()) before 144 * the following resize() is acted upon. */ 145 setMaximumSize(sizeHint); 146 m_sizeHintOverride = sizeHint; 147 sltPerformGuestResize(sizeHint); 166 148 } 167 149 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineViewNormal.h
r55401 r55939 52 52 void prepareFilters(); 53 53 void prepareConsoleConnections(); 54 //void loadMachineViewSettings();55 54 56 55 /* Cleanup helpers: */ 57 void saveMachineViewSettings();58 56 //void cleanupConsoleConnections() {} 59 57 //void cleanupFilters() {} … … 63 61 void setGuestAutoresizeEnabled(bool bEnabled); 64 62 65 /** Resends guest size-hint if necessary. */66 void maybeResendSizeHint();63 /** Resends guest size-hint. */ 64 void resendSizeHint(); 67 65 68 66 /** Adjusts guest-screen size to correspond current <i>machine-window</i> size. */ -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineViewScale.cpp
r54603 r55939 57 57 ) 58 58 { 59 /* Resend the last resize hint if necessary: */60 maybeResendSizeHint();59 /* Resend the last resize hint: */ 60 resendSizeHint(); 61 61 } 62 62 63 63 UIMachineViewScale::~UIMachineViewScale() 64 64 { 65 /* Save machine view settings: */66 saveMachineViewSettings();67 68 65 /* Cleanup frame buffer: */ 69 66 cleanupFrameBuffer(); … … 121 118 } 122 119 123 void UIMachineViewScale::saveMachineViewSettings()124 {125 /* If guest screen-still visible => store it's size-hint: */126 if (uisession()->isScreenVisible(screenId()))127 storeGuestSizeHint(QSize(frameBuffer()->width(), frameBuffer()->height()));128 }129 130 120 void UIMachineViewScale::applyMachineViewScaleFactor() 131 121 { … … 161 151 } 162 152 163 void UIMachineViewScale::maybeResendSizeHint() 164 { 165 if (uisession()->isGuestSupportsGraphics()) 166 { 167 /* Send guest-screen size-hint if needed to reverse a transition to fullscreen or seamless: */ 168 if (gEDataManager->wasLastGuestSizeHintForFullScreen(m_uScreenId, vboxGlobal().managedVMUuid())) 169 { 170 const QSize sizeHint = guestSizeHint(); 171 LogRel(("UIMachineViewScale::maybeResendSizeHint: " 172 "Restoring guest size-hint for screen %d to %dx%d\n", 173 (int)screenId(), sizeHint.width(), sizeHint.height())); 174 sltPerformGuestResize(sizeHint); 175 } 176 } 153 void UIMachineViewScale::resendSizeHint() 154 { 155 const QSize sizeHint = guestSizeHint(); 156 LogRel(("GUI: UIMachineViewScale::resendSizeHint: Restoring guest size-hint for screen %d to %dx%d\n", 157 (int)screenId(), sizeHint.width(), sizeHint.height())); 158 sltPerformGuestResize(sizeHint); 177 159 } 178 160 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineViewScale.h
r55401 r55939 48 48 bool eventFilter(QObject *pWatched, QEvent *pEvent); 49 49 50 /* Prepare helpers: */51 //void loadMachineViewSettings() {}52 53 /* Cleanup helpers: */54 void saveMachineViewSettings();55 56 50 /** Applies machine-view scale-factor. */ 57 51 void applyMachineViewScaleFactor(); 58 52 59 /** Resends guest size-hint if necessary. */60 void maybeResendSizeHint();53 /** Resends guest size-hint. */ 54 void resendSizeHint(); 61 55 62 56 /* Private helpers: */
Note:
See TracChangeset
for help on using the changeset viewer.

