[Libreoffice-commits] core.git: desktop/source

Tomaž Vajngerl tomaz.vajngerl at collabora.co.uk
Thu Jun 4 00:53:14 PDT 2015


 desktop/source/splash/splash.cxx |   19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

New commits:
commit aca61aa5ffa4fab458d03e469b569c50952ed077
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Thu Jun 4 16:48:31 2015 +0900

    tdf#91529 hopefully fixes the issue by painting immediately
    
    Change-Id: I0c97e489150cd65d1ab1dbff4ee9f1699f89ac2e

diff --git a/desktop/source/splash/splash.cxx b/desktop/source/splash/splash.cxx
index 6794d15..63c8232 100644
--- a/desktop/source/splash/splash.cxx
+++ b/desktop/source/splash/splash.cxx
@@ -59,6 +59,8 @@ public:
     virtual void dispose() SAL_OVERRIDE;
     // workwindow
     virtual void Paint(vcl::RenderContext& rRenderContext, const Rectangle&) SAL_OVERRIDE;
+    void Redraw();
+
 };
 
 class  SplashScreen
@@ -143,6 +145,15 @@ void SplashScreenWindow::dispose()
     IntroWindow::dispose();
 }
 
+void SplashScreenWindow::Redraw()
+{
+    Invalidate();
+    // Trigger direct painting too - otherwise the splash screen won't be
+    // shown in some cases (when the idle timer won't be hit).
+    Paint(*this, Rectangle());
+    Flush();
+}
+
 SplashScreen::SplashScreen()
     : pWindow( new SplashScreenWindow (this) )
     , _cProgressFrameColor(sal::static_int_cast< ColorData >(NOT_LOADED))
@@ -194,8 +205,7 @@ void SAL_CALL SplashScreen::start(const OUString&, sal_Int32 nRange)
         if ( _eBitmapMode == BM_FULLSCREEN )
             pWindow->ShowFullScreenMode( true );
         pWindow->Show();
-        pWindow->Invalidate();
-        pWindow->Flush();
+        pWindow->Redraw();
     }
 }
 
@@ -352,8 +362,7 @@ void SplashScreen::updateStatus()
         return;
     if (!_bPaintProgress)
         _bPaintProgress = true;
-    pWindow->Invalidate();
-    pWindow->Flush();
+    pWindow->Redraw();
 }
 
 // internal private methods
@@ -364,7 +373,7 @@ IMPL_LINK( SplashScreen, AppEventListenerHdl, VclWindowEvent *, inEvent )
         switch ( inEvent->GetId() )
         {
             case VCLEVENT_WINDOW_SHOW:
-                pWindow->Invalidate();
+                pWindow->Redraw();
                 break;
             default:
                 break;


More information about the Libreoffice-commits mailing list