vcl/qt5/Qt5Widget.cxx |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

New commits:
commit 876303943113bb7fa09c3b344a832f714ac2d8e3
Author:     Jan-Marek Glogowski <jan-marek.glogow...@extern.cib.de>
AuthorDate: Thu Nov 14 23:25:10 2019 +0100
Commit:     Jan-Marek Glogowski <glo...@fbihome.de>
CommitDate: Fri Nov 15 22:37:27 2019 +0100

    tdf#128710 Qt5 don't force immediate paint on show
    
    I tried to build a minimal reproducer with QMainWindow and a
    QDialog and miserably failed. All variants of show, hide, modal
    change, move, resize, processEvents(QEventLoop::AllEvents) just
    worked. I was able to produce "qt.qpa.xcb: QXcbConnection: XCB
    error: 3 (BadWindow) ... major code: 18 (ChangeProperty)" entries
    in my ~/.xsession-errors, but that didn't matter for my program.
    
    Then I started to comment code blocks in Qt5Frame and after that
    continued in Qt5Widget, found that ShowEvent produced a modal
    window, albeit with an obviously missing paint event. But that is
    fixable by just queuing one in LO.
    
    I tried to debug that broken behaviour to find the real cause of
    the bug, but as I already knew from commit e770bacc85a0 ("Qt5
    workaround modal change after show bug"), this bug has some timing
    related component, so that sadly didn't result in any conclusion.
    
    Change-Id: Iaec45997179365fae5430120f86e435aa5e88447
    Reviewed-on: https://gerrit.libreoffice.org/82745
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>
    Tested-by: Michael Weghorn <m.wegh...@posteo.de>
    Reviewed-by: Jan-Marek Glogowski <glo...@fbihome.de>
    (cherry picked from commit 5d23f7748f33414a95297fa9f374a37e76de687b)
    Reviewed-on: https://gerrit.libreoffice.org/82805

diff --git a/vcl/qt5/Qt5Widget.cxx b/vcl/qt5/Qt5Widget.cxx
index 8ae77b1a7ed5..70f480364f57 100644
--- a/vcl/qt5/Qt5Widget.cxx
+++ b/vcl/qt5/Qt5Widget.cxx
@@ -243,7 +243,10 @@ void Qt5Widget::moveEvent(QMoveEvent* pEvent)
 void Qt5Widget::showEvent(QShowEvent*)
 {
     QSize aSize(m_rFrame.GetQWidget()->size());
-    SalPaintEvent aPaintEvt(0, 0, aSize.width(), aSize.height(), true);
+    // forcing an immediate update somehow interferes with the hide + show
+    // sequence from Qt5Frame::SetModal, if the frame was already set visible,
+    // resulting in a hidden / unmapped window
+    SalPaintEvent aPaintEvt(0, 0, aSize.width(), aSize.height());
     m_rFrame.CallCallback(SalEvent::Paint, &aPaintEvt);
 }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to