VirtualBox

Changeset 52705 in vbox


Ignore:
Timestamp:
Sep 11, 2014 3:12:06 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
96041
Message:

FE/Qt: Runtime UI: Geometry adjustment code refactoring (better encapsulation for that mess, renaming to more logical names); Mini-toolbar update bug-fix on machine-window geometry adjustment.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/runtime
Files:
20 edited

Legend:

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

    r52686 r52705  
    271271}
    272272
    273 /** Adjusts guest screen size for each the machine-window we have. */
    274 void UIMachineLogic::maybeAdjustGuestScreenSize()
    275 {
     273void UIMachineLogic::adjustMachineWindowsGeometry()
     274{
     275    /* By default, the only thing we need is to
     276     * adjust machine-view size(s) if necessary: */
    276277    foreach(UIMachineWindow *pMachineWindow, machineWindows())
    277         pMachineWindow->machineView()->maybeAdjustGuestScreenSize();
     278        pMachineWindow->adjustMachineViewSize();
    278279}
    279280
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h

    r52298 r52705  
    9191    void setPreventAutoClose(bool fIsPreventAutoClose) { m_fIsPreventAutoClose = fIsPreventAutoClose; }
    9292
    93     /* API: Guest screen size stuff: */
    94     virtual void maybeAdjustGuestScreenSize();
     93    /** Adjusts machine-window(s) geometry if necessary. */
     94    virtual void adjustMachineWindowsGeometry();
    9595
    9696    /* Wrapper to open Machine settings / Network page: */
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h

    r52202 r52705  
    8585    virtual void setGuestAutoresizeEnabled(bool /* fEnabled */) {}
    8686
    87     /** Adjusts guest screen size to correspond current machine-window size.
     87    /** Adjusts guest-screen size to correspond current visual-style.
    8888      * @note Reimplemented in sub-classes. Base implementation does nothing. */
    89     virtual void maybeAdjustGuestScreenSize() {}
     89    virtual void adjustGuestScreenSize() {}
    9090
    9191    /* Framebuffer aspect ratio: */
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineWindow.cpp

    r52298 r52705  
    210210}
    211211
     212void UIMachineWindow::adjustMachineViewSize()
     213{
     214    /* By default, the only thing we need is to
     215     * adjust guest-screen size if necessary: */
     216    machineView()->adjustGuestScreenSize();
     217}
     218
    212219#ifndef VBOX_WITH_TRANSLUCENT_SEAMLESS
    213220void UIMachineWindow::setMask(const QRegion &region)
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineWindow.h

    r52298 r52705  
    7070    CMachine machine() const;
    7171
    72     /** Adjusts machine-window size to correspond current guest screen size.
     72    /** Adjusts machine-window size to correspond current machine-view size.
    7373      * @param fAdjustPosition determines whether is it necessary to adjust position too.
    7474      * @note  Reimplemented in sub-classes. Base implementation does nothing. */
    7575    virtual void normalizeGeometry(bool fAdjustPosition) { Q_UNUSED(fAdjustPosition); }
     76
     77    /** Adjusts machine-view size to correspond current machine-window size. */
     78    virtual void adjustMachineViewSize();
    7679
    7780#ifndef VBOX_WITH_TRANSLUCENT_SEAMLESS
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp

    r52645 r52705  
    282282    {
    283283        msgCenter().showModalProgressDialog(progress, machine.GetName(), ":/progress_state_restore_90px.png", 0, 0);
    284         /* After restoring from 'saved' state, guest screen size should be adjusted: */
    285         machineLogic()->maybeAdjustGuestScreenSize();
     284        /* After restoring from 'saved' state, machine-window(s) geometry should be adjusted: */
     285        machineLogic()->adjustMachineWindowsGeometry();
    286286    }
    287287    else
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp

    r52512 r52705  
    9898}
    9999
    100 /** Adjusts guest screen count/size for the machine-logic we have. */
    101 void UIMachineLogicFullscreen::maybeAdjustGuestScreenSize()
    102 {
    103     LogRel(("UIMachineLogicFullscreen::maybeAdjustGuestScreenSize"));
     100void UIMachineLogicFullscreen::adjustMachineWindowsGeometry()
     101{
     102    LogRel(("UIMachineLogicFullscreen::adjustMachineWindowsGeometry\n"));
    104103
    105104    /* Rebuild multi-screen layout: */
     
    114113            pMachineWindow->showInNecessaryMode();
    115114    }
    116     /* Revalidate native fullscreen for ML and next: */
     115    /* For ML and next revalidate native fullscreen: */
    117116    else revalidateNativeFullScreen();
    118117#else /* !Q_WS_MAC */
     
    363362    if (uisession()->isRunning() && uisession()->wasPaused())
    364363    {
    365         LogRelFlow(("UIMachineLogicFullscreen: "
    366                     "Machine-state changed from 'paused' to 'running': "
    367                     "Updating screen-layout...\n"));
     364        LogRel(("UIMachineLogicFullscreen::sltMachineStateChanged:"
     365                "Machine-state changed from 'paused' to 'running': "
     366                "Adjust machine-window geometry...\n"));
    368367
    369368        /* Make sure further code will be called just once: */
    370369        uisession()->forgetPreviousMachineState();
    371         /* Adjust guest-screen size if necessary: */
    372         maybeAdjustGuestScreenSize();
     370        /* Adjust machine-window geometry if necessary: */
     371        adjustMachineWindowsGeometry();
    373372    }
    374373}
     
    802801                        "Ask machine-window #%d to adjust guest geometry.\n", (int)uScreenID));
    803802
    804                 /* Adjust guest screen size if necessary: */
    805                 pMachineWindow->machineView()->maybeAdjustGuestScreenSize();
     803                /* Just adjust machine-view size if necessary: */
     804                pMachineWindow->adjustMachineViewSize();
    806805            }
    807806        }
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.h

    r52512 r52705  
    6262    virtual Qt::WindowFlags windowFlags(ulong uScreenId) const;
    6363
     64    /** Adjusts machine-window geometry if necessary for 'Fullscreen'. */
     65    virtual void adjustMachineWindowsGeometry();
     66
    6467    /* Helpers: Multi-screen stuff: */
    65     void maybeAdjustGuestScreenSize();
    6668    int hostScreenForGuestScreen(int iScreenId) const;
    6769    bool hasHostScreenForGuestScreen(int iScreenId) const;
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineViewFullscreen.cpp

    r52202 r52705  
    6363void UIMachineViewFullscreen::sltAdditionsStateChanged()
    6464{
    65     maybeAdjustGuestScreenSize();
     65    adjustGuestScreenSize();
    6666}
    6767
     
    136136}
    137137
    138 /** Adjusts guest screen size to correspond current <i>working area</i> size. */
    139 void UIMachineViewFullscreen::maybeAdjustGuestScreenSize()
     138void UIMachineViewFullscreen::adjustGuestScreenSize()
    140139{
    141     /* Check if we should adjust guest to new size: */
     140    /* Check if we should adjust guest-screen to new size: */
    142141    if (frameBuffer()->isAutoEnabled() ||
    143142        (int)frameBuffer()->width() != workingArea().size().width() ||
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineViewFullscreen.h

    r49177 r52705  
    6262    void setGuestAutoresizeEnabled(bool bEnabled);
    6363
     64    /** Adjusts guest-screen size to correspond current <i>working area</i> size. */
     65    void adjustGuestScreenSize();
     66
    6467    /* Helpers: Geometry stuff: */
    65     void maybeAdjustGuestScreenSize();
    6668    QRect workingArea() const;
    6769    QSize calculateMaxGuestSize() const;
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp

    r52638 r52705  
    347347        return;
    348348
    349     /* Which host-screen should that machine-window located on? */
    350     const int iHostScreen = pFullscreenLogic->hostScreenForGuestScreen(m_uScreenId);
    351 
    352349#ifdef Q_WS_X11
    353350    /* On X11 calling placeOnScreen() is only needed for legacy window managers
     
    381378         * Apparently some window managers will not respond to requests for
    382379         * unmapped windows, so do this *after* the call to showFullScreen(). */
    383         VBoxGlobal::setFullScreenMonitorX11(this, iHostScreen);
     380        VBoxGlobal::setFullScreenMonitorX11(this, pFullscreenLogic->hostScreenForGuestScreen(m_uScreenId));
    384381    }
    385382    else
     
    392389#endif /* Q_WS_X11 */
    393390
    394     /* Adjust guest-screen size if necessary: */
    395     machineView()->maybeAdjustGuestScreenSize();
    396 
    397     /* Show/Move mini-toolbar into appropriate place: */
     391    /* Adjust machine-view size if necessary: */
     392    adjustMachineViewSize();
     393
     394    /* Show mini-toolbar: */
    398395    if (m_pMiniToolBar)
    399     {
    400396        m_pMiniToolBar->show();
    401         m_pMiniToolBar->adjustGeometry(iHostScreen);
    402     }
    403397
    404398    /* Make sure machine-view have focus: */
    405399    m_pMachineView->setFocus();
     400}
     401
     402void UIMachineWindowFullscreen::adjustMachineViewSize()
     403{
     404    /* Call to base-class: */
     405    UIMachineWindow::adjustMachineViewSize();
     406
     407    /* If mini-toolbar present: */
     408    if (m_pMiniToolBar)
     409    {
     410        /* Make sure this window has fullscreen logic: */
     411        UIMachineLogicFullscreen *pFullscreenLogic = qobject_cast<UIMachineLogicFullscreen*>(machineLogic());
     412        AssertPtrReturnVoid(pFullscreenLogic);
     413
     414        /* Which host-screen should that machine-window located on? */
     415        const int iHostScreen = pFullscreenLogic->hostScreenForGuestScreen(m_uScreenId);
     416
     417        /* Move mini-toolbar into appropriate place: */
     418        m_pMiniToolBar->adjustGeometry(iHostScreen);
     419    }
    406420}
    407421
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.h

    r52129 r52705  
    8686    void showInNecessaryMode();
    8787
     88    /** Adjusts machine-view size to correspond current machine-window size. */
     89    virtual void adjustMachineViewSize();
     90
    8891    /* Update stuff: */
    8992    void updateAppearanceOf(int iElement);
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineViewNormal.cpp

    r52638 r52705  
    6565void UIMachineViewNormal::sltAdditionsStateChanged()
    6666{
    67     maybeAdjustGuestScreenSize();
     67    adjustGuestScreenSize();
    6868}
    6969
     
    161161}
    162162
    163 /** Adjusts guest screen size to correspond current machine-window size. */
    164 void UIMachineViewNormal::maybeAdjustGuestScreenSize()
    165 {
    166     /* Check if we should adjust guest to new size: */
    167     QSize centralWidgetSize = machineWindow()->centralWidget()->size();
     163void UIMachineViewNormal::adjustGuestScreenSize()
     164{
     165    /* Check if we should adjust guest-screen to new size: */
     166    const QSize centralWidgetSize = machineWindow()->centralWidget()->size();
    168167    if ((int)frameBuffer()->width() != centralWidgetSize.width() ||
    169168        (int)frameBuffer()->height() != centralWidgetSize.height())
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineViewNormal.h

    r52246 r52705  
    6767    void maybeResendSizeHint();
    6868
     69    /** Adjusts guest-screen size to correspond current <i>machine-window</i> size. */
     70    void adjustGuestScreenSize();
     71
    6972    /* Private helpers: */
    70     void maybeAdjustGuestScreenSize();
    7173    QRect workingArea() const;
    7274    QSize calculateMaxGuestSize() const;
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp

    r52478 r52705  
    8585}
    8686
    87 /** Adjusts guest screen count/size for the machine-logic we have. */
    88 void UIMachineLogicSeamless::maybeAdjustGuestScreenSize()
    89 {
    90     LogRel(("UIMachineLogicSeamless::maybeAdjustGuestScreenSize"));
     87void UIMachineLogicSeamless::adjustMachineWindowsGeometry()
     88{
     89    LogRel(("UIMachineLogicSeamless::adjustMachineWindowsGeometry\n"));
    9190
    9291    /* Rebuild multi-screen layout: */
     
    144143    if (uisession()->isRunning() && uisession()->wasPaused())
    145144    {
    146         LogRelFlow(("UIMachineLogicSeamless: "
    147                     "Machine-state changed from 'paused' to 'running': "
    148                     "Updating screen-layout...\n"));
     145        LogRel(("UIMachineLogicSeamless::sltMachineStateChanged:"
     146                "Machine-state changed from 'paused' to 'running': "
     147                "Adjust machine-window geometry...\n"));
    149148
    150149        /* Make sure further code will be called just once: */
    151150        uisession()->forgetPreviousMachineState();
    152         /* Adjust guest-screen size if necessary: */
    153         maybeAdjustGuestScreenSize();
     151        /* Adjust machine-window geometry if necessary: */
     152        adjustMachineWindowsGeometry();
    154153    }
    155154}
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.h

    r52298 r52705  
    4141    virtual Qt::WindowFlags windowFlags(ulong uScreenId) const { Q_UNUSED(uScreenId); return Qt::FramelessWindowHint; }
    4242
     43    /** Adjusts machine-window geometry if necessary for 'Seamless'. */
     44    virtual void adjustMachineWindowsGeometry();
     45
    4346    /* Helpers: Multi-screen stuff: */
    44     void maybeAdjustGuestScreenSize();
    4547    int hostScreenForGuestScreen(int iScreenId) const;
    4648    bool hasHostScreenForGuestScreen(int iScreenId) const;
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineViewSeamless.cpp

    r49322 r52705  
    7272void UIMachineViewSeamless::sltAdditionsStateChanged()
    7373{
    74     maybeAdjustGuestScreenSize();
     74    adjustGuestScreenSize();
    7575}
    7676
     
    154154}
    155155
    156 /** Adjusts guest screen size to correspond current <i>working area</i> size. */
    157 void UIMachineViewSeamless::maybeAdjustGuestScreenSize()
     156void UIMachineViewSeamless::adjustGuestScreenSize()
    158157{
    159     /* Check if we should adjust guest to new size: */
     158    /* Check if we should adjust guest-screen to new size: */
    160159    if (frameBuffer()->isAutoEnabled() ||
    161160        (int)frameBuffer()->width() != workingArea().size().width() ||
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineViewSeamless.h

    r49177 r52705  
    6464    //void cleanupCommon() {}
    6565
     66    /** Adjusts guest-screen size to correspond current <i>working area</i> size. */
     67    void adjustGuestScreenSize();
     68
    6669    /* Helpers: Geometry stuff: */
    67     void maybeAdjustGuestScreenSize();
    6870    QRect workingArea() const;
    6971    QSize calculateMaxGuestSize() const;
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.cpp

    r52638 r52705  
    200200    show();
    201201
    202     /* Adjust guest screen size if necessary: */
    203     machineView()->maybeAdjustGuestScreenSize();
    204 
    205 #ifndef Q_WS_MAC
    206     /* Show/Move mini-toolbar into appropriate place: */
     202    /* Adjust machine-view size if necessary: */
     203    adjustMachineViewSize();
     204
     205#ifndef Q_WS_MAC
     206    /* Show mini-toolbar: */
     207    if (m_pMiniToolBar)
     208        m_pMiniToolBar->show();
     209#endif /* !Q_WS_MAC */
     210
     211    /* Make sure machine-view have focus: */
     212    m_pMachineView->setFocus();
     213}
     214
     215void UIMachineWindowSeamless::adjustMachineViewSize()
     216{
     217    /* Call to base-class: */
     218    UIMachineWindow::adjustMachineViewSize();
     219
     220#ifndef Q_WS_MAC
     221    /* If mini-toolbar present: */
    207222    if (m_pMiniToolBar)
    208223    {
    209         m_pMiniToolBar->show();
    210         m_pMiniToolBar->adjustGeometry();
     224        /* Make sure this window has seamless logic: */
     225        const UIMachineLogicFullscreen *pSeamlessLogic = qobject_cast<UIMachineLogicSeamless*>(machineLogic());
     226        AssertPtrReturnVoid(pSeamlessLogic);
     227
     228        /* Which host-screen should that machine-window located on? */
     229        const int iHostScreen = pSeamlessLogic->hostScreenForGuestScreen(m_uScreenId);
     230
     231        /* Move mini-toolbar into appropriate place: */
     232        m_pMiniToolBar->adjustGeometry(iHostScreen);
    211233    }
    212234#endif /* !Q_WS_MAC */
    213 
    214     /* Make sure machine-view have focus: */
    215     m_pMachineView->setFocus();
    216235}
    217236
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.h

    r52129 r52705  
    6464    void showInNecessaryMode();
    6565
     66    /** Adjusts machine-view size to correspond current machine-window size. */
     67    virtual void adjustMachineViewSize();
     68
    6669#ifndef Q_WS_MAC
    6770    /* Update routines: */
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