[Libreoffice-commits] .: Branch 'feature/template-dialog' - 6 commits - sfx2/inc sfx2/Library_sfx.mk sfx2/Package_inc.mk sfx2/source

Rafael Dominguez rdominguez at kemper.freedesktop.org
Mon Jun 18 20:26:47 PDT 2012


 sfx2/Library_sfx.mk                        |    1 
 sfx2/Package_inc.mk                        |    1 
 sfx2/inc/sfx2/templatefolderview.hxx       |   40 +++
 sfx2/inc/sfx2/thumbnailview.hxx            |   21 +
 sfx2/inc/sfx2/thumbnailviewitem.hxx        |   23 ++
 sfx2/inc/templatedlg.hxx                   |    4 
 sfx2/source/control/templatefolderview.cxx |  213 +++++++++++++++++++
 sfx2/source/control/thumbnailview.cxx      |  310 +----------------------------
 sfx2/source/control/thumbnailviewitem.cxx  |   97 ++++++++-
 sfx2/source/doc/templatedlg.cxx            |    4 
 10 files changed, 406 insertions(+), 308 deletions(-)

New commits:
commit 0f53d3bfb93537f20d9734fe7c84a88e8a82092b
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Mon Jun 18 22:57:35 2012 -0430

    Display templates when double clicking a folder.
    
    Change-Id: Idf9be4b2f5fbff60b881e72fe52ac13767f32459

diff --git a/sfx2/inc/sfx2/templatefolderview.hxx b/sfx2/inc/sfx2/templatefolderview.hxx
index ad56fcc..a6aec17 100644
--- a/sfx2/inc/sfx2/templatefolderview.hxx
+++ b/sfx2/inc/sfx2/templatefolderview.hxx
@@ -27,7 +27,12 @@ public:
 
 private:
 
+    virtual void OnItemDblClicked (ThumbnailViewItem *pRegionItem);
+
+private:
+
     SfxOrganizeMgr *mpMgr;
+    ThumbnailView *mpItemView;
 };
 
 #endif // TEMPLATEFOLDERVIEW_HXX
diff --git a/sfx2/source/control/templatefolderview.cxx b/sfx2/source/control/templatefolderview.cxx
index 2f224e2..8106cb3 100644
--- a/sfx2/source/control/templatefolderview.cxx
+++ b/sfx2/source/control/templatefolderview.cxx
@@ -139,13 +139,20 @@ BitmapEx lcl_fetchThumbnail (const rtl::OUString &msURL, int width, int height)
 
 TemplateFolderView::TemplateFolderView ( Window* pParent, const ResId& rResId, bool bDisableTransientChildren)
     : ThumbnailView(pParent,rResId,bDisableTransientChildren),
-      mpMgr(new SfxOrganizeMgr(NULL,NULL))
+      mpMgr(new SfxOrganizeMgr(NULL,NULL)),
+      mpItemView(new ThumbnailView(this,WB_VSCROLL))
 {
+    mpItemView->SetColor(Color(COL_WHITE));
+    mpItemView->SetPosPixel(Point(0,0));
+    mpItemView->SetSizePixel(GetOutputSizePixel());
+    mpItemView->SetColCount(3);
+    mpItemView->SetLineCount(2);
 }
 
 TemplateFolderView::~TemplateFolderView()
 {
     delete mpMgr;
+    delete mpItemView;
 }
 
 void TemplateFolderView::Populate ()
@@ -182,6 +189,25 @@ void TemplateFolderView::Populate ()
         Invalidate();
 }
 
+void TemplateFolderView::OnItemDblClicked (ThumbnailViewItem *pRegionItem)
+{
+    // Clear previous items
+    mpItemView->Clear();
+
+    // Fill templates
+    sal_uInt16 nRegionId = pRegionItem->mnId-1;
+    const SfxDocumentTemplates* pTemplates = mpMgr->GetTemplates();
+
+    sal_uInt16 nEntries = pTemplates->GetCount(nRegionId);
+    for (sal_uInt16 i = 0; i < nEntries; ++i)
+    {
+        mpItemView->InsertItem(i+1,lcl_fetchThumbnail(pTemplates->GetPath(nRegionId,i),128,128),
+                               pTemplates->GetName(nRegionId,i));
+    }
+
+    mpItemView->Show();
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
 
 
commit 927f4ecd40ea6652709551690be9d2f583a6d1d9
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Mon Jun 18 22:04:59 2012 -0430

    Add a double click handler to ThumbnailView.
    
    Change-Id: I8c5711c89fe2d2cede55399028f8a3910a7bcbec

diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index f54a549..a1db106 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -266,6 +266,8 @@ protected:
 
     virtual void DrawItem (ThumbnailViewItem *pItem);
 
+    virtual void OnItemDblClicked (ThumbnailViewItem *pItem);
+
 protected:
 
     friend class ThumbnailViewAcc;
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 9ea0edd..e9d3e27 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -203,6 +203,10 @@ void ThumbnailView::DrawItem (ThumbnailViewItem *pItem)
         pItem->Paint(mpProcessor,mpItemAttrs);
 }
 
+void ThumbnailView::OnItemDblClicked (ThumbnailViewItem*)
+{
+}
+
 ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > ThumbnailView::CreateAccessible()
 {
     return new ThumbnailViewAcc( this, mbIsTransientChildrenDisabled );
@@ -674,7 +678,7 @@ void ThumbnailView::MouseButtonDown( const MouseEvent& rMEvt )
                     }
                 }
                 else if ( rMEvt.GetClicks() == 2 )
-                    ;
+                    OnItemDblClicked(pItem);
             }
 
             return;
commit 0a89ff70b440158e301dff5b5c6eb612f1c2a676
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Mon Jun 18 21:53:07 2012 -0430

    Create a thumbnailview for templates folders.
    
    Change-Id: I2c5e2899e854df0edb3ee7bade55f39c8984177d

