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

Stephan Bergmann sbergman at redhat.com
Wed Dec 3 08:44:19 PST 2014


 sfx2/source/dialog/backingwindow.cxx |   18 +++++++++++++++---
 sfx2/source/dialog/backingwindow.hxx |    3 +++
 2 files changed, 18 insertions(+), 3 deletions(-)

New commits:
commit 37cc33e27188a5686e15751c5bb39b422909f201
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Dec 3 17:40:24 2014 +0100

    Delay potentially expensive first-time template initialization
    
    ...from first start of soffice to first click on Templates button.  At least in
    an --enable-dbgutil build (no idea whether it's substantially faster for a
    "product" build) with lots of templates (--enable-extra-templates, --enable-sun-
    templates) the UI still becomes unacceptabliy unrepsonsive when you clik on the
    Templates button for the first time, though.
    
    Change-Id: I226acaf26e20022b825478f47bb6a1f791c7c145

diff --git a/sfx2/source/dialog/backingwindow.cxx b/sfx2/source/dialog/backingwindow.cxx
index f121c21..0e6a8bd 100644
--- a/sfx2/source/dialog/backingwindow.cxx
+++ b/sfx2/source/dialog/backingwindow.cxx
@@ -90,6 +90,7 @@ static bool cmpSelectionItems (const ThumbnailViewItem *pItem1, const ThumbnailV
 BackingWindow::BackingWindow( vcl::Window* i_pParent ) :
     Window( i_pParent ),
     mxDesktop( Desktop::create(comphelper::getProcessComponentContext()) ),
+    mbLocalViewInitialized(false),
     mbIsSaveMode( false ),
     mbInitControls( false ),
     mnHideExternalLinks( 0 ),
@@ -259,10 +260,7 @@ void BackingWindow::initControls()
 
     //initialize Template view
     mpLocalView->SetStyle( mpLocalView->GetStyle() | WB_VSCROLL);
-    mpLocalView->Populate();
-    mpLocalView->showRootRegion();
     mpLocalView->Hide();
-    mpLocalView->filterItems(ViewFilter_Application(FILTER_APP_NONE));
 
     mpTemplateButton->SetMenuMode( MENUBUTTON_MENUMODE_TIMED );
 
@@ -315,6 +313,17 @@ void BackingWindow::initControls()
     set_height_request(mpAllButtonsBox->GetOptimalSize().Height());
 }
 
+void BackingWindow::initializeLocalView()
+{
+    if (!mbLocalViewInitialized)
+    {
+        mbLocalViewInitialized = true;
+        mpLocalView->Populate();
+        mpLocalView->showRootRegion();
+        mpLocalView->filterItems(ViewFilter_Application(FILTER_APP_NONE));
+    }
+}
+
 void BackingWindow::setupButton( PushButton* pButton )
 {
     // the buttons should have a bit bigger font
@@ -552,6 +561,7 @@ IMPL_LINK( BackingWindow, ClickHdl, Button*, pButton )
     else if( pButton == mpTemplateButton )
     {
         mpAllRecentThumbnails->Hide();
+        initializeLocalView();
         mpLocalView->filterItems(ViewFilter_Application(FILTER_APP_NONE));
         mpLocalView->Show();
         mpLocalView->reload();
@@ -562,6 +572,8 @@ IMPL_LINK( BackingWindow, ClickHdl, Button*, pButton )
 
 IMPL_LINK( BackingWindow, MenuSelectHdl, MenuButton*, pButton )
 {
+    initializeLocalView();
+
     OString sId = pButton->GetCurItemIdent();
 
     if( sId == "filter_writer" )
diff --git a/sfx2/source/dialog/backingwindow.hxx b/sfx2/source/dialog/backingwindow.hxx
index 3c96626..aa6e498 100644
--- a/sfx2/source/dialog/backingwindow.hxx
+++ b/sfx2/source/dialog/backingwindow.hxx
@@ -87,6 +87,7 @@ class BackingWindow
 
     RecentDocsView*                 mpAllRecentThumbnails;
     TemplateDefaultView*              mpLocalView;
+    bool                            mbLocalViewInitialized;
 
     std::vector<vcl::Window*>            maDndWindows;
 
@@ -119,6 +120,8 @@ class BackingWindow
 
     void initControls();
 
+    void initializeLocalView();
+
 public:
     BackingWindow( vcl::Window* pParent );
     virtual ~BackingWindow();


More information about the Libreoffice-commits mailing list