VirtualBox

Changeset 81248 in vbox


Ignore:
Timestamp:
Oct 14, 2019 10:31:23 AM (5 years ago)
Author:
vboxsync
Message:

FE/Qt: QIMainWindow: Move geometry updating code from children like VirtualBox Manager, Extra-data Manager and Session Information dialog to base-class.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainWindow.cpp

    r81224 r81248  
    1616 */
    1717
     18/* Qt includes: */
     19#include <QResizeEvent>
     20
    1821/* GUI includes: */
    1922#include "QIMainWindow.h"
    2023#ifdef VBOX_WS_X11
    2124# include "UICommon.h"
     25# include "UIDesktopWidgetWatchdog.h"
    2226#endif
    2327
     
    2832}
    2933
     34void QIMainWindow::moveEvent(QMoveEvent *pEvent)
     35{
     36    /* Call to base-class: */
     37    QMainWindow::moveEvent(pEvent);
     38
     39#ifdef VBOX_WS_X11
     40    /* Prevent further handling if fake screen detected: */
     41    if (gpDesktop->isFakeScreenDetected())
     42        return;
     43#endif
     44
     45    /* Prevent handling for yet/already invisible window or if window is in minimized state: */
     46    if (isVisible() && (windowState() & Qt::WindowMinimized) == 0)
     47    {
     48#if defined(VBOX_WS_MAC) || defined(VBOX_WS_WIN)
     49        /* Use the old approach for OSX/Win: */
     50        m_geometry.moveTo(frameGeometry().x(), frameGeometry().y());
     51#else
     52        /* Use the new approach otherwise: */
     53        m_geometry.moveTo(geometry().x(), geometry().y());
     54#endif
     55    }
     56}
     57
     58void QIMainWindow::resizeEvent(QResizeEvent *pEvent)
     59{
     60    /* Call to base-class: */
     61    QMainWindow::resizeEvent(pEvent);
     62
     63#ifdef VBOX_WS_X11
     64    /* Prevent handling if fake screen detected: */
     65    if (gpDesktop->isFakeScreenDetected())
     66        return;
     67#endif
     68
     69    /* Prevent handling for yet/already invisible window or if window is in minimized state: */
     70    if (isVisible() && (windowState() & Qt::WindowMinimized) == 0)
     71    {
     72        QResizeEvent *pResizeEvent = static_cast<QResizeEvent*>(pEvent);
     73        m_geometry.setSize(pResizeEvent->size());
     74    }
     75}
     76
    3077void QIMainWindow::restoreGeometry()
    3178{
     
    3481    move(m_geometry.topLeft());
    3582    resize(m_geometry.size());
    36 #else /* !VBOX_WS_MAC && !VBOX_WS_WIN */
     83#else
    3784    /* Use the new approach otherwise: */
    3885    UICommon::setTopLevelGeometry(this, m_geometry);
    39 #endif /* !VBOX_WS_MAC && !VBOX_WS_WIN */
     86#endif
    4087
    4188    /* Maximize (if necessary): */
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainWindow.h

    r76581 r81248  
    4545protected:
    4646
     47    /** Handles move @a pEvent. */
     48    virtual void moveEvent(QMoveEvent *pEvent) /* override */;
     49    /** Handles resize @a pEvent. */
     50    virtual void resizeEvent(QResizeEvent *pEvent) /* override */;
     51
    4752    /** Returns whether the window should be maximized when geometry being restored. */
    4853    virtual bool shouldBeMaximized() const { return false; }
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp

    r81230 r81248  
    573573        /** Cleanup instance. */
    574574        void cleanup();
    575     /** @} */
    576 
    577     /** @name Event Processing
    578       * @{ */
    579         /** Common event-handler. */
    580         bool event(QEvent *pEvent);
    581575    /** @} */
    582576
     
    17291723}
    17301724
    1731 bool UIExtraDataManagerWindow::event(QEvent *pEvent)
    1732 {
    1733     /* Pre-process through base-class: */
    1734     bool fResult = QIMainWindow::event(pEvent);
    1735 
    1736     /* Process required events: */
    1737     switch (pEvent->type())
    1738     {
    1739         /* Handle every Resize and Move we keep track of the geometry. */
    1740         case QEvent::Resize:
    1741         {
    1742             if (isVisible() && (windowState() & (Qt::WindowMaximized | Qt::WindowMinimized | Qt::WindowFullScreen)) == 0)
    1743             {
    1744                 QResizeEvent *pResizeEvent = static_cast<QResizeEvent*>(pEvent);
    1745                 m_geometry.setSize(pResizeEvent->size());
    1746             }
    1747             break;
    1748         }
    1749         case QEvent::Move:
    1750         {
    1751             if (isVisible() && (windowState() & (Qt::WindowMaximized | Qt::WindowMinimized | Qt::WindowFullScreen)) == 0)
    1752             {
    1753 #ifdef VBOX_WS_MAC
    1754                 QMoveEvent *pMoveEvent = static_cast<QMoveEvent*>(pEvent);
    1755                 m_geometry.moveTo(pMoveEvent->pos());
    1756 #else /* !VBOX_WS_MAC */
    1757                 m_geometry.moveTo(geometry().x(), geometry().y());
    1758 #endif /* !VBOX_WS_MAC */
    1759             }
    1760             break;
    1761         }
    1762         default:
    1763             break;
    1764     }
    1765 
    1766     /* Return result: */
    1767     return fResult;
    1768 }
    1769 
    17701725void UIExtraDataManagerWindow::updateActionsAvailability()
    17711726{
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp

    r81224 r81248  
    1818/* Qt includes: */
    1919#include <QMenuBar>
    20 #include <QResizeEvent>
    2120#include <QStandardPaths>
    2221#include <QStatusBar>
     
    188187}
    189188
    190 void UIVirtualBoxManager::moveEvent(QMoveEvent *pEvent)
    191 {
    192     /* Call to base-class: */
    193     QIWithRetranslateUI<QIMainWindow>::moveEvent(pEvent);
    194 
    195 #ifdef VBOX_WS_X11
    196     /* Prevent further handling if fake screen detected: */
    197     if (gpDesktop->isFakeScreenDetected())
    198         return;
    199 #endif
    200 
    201     /* Prevent handling for yet/already invisible window or if window is in minimized state: */
    202     if (isVisible() && (windowState() & Qt::WindowMinimized) == 0)
    203     {
    204 #if defined(VBOX_WS_MAC) || defined(VBOX_WS_WIN)
    205         m_geometry.moveTo(frameGeometry().x(), frameGeometry().y());
    206 #else
    207         m_geometry.moveTo(geometry().x(), geometry().y());
    208 #endif
    209     }
    210 }
    211 
    212 void UIVirtualBoxManager::resizeEvent(QResizeEvent *pEvent)
    213 {
    214     /* Call to base-class: */
    215     QIWithRetranslateUI<QIMainWindow>::resizeEvent(pEvent);
    216 
    217 #ifdef VBOX_WS_X11
    218     /* Prevent handling if fake screen detected: */
    219     if (gpDesktop->isFakeScreenDetected())
    220         return;
    221 #endif
    222 
    223     /* Prevent handling for yet/already invisible window or if window is in minimized state: */
    224     if (isVisible() && (windowState() & Qt::WindowMinimized) == 0)
    225     {
    226         QResizeEvent *pResizeEvent = static_cast<QResizeEvent*>(pEvent);
    227         m_geometry.setSize(pResizeEvent->size());
    228     }
    229 }
    230 
    231189void UIVirtualBoxManager::showEvent(QShowEvent *pEvent)
    232190{
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h

    r79365 r81248  
    9191        /** Handles any Qt @a pEvent. */
    9292        virtual bool event(QEvent *pEvent) /* override */;
    93         /** Handles move @a pEvent. */
    94         virtual void moveEvent(QMoveEvent *pEvent) /* override */;
    95         /** Handles resize @a pEvent. */
    96         virtual void resizeEvent(QResizeEvent *pEvent) /* override */;
    9793        /** Handles show @a pEvent. */
    9894        virtual void showEvent(QShowEvent *pEvent) /* override */;
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIVMInformationDialog.cpp

    r81224 r81248  
    116116}
    117117
    118 bool UIVMInformationDialog::event(QEvent *pEvent)
    119 {
    120     /* Pre-process through base-class: */
    121     const bool fResult = QIMainWindow::event(pEvent);
    122 
    123     /* Process required events: */
    124     switch (pEvent->type())
    125     {
    126         /* Handle Resize event to keep track of the geometry: */
    127         case QEvent::Resize:
    128         {
    129             if (isVisible() && (windowState() & (Qt::WindowMaximized | Qt::WindowMinimized | Qt::WindowFullScreen)) == 0)
    130             {
    131                 QResizeEvent *pResizeEvent = static_cast<QResizeEvent*>(pEvent);
    132                 m_geometry.setSize(pResizeEvent->size());
    133             }
    134             break;
    135         }
    136         /* Handle Move event to keep track of the geometry: */
    137         case QEvent::Move:
    138         {
    139             if (isVisible() && (windowState() & (Qt::WindowMaximized | Qt::WindowMinimized | Qt::WindowFullScreen)) == 0)
    140             {
    141 #ifdef VBOX_WS_MAC
    142                 QMoveEvent *pMoveEvent = static_cast<QMoveEvent*>(pEvent);
    143                 m_geometry.moveTo(pMoveEvent->pos());
    144 #else /* VBOX_WS_MAC */
    145                 m_geometry.moveTo(geometry().x(), geometry().y());
    146 #endif /* !VBOX_WS_MAC */
    147             }
    148             break;
    149         }
    150         default:
    151             break;
    152     }
    153 
    154     /* Return result: */
    155     return fResult;
    156 }
    157 
    158118void UIVMInformationDialog::sltHandlePageChanged(int iIndex)
    159119{
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIVMInformationDialog.h

    r76581 r81248  
    6161    void retranslateUi();
    6262
    63     /** Handles any Qt @a pEvent. */
    64     bool event(QEvent *pEvent);
    65 
    6663private slots:
    6764
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