vcl/qt5/Qt5Frame.cxx | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-)
New commits: commit 758c44f69f0a0ed4a501695de4f065824325e750 Author: Katarina Behrens <katarina.behr...@cib.de> AuthorDate: Wed May 8 14:02:37 2019 +0200 Commit: Katarina Behrens <katarina.behr...@cib.de> CommitDate: Fri May 10 17:24:44 2019 +0200 tdf#124484: avoid crash in fullscreen slideshow spanning all displays This just stops the bleeding (crash) in a special case when screen number argument of SalFrame::ShowFullScreen is -1 (meaning 'fullscreen spanning all available displays') It doesn't yet extend the fullscreen window over all screens, this will be done in a follow-up fix Change-Id: I2cf48096a1fe1ec33c943f10acb41c59585b325f Reviewed-on: https://gerrit.libreoffice.org/71965 Tested-by: Jenkins Reviewed-by: Katarina Behrens <katarina.behr...@cib.de> diff --git a/vcl/qt5/Qt5Frame.cxx b/vcl/qt5/Qt5Frame.cxx index 05e17932a93c..5ed722aad391 100644 --- a/vcl/qt5/Qt5Frame.cxx +++ b/vcl/qt5/Qt5Frame.cxx @@ -1069,12 +1069,26 @@ void Qt5Frame::SetScreenNumber(unsigned int nScreen) QList<QScreen*> screens = QApplication::screens(); if (static_cast<int>(nScreen) < screens.size()) { - QWidget* const pWidget = m_pTopLevel ? m_pTopLevel : m_pQWidget; - pWindow->setScreen(QApplication::screens()[nScreen]); + bool bSpanAllScreens = (nScreen == static_cast<unsigned int>(-1)); + QRect screenGeo; + + if (!bSpanAllScreens) + { + screenGeo = QApplication::desktop()->screenGeometry(nScreen); + pWindow->setScreen(QApplication::screens()[nScreen]); + } + else // special case: fullscreen over all available screens + { + // left-most screen + int nLeftScreen = QApplication::desktop()->screenNumber(QPoint(0, 0)); + // entire virtual desktop + screenGeo = QApplication::screens()[nLeftScreen]->availableVirtualGeometry(); + pWindow->setScreen(QApplication::screens()[nLeftScreen]); + } // setScreen by itself has no effect, explicitly move the widget to // the new screen - QRect screenGeo = QApplication::desktop()->screenGeometry(nScreen); + QWidget* const pWidget = m_pTopLevel ? m_pTopLevel : m_pQWidget; pWidget->move(screenGeo.topLeft()); } else _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits