VirtualBox

Changeset 62917 in vbox


Ignore:
Timestamp:
Aug 3, 2016 2:10:33 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
109519
Message:

FE/Qt: bugref:8505: X11: Runtime UI: Do not save/restore normal/scaled geometry for the zero/fake screen case.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp

    r62493 r62917  
    4949#  include <QTextStream>
    5050# endif /* VBOX_GUI_WITH_PIDFILE */
     51# if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
     52#  include <QScreen>
     53# endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
    5154
    5255/* GUI includes: */
     
    405408}
    406409
     410#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
     411bool VBoxGlobal::isFakeScreenDetected() const
     412{
     413    // WORKAROUND:
     414    // In 5.6.1 Qt devs taught the XCB plugin to silently swap last detached screen
     415    // with a fake one, and there is no API-way to distinguish fake from real one
     416    // because all they do is erasing output for the last real screen, keeping
     417    // all other screen attributes stale. Gladly output influencing screen name
     418    // so we can use that horrible workaround to detect a fake XCB screen.
     419    return    qApp->screens().size() == 0 /* zero-screen case is impossible after 5.6.1 */
     420           || (qApp->screens().size() == 1 && qApp->screens().first()->name() == ":0.0");
     421}
     422#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
     423
    407424/**
    408425 *  Sets the new global settings and saves them to the VirtualBox server.
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h

    r62493 r62917  
    172172        /** Returns the available-geometry of the host-screen which contains @a point. */
    173173        const QRect availableGeometry(const QPoint &point) const;
     174
     175#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
     176        /** Qt5: X11: Returns whether no or fake screen detected. */
     177        bool isFakeScreenDetected() const;
     178#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
    174179    /** @} */
    175180
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp

    r62914 r62917  
    254254{
    255255#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
     256    /* Prevent handling if fake screen detected: */
     257    if (vboxGlobal().isFakeScreenDetected())
     258        return;
     259
    256260    /* Make sure all machine-window(s) have previous but normalized geometry: */
    257261    foreach (UIMachineWindow *pMachineWindow, machineWindows())
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp

    r62913 r62917  
    462462        case QEvent::Resize:
    463463        {
     464#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
     465            /* Prevent handling if fake screen detected: */
     466            if (vboxGlobal().isFakeScreenDetected())
     467                break;
     468#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
     469
    464470            QResizeEvent *pResizeEvent = static_cast<QResizeEvent*>(pEvent);
    465471            if (!isMaximizedChecked())
     
    476482        case QEvent::Move:
    477483        {
     484#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
     485            /* Prevent handling if fake screen detected: */
     486            if (vboxGlobal().isFakeScreenDetected())
     487                break;
     488#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
     489
    478490            if (!isMaximizedChecked())
    479491            {
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineLogicScale.cpp

    r62914 r62917  
    7878{
    7979#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
     80    /* Prevent handling if fake screen detected: */
     81    if (vboxGlobal().isFakeScreenDetected())
     82        return;
     83
    8084    /* Make sure all machine-window(s) have previous but normalized geometry: */
    8185    foreach (UIMachineWindow *pMachineWindow, machineWindows())
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineWindowScale.cpp

    r62913 r62917  
    180180        case QEvent::Resize:
    181181        {
     182#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
     183            /* Prevent handling if fake screen detected: */
     184            if (vboxGlobal().isFakeScreenDetected())
     185                break;
     186#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
     187
    182188            QResizeEvent *pResizeEvent = static_cast<QResizeEvent*>(pEvent);
    183189            if (!isMaximizedChecked())
     
    193199        case QEvent::Move:
    194200        {
     201#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
     202            /* Prevent handling if fake screen detected: */
     203            if (vboxGlobal().isFakeScreenDetected())
     204                break;
     205#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
     206
    195207            if (!isMaximizedChecked())
    196208            {
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