diff --git a/sfx2/Library_sfx.mk b/sfx2/Library_sfx.mk
index 9009ede..9fbcee3 100644
--- a/sfx2/Library_sfx.mk
+++ b/sfx2/Library_sfx.mk
@@ -148,6 +148,7 @@ $(eval $(call gb_Library_add_exception_objects,sfx,\
     sfx2/source/control/shell \
     sfx2/source/control/sorgitm \
     sfx2/source/control/statcach \
+    sfx2/source/control/templatefolderview \
     sfx2/source/control/thumbnailviewitem \
     sfx2/source/control/thumbnailviewacc \
     sfx2/source/control/thumbnailview \
diff --git a/sfx2/Package_inc.mk b/sfx2/Package_inc.mk
index dee4610..aef6ea4 100644
--- a/sfx2/Package_inc.mk
+++ b/sfx2/Package_inc.mk
@@ -127,6 +127,7 @@ $(eval $(call gb_Package_add_file,sfx2_inc,inc/sfx2/taskpane.hxx,sfx2/taskpane.h
 $(eval $(call gb_Package_add_file,sfx2_inc,inc/sfx2/tbxctrl.hxx,sfx2/tbxctrl.hxx))
 $(eval $(call gb_Package_add_file,sfx2_inc,inc/sfx2/templdlg.hxx,sfx2/templdlg.hxx))
 $(eval $(call gb_Package_add_file,sfx2_inc,inc/sfx2/templatelocnames.hrc,sfx2/templatelocnames.hrc))
+$(eval $(call gb_Package_add_file,sfx2_inc,inc/sfx2/templatefolderview.hxx,sfx2/templatefolderview.hxx))
 $(eval $(call gb_Package_add_file,sfx2_inc,inc/sfx2/thumbnailview.hxx,sfx2/thumbnailview.hxx))
 $(eval $(call gb_Package_add_file,sfx2_inc,inc/sfx2/thumbnailviewitem.hxx,sfx2/thumbnailviewitem.hxx))
 $(eval $(call gb_Package_add_file,sfx2_inc,inc/sfx2/titledockwin.hxx,sfx2/titledockwin.hxx))
diff --git a/sfx2/inc/sfx2/templatefolderview.hxx b/sfx2/inc/sfx2/templatefolderview.hxx
new file mode 100644
index 0000000..ad56fcc
--- /dev/null
+++ b/sfx2/inc/sfx2/templatefolderview.hxx
@@ -0,0 +1,35 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright 2012 LibreOffice contributors.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef TEMPLATEFOLDERVIEW_HXX
+#define TEMPLATEFOLDERVIEW_HXX
+
+#include <sfx2/thumbnailview.hxx>
+
+class SfxOrganizeMgr;
+
+class TemplateFolderView : public ThumbnailView
+{
+public:
+
+    TemplateFolderView ( Window* pParent, const ResId& rResId, bool bDisableTransientChildren = false );
+
+    virtual ~TemplateFolderView ();
+
+    // Fill view with template folders thumbnails
+    void Populate ();
+
+private:
+
+    SfxOrganizeMgr *mpMgr;
+};
+
+#endif // TEMPLATEFOLDERVIEW_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index 0bd2501..f54a549 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -24,7 +24,6 @@ class HelpEvent;
 class KeyEvent;
 class DataChangedEvent;
 class ScrollBar;
-class SfxOrganizeMgr;
 struct ThumbnailViewItem;
 typedef ::std::vector< ThumbnailViewItem* > ValueItemList;
 
@@ -168,9 +167,6 @@ public:
 
     virtual ~ThumbnailView ();
 
-    // Fill view with template thumbnails
-    void Populate ();
-
     void InsertItem( sal_uInt16 nItemId,
                      const BitmapEx &rImage, const rtl::OUString &rStr,
                      size_t nPos = THUMBNAILVIEW_APPEND );
@@ -270,7 +266,7 @@ protected:
 
     virtual void DrawItem (ThumbnailViewItem *pItem);
 
-private:
+protected:
 
     friend class ThumbnailViewAcc;
     friend class ThumbnailViewItemAcc;
@@ -305,7 +301,6 @@ protected:
 
     Timer maTimer;
     ValueItemList mItemList;
-    SfxOrganizeMgr *mpMgr;
     ScrollBar* mpScrBar;
     Rectangle maNoneItemRect;
     Rectangle maItemListRect;
diff --git a/sfx2/inc/templatedlg.hxx b/sfx2/inc/templatedlg.hxx
index d475ef8..bb13fe0 100644
--- a/sfx2/inc/templatedlg.hxx
+++ b/sfx2/inc/templatedlg.hxx
@@ -13,7 +13,7 @@
 #include <vcl/dialog.hxx>
 #include <vcl/button.hxx>
 
-class ThumbnailView;
+class TemplateFolderView;
 
 class SfxTemplateManagerDlg : public ModalDialog
 {
@@ -42,7 +42,7 @@ private:
     PushButton aButtonDraws;
     ImageButton maButtonSelMode;
 
-    ThumbnailView *maView;
+    TemplateFolderView *maView;
 };
 
 #endif // TEMPLATEDLG_HXX
diff --git a/sfx2/source/control/templatefolderview.cxx b/sfx2/source/control/templatefolderview.cxx
new file mode 100644
index 0000000..2f224e2
--- /dev/null
+++ b/sfx2/source/control/templatefolderview.cxx
@@ -0,0 +1,187 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright 2012 LibreOffice contributors.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <sfx2/templatefolderview.hxx>
+
+#include <comphelper/processfactory.hxx>
+#include <sfx2/doctempl.hxx>
+#include <sfx2/thumbnailviewitem.hxx>
+#include <unotools/ucbstreamhelper.hxx>
+#include <vcl/pngread.hxx>
+
+#include <com/sun/star/embed/ElementModes.hpp>
+#include <com/sun/star/embed/XStorage.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+
+#include "orgmgr.hxx"
+
+BitmapEx lcl_fetchThumbnail (const rtl::OUString &msURL, int width, int height)
+{
+    using namespace ::com::sun::star;
+    using namespace ::com::sun::star::uno;
+
+    // Load the thumbnail from a template document.
+    uno::Reference<io::XInputStream> xIStream;
+
+    uno::Reference< lang::XMultiServiceFactory > xServiceManager (
+        ::comphelper::getProcessServiceFactory());
+    if (xServiceManager.is())
+    {
+        try
+        {
+            uno::Reference<lang::XSingleServiceFactory> xStorageFactory(
+                xServiceManager->createInstance( "com.sun.star.embed.StorageFactory"),
+                uno::UNO_QUERY);
+
+            if (xStorageFactory.is())
+            {
+                uno::Sequence<uno::Any> aArgs (2);
+                aArgs[0] <<= msURL;
+                aArgs[1] <<= embed::ElementModes::READ;
+                uno::Reference<embed::XStorage> xDocStorage (
+                    xStorageFactory->createInstanceWithArguments(aArgs),
+                    uno::UNO_QUERY);
+
+                try
+                {
+                    if (xDocStorage.is())
+                    {
+                        uno::Reference<embed::XStorage> xStorage (
+                            xDocStorage->openStorageElement(
+                                "Thumbnails",
+                                embed::ElementModes::READ));
+                        if (xStorage.is())
+                        {
+                            uno::Reference<io::XStream> xThumbnailCopy (
+                                xStorage->cloneStreamElement("thumbnail.png"));
+                            if (xThumbnailCopy.is())
+                                xIStream = xThumbnailCopy->getInputStream();
+                        }
+                    }
+                }
+                catch (const uno::Exception& rException)
+                {
+                    OSL_TRACE (
+                        "caught exception while trying to access Thumbnail/thumbnail.png of %s: %s",
+                        ::rtl::OUStringToOString(msURL,
+                            RTL_TEXTENCODING_UTF8).getStr(),
+                        ::rtl::OUStringToOString(rException.Message,
+                            RTL_TEXTENCODING_UTF8).getStr());
+                }
+
+                try
+                {
+                    // An (older) implementation had a bug - The storage
+                    // name was "Thumbnail" instead of "Thumbnails".  The
+                    // old name is still used as fallback but this code can
+                    // be removed soon.
+                    if ( ! xIStream.is())
+                    {
+                        uno::Reference<embed::XStorage> xStorage (
+                            xDocStorage->openStorageElement( "Thumbnail",
+                                embed::ElementModes::READ));
+                        if (xStorage.is())
+                        {
+                            uno::Reference<io::XStream> xThumbnailCopy (
+                                xStorage->cloneStreamElement("thumbnail.png"));
+                            if (xThumbnailCopy.is())
+                                xIStream = xThumbnailCopy->getInputStream();
+                        }
+                    }
+                }
+                catch (const uno::Exception& rException)
+                {
+                    OSL_TRACE (
+                        "caught exception while trying to access Thumbnails/thumbnail.png of %s: %s",
+                        ::rtl::OUStringToOString(msURL,
+                            RTL_TEXTENCODING_UTF8).getStr(),
+                        ::rtl::OUStringToOString(rException.Message,
+                            RTL_TEXTENCODING_UTF8).getStr());
+                }
+            }
+        }
+        catch (const uno::Exception& rException)
+        {
+            OSL_TRACE (
+                "caught exception while trying to access tuhmbnail of %s: %s",
+                ::rtl::OUStringToOString(msURL,
+                    RTL_TEXTENCODING_UTF8).getStr(),
+                ::rtl::OUStringToOString(rException.Message,
+                    RTL_TEXTENCODING_UTF8).getStr());
+        }
+    }
+
+    // Extract the image from the stream.
+    BitmapEx aThumbnail;
+    if (xIStream.is())
+    {
+        ::std::auto_ptr<SvStream> pStream (
+            ::utl::UcbStreamHelper::CreateStream (xIStream));
+        ::vcl::PNGReader aReader (*pStream);
+        aThumbnail = aReader.Read ();
+    }
+
+    aThumbnail.Scale(Size(width,height));
+
+    // Note that the preview is returned without scaling it to the desired
+    // width.  This gives the caller the chance to take advantage of a
+    // possibly larger resolution then was asked for.
+    return aThumbnail;
+}
+
+TemplateFolderView::TemplateFolderView ( Window* pParent, const ResId& rResId, bool bDisableTransientChildren)
+    : ThumbnailView(pParent,rResId,bDisableTransientChildren),
+      mpMgr(new SfxOrganizeMgr(NULL,NULL))
+{
+}
+
+TemplateFolderView::~TemplateFolderView()
+{
+    delete mpMgr;
+}
+
+void TemplateFolderView::Populate ()
+{
+    const SfxDocumentTemplates* pTemplates = mpMgr->GetTemplates();
+
+    sal_uInt16 nCount = pTemplates->GetRegionCount();
+    for (sal_uInt16 i = 0; i < nCount; ++i)
+    {
+        rtl::OUString aRegionName(pTemplates->GetFullRegionName(i));
+
+        sal_uInt16 nEntries = pTemplates->GetCount(i);
+
+        if (nEntries)
+        {
+            ThumbnailViewItem* pItem = new ThumbnailViewItem( *this, this );
+            pItem->mnId = i+1;
+            pItem->maText = aRegionName;
+            pItem->setSelectClickHdl(LINK(this,ThumbnailView,OnFolderSelected));
+
+            /// Preview first 2 thumbnails for folder
+            pItem->maPreview1 = lcl_fetchThumbnail(pTemplates->GetPath(i,0),128,128);
+
+            if ( nEntries > 2 )
+                pItem->maPreview2 = lcl_fetchThumbnail(pTemplates->GetPath(i,1),128,128);
+
+            mItemList.push_back(pItem);
+        }
+    }
+
+    CalculateItemPositions();
+
+    if ( IsReallyVisible() && IsUpdateMode() )
+        Invalidate();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
+
+
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index b4bb470..9ea0edd 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -9,9 +9,7 @@
 
 #include <sfx2/thumbnailview.hxx>
 #include <sfx2/thumbnailviewitem.hxx>
-#include <sfx2/doctempl.hxx>
 
-#include "orgmgr.hxx"
 #include "thumbnailviewacc.hxx"
 
 #include <basegfx/color/bcolortools.hxx>
@@ -19,7 +17,6 @@
 #include <basegfx/range/b2drectangle.hxx>
 #include <basegfx/vector/b2dsize.hxx>
 #include <basegfx/vector/b2dvector.hxx>
-#include <comphelper/processfactory.hxx>
 #include <drawinglayer/attribute/fillbitmapattribute.hxx>
 #include <drawinglayer/attribute/fontattribute.hxx>
 #include <drawinglayer/primitive2d/fillbitmapprimitive2d.hxx>
@@ -29,20 +26,13 @@
 #include <drawinglayer/processor2d/baseprocessor2d.hxx>
 #include <drawinglayer/processor2d/processorfromoutputdevice.hxx>
 #include <rtl/ustring.hxx>
-#include <unotools/ucbstreamhelper.hxx>
 #include <vcl/decoview.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/scrbar.hxx>
 #include <vcl/help.hxx>
-#include <vcl/pngread.hxx>
 
 #include <com/sun/star/accessibility/AccessibleEventId.hpp>
 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
-#include <com/sun/star/embed/ElementModes.hpp>
-#include <com/sun/star/embed/XStorage.hpp>
-#include <com/sun/star/lang/XComponent.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
 
 using namespace basegfx;
 using namespace basegfx::tools;
@@ -61,120 +51,6 @@ enum
     SCROLL_OFFSET = 4
 };
 
-BitmapEx lcl_fetchThumbnail (const rtl::OUString &msURL, int width, int height)
-{
-    using namespace ::com::sun::star;
-    using namespace ::com::sun::star::uno;
-
-    // Load the thumbnail from a template document.
-    uno::Reference<io::XInputStream> xIStream;
-
-    uno::Reference< lang::XMultiServiceFactory > xServiceManager (
-        ::comphelper::getProcessServiceFactory());
-    if (xServiceManager.is())
-    {
-        try
-        {
-            uno::Reference<lang::XSingleServiceFactory> xStorageFactory(
-                xServiceManager->createInstance( "com.sun.star.embed.StorageFactory"),
-                uno::UNO_QUERY);
-
-            if (xStorageFactory.is())
-            {
-                uno::Sequence<uno::Any> aArgs (2);
-                aArgs[0] <<= msURL;
-                aArgs[1] <<= embed::ElementModes::READ;
-                uno::Reference<embed::XStorage> xDocStorage (
-                    xStorageFactory->createInstanceWithArguments(aArgs),
-                    uno::UNO_QUERY);
-
-                try
-                {
-                    if (xDocStorage.is())
-                    {
-                        uno::Reference<embed::XStorage> xStorage (
-                            xDocStorage->openStorageElement(
-                                "Thumbnails",
-                                embed::ElementModes::READ));
-                        if (xStorage.is())
-                        {
-                            uno::Reference<io::XStream> xThumbnailCopy (
-                                xStorage->cloneStreamElement("thumbnail.png"));
-                            if (xThumbnailCopy.is())
-                                xIStream = xThumbnailCopy->getInputStream();
-                        }
-                    }
-                }
-                catch (const uno::Exception& rException)
-                {
-                    OSL_TRACE (
-                        "caught exception while trying to access Thumbnail/thumbnail.png of %s: %s",
-                        ::rtl::OUStringToOString(msURL,
-                            RTL_TEXTENCODING_UTF8).getStr(),
-                        ::rtl::OUStringToOString(rException.Message,
-                            RTL_TEXTENCODING_UTF8).getStr());
-                }
-
-                try
-                {
-                    // An (older) implementation had a bug - The storage
-                    // name was "Thumbnail" instead of "Thumbnails".  The
-                    // old name is still used as fallback but this code can
-                    // be removed soon.
-                    if ( ! xIStream.is())
-                    {
-                        uno::Reference<embed::XStorage> xStorage (
-                            xDocStorage->openStorageElement( "Thumbnail",
-                                embed::ElementModes::READ));
-                        if (xStorage.is())
-                        {
-                            uno::Reference<io::XStream> xThumbnailCopy (
-                                xStorage->cloneStreamElement("thumbnail.png"));
-                            if (xThumbnailCopy.is())
-                                xIStream = xThumbnailCopy->getInputStream();
-                        }
-                    }
-                }
-                catch (const uno::Exception& rException)
-                {
-                    OSL_TRACE (
-                        "caught exception while trying to access Thumbnails/thumbnail.png of %s: %s",
-                        ::rtl::OUStringToOString(msURL,
-                            RTL_TEXTENCODING_UTF8).getStr(),
-                        ::rtl::OUStringToOString(rException.Message,
-                            RTL_TEXTENCODING_UTF8).getStr());
-                }
-            }
-        }
-        catch (const uno::Exception& rException)
-        {
-            OSL_TRACE (
-                "caught exception while trying to access tuhmbnail of %s: %s",
-                ::rtl::OUStringToOString(msURL,
-                    RTL_TEXTENCODING_UTF8).getStr(),
-                ::rtl::OUStringToOString(rException.Message,
-                    RTL_TEXTENCODING_UTF8).getStr());
-        }
-    }
-
-    // Extract the image from the stream.
-    BitmapEx aThumbnail;
-    if (xIStream.is())
-    {
-        ::std::auto_ptr<SvStream> pStream (
-            ::utl::UcbStreamHelper::CreateStream (xIStream));
-        ::vcl::PNGReader aReader (*pStream);
-        aThumbnail = aReader.Read ();
-    }
-
-    aThumbnail.Scale(Size(width,height));
-
-    // Note that the preview is returned without scaling it to the desired
-    // width.  This gives the caller the chance to take advantage of a
-    // possibly larger resolution then was asked for.
-    return aThumbnail;
-}
-
 ThumbnailView::ThumbnailView (Window *pParent, WinBits nWinStyle, bool bDisableTransientChildren)
     : Control( pParent, nWinStyle ),
     maColor( pParent->GetBackground().GetColor() )
@@ -200,7 +76,6 @@ ThumbnailView::~ThumbnailView()
     if (xComponent.is())
         xComponent->dispose ();
 
-    delete mpMgr;
     delete mpScrBar;
     delete mpItemAttrs;
 
@@ -209,7 +84,6 @@ ThumbnailView::~ThumbnailView()
 
 void ThumbnailView::ImplInit()
 {
-    mpMgr = new SfxOrganizeMgr(NULL,NULL);
     mpScrBar            = NULL;
     mnItemWidth         = 0;
     mnItemHeight        = 0;
@@ -1159,40 +1033,6 @@ void ThumbnailView::DataChanged( const DataChangedEvent& rDCEvt )
     }
 }
 
-void ThumbnailView::Populate ()
-{
-    const SfxDocumentTemplates* pTemplates = mpMgr->GetTemplates();
-
-    sal_uInt16 nCount = pTemplates->GetRegionCount();
-    for (sal_uInt16 i = 0; i < nCount; ++i)
-    {
-        rtl::OUString aRegionName(pTemplates->GetFullRegionName(i));
-
-        sal_uInt16 nEntries = pTemplates->GetCount(i);
-
-        if (nEntries)
-        {
-            ThumbnailViewItem* pItem = new ThumbnailViewItem( *this, this );
-            pItem->mnId     = i+1;
-            pItem->maText   = aRegionName;
-            pItem->setSelectClickHdl(LINK(this,ThumbnailView,OnFolderSelected));
-
-            /// Preview first 2 thumbnails for folder
-            pItem->maPreview1 = lcl_fetchThumbnail(pTemplates->GetPath(i,0),128,128);
-
-            if ( nEntries > 2 )
-                pItem->maPreview2 = lcl_fetchThumbnail(pTemplates->GetPath(i,1),128,128);
-
-            mItemList.push_back(pItem);
-        }
-    }
-
-    CalculateItemPositions();
-
-    if ( IsReallyVisible() && IsUpdateMode() )
-        Invalidate();
-}
-
 void ThumbnailView::InsertItem( sal_uInt16 nItemId, const BitmapEx& rImage,
                            const rtl::OUString& rText, size_t nPos )
 {
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index 48600d5..a7d5c32 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -10,7 +10,7 @@
 #include "templatedlg.hxx"
 
 #include <sfx2/sfxresid.hxx>
-#include <sfx2/thumbnailview.hxx>
+#include <sfx2/templatefolderview.hxx>
 
 #include "doc.hrc"
 #include "templatedlg.hrc"
@@ -26,7 +26,7 @@ SfxTemplateManagerDlg::SfxTemplateManagerDlg (Window *parent)
       aButtonSheets(this,SfxResId(BTN_SELECT_SHEETS)),
       aButtonDraws(this,SfxResId(BTN_SELECT_DRAWS)),
       maButtonSelMode(this,SfxResId(BTN_SELECTION_MODE)),
-      maView(new ThumbnailView(this,SfxResId(TEMPLATE_VIEW)))
+      maView(new TemplateFolderView(this,SfxResId(TEMPLATE_VIEW)))
 {
     maButtonSelMode.SetStyle(maButtonSelMode.GetStyle() | WB_TOGGLE);
 
commit 4ee41fdfe79cafe35a3cd7ed3ad2142bbc5a3fbf
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Mon Jun 18 21:15:39 2012 -0430

    Remove SetItemText function.
    
    Change-Id: Ie37f706baca178592c22d0f928f1ead43206f2a8

diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index 60750a1..0bd2501 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -212,8 +212,6 @@ public:
     bool IsItemSelected( sal_uInt16 nItemId ) const
         { return nItemId == mnSelItemId; }
 
-    void SetItemText( sal_uInt16 nItemId, const rtl::OUString &rStr );
-
     rtl::OUString GetItemText( sal_uInt16 nItemId ) const;
 
     void SetColor( const Color& rColor );
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 3eaa08b..b4bb470 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -1453,44 +1453,6 @@ void ThumbnailView::SelectItem( sal_uInt16 nItemId )
     }
 }
 
-void ThumbnailView::SetItemText( sal_uInt16 nItemId, const rtl::OUString& rText )
-{
-    size_t nPos = GetItemPos( nItemId );
-
-    if ( nPos == THUMBNAILVIEW_ITEM_NOTFOUND )
-        return;
-
-
-    ThumbnailViewItem* pItem = mItemList[nPos];
-
-    // Remember old and new name for accessibility event.
-    ::com::sun::star::uno::Any aOldName, aNewName;
-    ::rtl::OUString sString (pItem->maText);
-    aOldName <<= sString;
-    sString = rText;
-    aNewName <<= sString;
-
-    pItem->maText = rText;
-
-    if ( IsReallyVisible() && IsUpdateMode() )
-    {
-        sal_uInt16 nTempId = mnSelItemId;
-
-        if ( mbHighlight )
-            nTempId = mnHighItemId;
-    }
-
-    if (ImplHasAccessibleListeners())
-    {
-        ::com::sun::star::uno::Reference<
-              ::com::sun::star::accessibility::XAccessible> xAccessible (
-                  pItem->GetAccessible( mbIsTransientChildrenDisabled ) );
-        static_cast<ThumbnailViewAcc*>(xAccessible.get())->FireAccessibleEvent (
-            ::com::sun::star::accessibility::AccessibleEventId::NAME_CHANGED,
-            aOldName, aNewName);
-    }
-}
-
 rtl::OUString ThumbnailView::GetItemText( sal_uInt16 nItemId ) const
 {
     size_t nPos = GetItemPos( nItemId );
commit d338cd728efb83fe5983bac5f97afd782460824e
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Mon Jun 18 21:05:29 2012 -0430

    Handle item paint inside its own method.
    
    - Dont recreate drawinglayer processor in each paint call.
    - Create a structure to set thumbnail item attributes.
    
    Change-Id: I95aec60fc05cc60f96f0bca6748b94327febd69f

diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index 1fe45f0..60750a1 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -28,9 +28,16 @@ class SfxOrganizeMgr;
 struct ThumbnailViewItem;
 typedef ::std::vector< ThumbnailViewItem* > ValueItemList;
 
+class ThumbnailItemAttributes;
 class ThumbnailViewAcc;
 class ThumbnailViewItemAcc;
 
+namespace drawinglayer {
+    namespace processor2d {
+        class BaseProcessor2D;
+    }
+}
+
 /*************************************************************************
 
     Description
@@ -329,6 +336,9 @@ protected:
     bool mbHasVisibleItems : 1;
     bool mbSelectionMode;
     Color maColor;
+
+    ThumbnailItemAttributes *mpItemAttrs;
+    drawinglayer::processor2d::BaseProcessor2D *mpProcessor;
 };
 
 #endif // THUMBNAILVIEW_HXX
diff --git a/sfx2/inc/sfx2/thumbnailviewitem.hxx b/sfx2/inc/sfx2/thumbnailviewitem.hxx
index 7cc6252..81d4bdd 100644
--- a/sfx2/inc/sfx2/thumbnailviewitem.hxx
+++ b/sfx2/inc/sfx2/thumbnailviewitem.hxx
@@ -29,6 +29,8 @@
 #ifndef THUMBNAILVIEWITEM_HXX
 #define THUMBNAILVIEWITEM_HXX
 
+#include <basegfx/vector/b2dvector.hxx>
+#include <drawinglayer/attribute/fontattribute.hxx>
 #include <osl/mutex.hxx>
 #include <vcl/bitmapex.hxx>
 
@@ -37,9 +39,24 @@
 #define THUMBNAILVIEW_ITEM_NONEITEM      0xFFFE
 
 class CheckBox;
+class Font;
 class Window;
 class ThumbnailView;
 
+namespace drawinglayer {
+    namespace processor2d {
+        class BaseProcessor2D;
+    }
+}
+
+struct ThumbnailItemAttributes
+{
+    basegfx::BColor aFillColor;
+    basegfx::BColor aHighlightColor;
+    basegfx::B2DVector aFontSize;
+    drawinglayer::attribute::FontAttribute aFontAttr;
+};
+
 struct ThumbnailViewItem
 {
     ThumbnailView &mrParent;
@@ -89,7 +106,8 @@ struct ThumbnailViewItem
 
     bool isInsideTitle (const Point &pt) const;
 
-    void Paint (const Rectangle &aRect);
+    void Paint (drawinglayer::processor2d::BaseProcessor2D *pProcessor,
+                const ThumbnailItemAttributes *pAttrs);
 
 private:
 
@@ -106,6 +124,9 @@ private:
     CheckBox *mpSelectBox;
 };
 
+// Helper function to convert a rectangle to a polygon.
+basegfx::B2DPolygon Rect2Polygon (const Rectangle &aRect);
+
 #endif // THUMBNAILVIEWITEM_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index c8a2959..3eaa08b 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -16,7 +16,6 @@
 
 #include <basegfx/color/bcolortools.hxx>
 #include <basegfx/matrix/b2dhommatrixtools.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
 #include <basegfx/range/b2drectangle.hxx>
 #include <basegfx/vector/b2dsize.hxx>
 #include <basegfx/vector/b2dvector.hxx>
@@ -62,17 +61,6 @@ enum
     SCROLL_OFFSET = 4
 };
 
-B2DPolygon lcl_Rect2Polygon (const Rectangle &aRect)
-{
-    B2DPolygon aPolygon;
-    aPolygon.append(B2DPoint(aRect.Left(),aRect.Top()));
-    aPolygon.append(B2DPoint(aRect.Left(),aRect.Bottom()));
-    aPolygon.append(B2DPoint(aRect.Right(),aRect.Bottom()));
-    aPolygon.append(B2DPoint(aRect.Right(),aRect.Top()));
-
-    return aPolygon;
-}
-
 BitmapEx lcl_fetchThumbnail (const rtl::OUString &msURL, int width, int height)
 {
     using namespace ::com::sun::star;
@@ -214,6 +202,7 @@ ThumbnailView::~ThumbnailView()
 
     delete mpMgr;
     delete mpScrBar;
+    delete mpItemAttrs;
 
     ImplDeleteItems();
 }
@@ -246,6 +235,10 @@ void ThumbnailView::ImplInit()
     mbHasVisibleItems   = false;
     mbSelectionMode = false;
 
+    // Create the processor and process the primitives
+    const drawinglayer::geometry::ViewInformation2D aNewViewInfos;
+    mpProcessor = drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice(*this, aNewViewInfos );
+
     ImplInitSettings( true, true, true );
 }
 
@@ -303,6 +296,11 @@ void ThumbnailView::ImplInitSettings( bool bFont, bool bForeground, bool bBackgr
             aColor = rStyleSettings.GetFaceColor();
         SetBackground( aColor );
     }
+
+    mpItemAttrs = new ThumbnailItemAttributes;
+    mpItemAttrs->aFillColor = maColor.getBColor();
+    mpItemAttrs->aHighlightColor = rStyleSettings.GetHighlightColor().getBColor();
+    mpItemAttrs->aFontAttr = getFontAttributeFromVclFont(mpItemAttrs->aFontSize,GetFont(),false,true);
 }
 
 void ThumbnailView::ImplInitScrollBar()
@@ -328,87 +326,7 @@ void ThumbnailView::DrawItem (ThumbnailViewItem *pItem)
     Rectangle aRect = pItem->getDrawArea();
 
     if ( (aRect.GetHeight() > 0) && (aRect.GetWidth() > 0) )
-    {
-        int nCount = 0;
-        int nSeqSize = 3;
-
-        if (!pItem->maPreview2.IsEmpty())
-            ++nSeqSize;
-
-        Primitive2DSequence aSeq(nSeqSize);
-
-        const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
-
-        // Draw item background
-        BColor aFillColor = maColor.getBColor();
-
-        if ( pItem->isSelected() || pItem->isHighlighted() )
-            aFillColor = rStyleSettings.GetHighlightColor().getBColor();
-
-        aSeq[nCount++] = Primitive2DReference( new PolyPolygonColorPrimitive2D(
-                                            B2DPolyPolygon(lcl_Rect2Polygon(aRect)),
-                                            aFillColor));
-
-        // Draw thumbnail
-        Point aPos = pItem->getPrev1Pos();
-        Size aImageSize = pItem->maPreview1.GetSizePixel();
-
-        float fScaleX = 1.0f;
-        float fScaleY = 1.0f;
-
-        if (!pItem->maPreview2.IsEmpty())
-        {
-            fScaleX = 0.8;
-            fScaleY = 0.8;
-
-            aSeq[nCount++] = Primitive2DReference( new FillBitmapPrimitive2D(
-                                                createScaleTranslateB2DHomMatrix(fScaleX,fScaleY,aPos.X(),aPos.Y()),
-                                                FillBitmapAttribute(pItem->maPreview2,
-                                                                    B2DPoint(35,20),
-                                                                    B2DVector(aImageSize.Width(),aImageSize.Height()),
-                                                                    false)
-                                                ));
-        }
-
-        aSeq[nCount++] = Primitive2DReference( new FillBitmapPrimitive2D(
-                                            createScaleTranslateB2DHomMatrix(fScaleX,fScaleY,aPos.X(),aPos.Y()),
-                                            FillBitmapAttribute(pItem->maPreview1,
-                                                                B2DPoint(0,0),
-                                                                B2DVector(aImageSize.Width(),aImageSize.Height()),
-                                                                false)
-                                            ));
-
-        // Draw centered text below thumbnail
-        aPos = pItem->getTextPos();
-
-        // Create the text primitive
-        B2DVector aFontSize;
-        FontAttribute aFontAttr = getFontAttributeFromVclFont(
-               aFontSize, GetFont(), false, true );
-
-
-        basegfx::B2DHomMatrix aTextMatrix( createScaleTranslateB2DHomMatrix(
-                    aFontSize.getX(), aFontSize.getY(),
-                    double( aPos.X() ), double( aPos.Y() ) ) );
-
-        aSeq[nCount++] = Primitive2DReference(
-                    new TextSimplePortionPrimitive2D(aTextMatrix,
-                                                     pItem->maText,0,pItem->maText.getLength(),
-                                                     std::vector< double >( ),
-                                                     aFontAttr,
-                                                     com::sun::star::lang::Locale(),
-                                                     Color(COL_BLACK).getBColor() ) );
-
-        // Create the processor and process the primitives
-        const drawinglayer::geometry::ViewInformation2D aNewViewInfos;
-        drawinglayer::processor2d::BaseProcessor2D * pProcessor =
-            drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice(
-                        *this, aNewViewInfos );
-
-        pProcessor->process(aSeq);
-
-        pItem->Paint(aRect);
-    }
+        pItem->Paint(mpProcessor,mpItemAttrs);
 }
 
 ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > ThumbnailView::CreateAccessible()
@@ -1585,7 +1503,9 @@ rtl::OUString ThumbnailView::GetItemText( sal_uInt16 nItemId ) const
 
 void ThumbnailView::SetColor( const Color& rColor )
 {
-    maColor     = rColor;
+    maColor = rColor;
+    mpItemAttrs->aFillColor = rColor.getBColor();
+
     if ( IsReallyVisible() && IsUpdateMode() )
         Invalidate();
 }
diff --git a/sfx2/source/control/thumbnailviewitem.cxx b/sfx2/source/control/thumbnailviewitem.cxx
index 5e4685d..b9f4ad0 100644
--- a/sfx2/source/control/thumbnailviewitem.cxx
+++ b/sfx2/source/control/thumbnailviewitem.cxx
@@ -26,14 +26,28 @@
  *
  ************************************************************************/
 
+#include <sfx2/thumbnailviewitem.hxx>
+
 #include "thumbnailviewacc.hxx"
 
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <basegfx/range/b2drectangle.hxx>
+#include <basegfx/vector/b2dsize.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <drawinglayer/attribute/fillbitmapattribute.hxx>
+#include <drawinglayer/primitive2d/fillbitmapprimitive2d.hxx>
+#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
 #include <drawinglayer/primitive2d/textlayoutdevice.hxx>
-#include <sfx2/thumbnailviewitem.hxx>
+#include <drawinglayer/primitive2d/textprimitive2d.hxx>
+#include <drawinglayer/processor2d/baseprocessor2d.hxx>
 #include <vcl/button.hxx>
 #include <vcl/svapp.hxx>
 
+using namespace basegfx;
+using namespace basegfx::tools;
 using namespace ::com::sun::star;
+using namespace drawinglayer::attribute;
+using namespace drawinglayer::primitive2d;
 
 ThumbnailViewItem::ThumbnailViewItem(ThumbnailView &rView, Window *pParent)
     : mrParent(rView)
@@ -149,10 +163,75 @@ bool ThumbnailViewItem::isInsideTitle (const Point &pt) const
     return aRect.IsInside(pt);
 }
 
-void ThumbnailViewItem::Paint (const Rectangle &aRect)
+void ThumbnailViewItem::Paint (drawinglayer::processor2d::BaseProcessor2D *pProcessor,
+                               const ThumbnailItemAttributes *pAttrs)
 {
+    int nCount = 0;
+    int nSeqSize = 3;
+
+    if (!maPreview2.IsEmpty())
+        ++nSeqSize;
+
+    BColor aFillColor = pAttrs->aFillColor;
+    Primitive2DSequence aSeq(nSeqSize);
+
+    // Draw background
+    if ( mbSelected || mbHover )
+        aFillColor = pAttrs->aHighlightColor;
+
+    aSeq[nCount++] = Primitive2DReference( new PolyPolygonColorPrimitive2D(
+                                               B2DPolyPolygon(Rect2Polygon(maDrawArea)),
+                                               aFillColor));
+
+    // Draw thumbnail
+    Point aPos = maPrev1Pos;
+    Size aImageSize = maPreview1.GetSizePixel();
+
+    float fScaleX = 1.0f;
+    float fScaleY = 1.0f;
+
+    if (!maPreview2.IsEmpty())
+    {
+        fScaleX = 0.8;
+        fScaleY = 0.8;
+
+        aSeq[nCount++] = Primitive2DReference( new FillBitmapPrimitive2D(
+                                            createScaleTranslateB2DHomMatrix(fScaleX,fScaleY,aPos.X(),aPos.Y()),
+                                            FillBitmapAttribute(maPreview2,
+                                                                B2DPoint(35,20),
+                                                                B2DVector(aImageSize.Width(),aImageSize.Height()),
+                                                                false)
+                                            ));
+    }
+
+    aSeq[nCount++] = Primitive2DReference( new FillBitmapPrimitive2D(
+                                        createScaleTranslateB2DHomMatrix(fScaleX,fScaleY,aPos.X(),aPos.Y()),
+                                        FillBitmapAttribute(maPreview1,
+                                                            B2DPoint(0,0),
+                                                            B2DVector(aImageSize.Width(),aImageSize.Height()),
+                                                            false)
+                                        ));
+
+    // Draw centered text below thumbnail
+    aPos = maTextPos;
+
+    // Create the text primitive
+    basegfx::B2DHomMatrix aTextMatrix( createScaleTranslateB2DHomMatrix(
+                pAttrs->aFontSize.getX(), pAttrs->aFontSize.getY(),
+                double( aPos.X() ), double( aPos.Y() ) ) );
+
+    aSeq[nCount++] = Primitive2DReference(
+                new TextSimplePortionPrimitive2D(aTextMatrix,
+                                                 maText,0,maText.getLength(),
+                                                 std::vector< double >( ),
+                                                 pAttrs->aFontAttr,
+                                                 com::sun::star::lang::Locale(),
+                                                 Color(COL_BLACK).getBColor() ) );
+
+    pProcessor->process(aSeq);
+
     if (mbMode || mbHover || mbSelected)
-        mpSelectBox->Paint(aRect);
+        mpSelectBox->Paint(maDrawArea);
 }
 
 IMPL_LINK (ThumbnailViewItem, OnClick, CheckBox*, )
@@ -163,6 +242,17 @@ IMPL_LINK (ThumbnailViewItem, OnClick, CheckBox*, )
     return 0;
 }
 
+basegfx::B2DPolygon Rect2Polygon (const Rectangle &aRect)
+{
+    basegfx::B2DPolygon aPolygon;
+    aPolygon.append(basegfx::B2DPoint(aRect.Left(),aRect.Top()));
+    aPolygon.append(basegfx::B2DPoint(aRect.Left(),aRect.Bottom()));
+    aPolygon.append(basegfx::B2DPoint(aRect.Right(),aRect.Bottom()));
+    aPolygon.append(basegfx::B2DPoint(aRect.Right(),aRect.Top()));
+
+    return aPolygon;
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
 
 
commit 406c66af52b416864a1de29f77f58223e75759b0
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Mon Jun 18 18:57:31 2012 -0430

    Dont paint selection box if its hidden.
    
    Change-Id: If618c913205ffa89b6afaf18244c85fce5c6e804

diff --git a/sfx2/source/control/thumbnailviewitem.cxx b/sfx2/source/control/thumbnailviewitem.cxx
index f86bfd0..5e4685d 100644
--- a/sfx2/source/control/thumbnailviewitem.cxx
+++ b/sfx2/source/control/thumbnailviewitem.cxx
@@ -151,7 +151,8 @@ bool ThumbnailViewItem::isInsideTitle (const Point &pt) const
 
 void ThumbnailViewItem::Paint (const Rectangle &aRect)
 {
-    mpSelectBox->Paint(aRect);
+    if (mbMode || mbHover || mbSelected)
+        mpSelectBox->Paint(aRect);
 }
 
 IMPL_LINK (ThumbnailViewItem, OnClick, CheckBox*, )


More information about the Libreoffice-commits mailing list