[Libreoffice-commits] core.git: 6 commits - include/sfx2 include/svx officecfg/registry sfx2/Library_sfx.mk sfx2/source svx/source vcl/inc vcl/unx

Tomaž Vajngerl tomaz.vajngerl at collabora.co.uk
Thu Jul 16 18:01:51 PDT 2015


 include/sfx2/StyleManager.hxx                              |    6 +
 include/svx/CommonStyleManager.hxx                         |    4 -
 officecfg/registry/schema/org/openoffice/Office/Common.xcs |   13 +++
 sfx2/Library_sfx.mk                                        |    1 
 sfx2/source/dialog/templdlg.cxx                            |   52 ++++++++-----
 sfx2/source/styles/StyleManager.cxx                        |   38 +++++++++
 svx/source/styles/CommonStyleManager.cxx                   |   21 -----
 vcl/inc/unx/gtk/gtkgdi.hxx                                 |    1 
 vcl/unx/generic/gdi/salgdi.cxx                             |    8 ++
 vcl/unx/gtk/app/gtkdata.cxx                                |   19 ++++
 vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx              |   26 ++++++
 11 files changed, 148 insertions(+), 41 deletions(-)

New commits:
commit 14257152b19c08618a107c6eb0f684de11483da8
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Thu Jul 16 17:04:41 2015 +0900

    use search from StyleManager in "Style & Formatting"
    
    Change-Id: I09fff1816b1d569cbfd50c7cafb19c9b169528bf

diff --git a/sfx2/source/dialog/templdlg.cxx b/sfx2/source/dialog/templdlg.cxx
index 9446d0b..ab25ccd 100644
--- a/sfx2/source/dialog/templdlg.cxx
+++ b/sfx2/source/dialog/templdlg.cxx
@@ -132,21 +132,28 @@ void StyleLBoxString::Paint(
 
     if (pStyleManager)
     {
-        std::unique_ptr<sfx2::StylePreviewRenderer> pStylePreviewRenderer(pStyleManager->CreateStylePreviewRenderer(rRenderContext, GetText(), meStyleFamily, 32 * rRenderContext.GetDPIScaleFactor()));
+        SfxStyleSheetBase* pStyleSheet = pStyleManager->Search(GetText(), meStyleFamily);
 
-        if (pStylePreviewRenderer)
+        if (pStyleSheet)
         {
-            if (pStylePreviewRenderer->recalculate())
-            {
-                mpViewData->maSize = pStylePreviewRenderer->getRenderSize();
-            }
-            else
+            sal_Int32 nSize = 32 * rRenderContext.GetDPIScaleFactor();
+            std::unique_ptr<sfx2::StylePreviewRenderer> pStylePreviewRenderer(
+                pStyleManager->CreateStylePreviewRenderer(rRenderContext, pStyleSheet, nSize));
+
+            if (pStylePreviewRenderer)
             {
-                SvLBoxString::InitViewData( &rDevice, const_cast<SvTreeListEntry*>(&rEntry), mpViewData);
-            }
+                if (pStylePreviewRenderer->recalculate())
+                {
+                    mpViewData->maSize = pStylePreviewRenderer->getRenderSize();
+                }
+                else
+                {
+                    SvLBoxString::InitViewData( &rDevice, const_cast<SvTreeListEntry*>(&rEntry), mpViewData);
+                }
 
-            Rectangle aPaintRectangle = pView->GetPaintRectangle();
-            bPainted = pStylePreviewRenderer->render(aPaintRectangle);
+                Rectangle aPaintRectangle = pView->GetPaintRectangle();
+                bPainted = pStylePreviewRenderer->render(aPaintRectangle);
+            }
         }
     }
 
commit 53c40258d3572152b46e5ff5f51496ae6f32879b
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Wed Jul 15 16:19:12 2015 +0900

    StyleManager: move style search to its own method
    
    And remove obsolete CreateStylePreviewRenderer method with style
    name as input parameter.
    
    Change-Id: I0fdf54fd40148b417250b5a6bf2453994eb83634

diff --git a/include/sfx2/StyleManager.hxx b/include/sfx2/StyleManager.hxx
index badc39c..c6e7c23 100644
--- a/include/sfx2/StyleManager.hxx
+++ b/include/sfx2/StyleManager.hxx
@@ -35,9 +35,7 @@ public:
     virtual ~StyleManager()
     {}
 
-    virtual StylePreviewRenderer* CreateStylePreviewRenderer(
-                    OutputDevice& rOutputDev, OUString const & rName,
-                    SfxStyleFamily eFamily, long nMaxHeight = 32) = 0;
+    SfxStyleSheetBase* Search(const OUString& rStyleName, SfxStyleFamily eFamily);
 
     virtual StylePreviewRenderer* CreateStylePreviewRenderer(
                     OutputDevice& rOutputDev, SfxStyleSheetBase* pStyle,
diff --git a/include/svx/CommonStyleManager.hxx b/include/svx/CommonStyleManager.hxx
index 1fc22a6..97f1de9 100644
--- a/include/svx/CommonStyleManager.hxx
+++ b/include/svx/CommonStyleManager.hxx
@@ -30,10 +30,6 @@ public:
     {}
 
     virtual sfx2::StylePreviewRenderer* CreateStylePreviewRenderer(
-                                            OutputDevice& rOutputDev, OUString const & rName,
-                                            SfxStyleFamily eFamily, long nMaxHeight = 32) SAL_OVERRIDE;
-
-    virtual sfx2::StylePreviewRenderer* CreateStylePreviewRenderer(
                                             OutputDevice& rOutputDev, SfxStyleSheetBase* pStyle,
                                             long nMaxHeight = 32) SAL_OVERRIDE;
 };
diff --git a/sfx2/Library_sfx.mk b/sfx2/Library_sfx.mk
index 5db89dd..b56f7f5 100644
--- a/sfx2/Library_sfx.mk
+++ b/sfx2/Library_sfx.mk
@@ -289,6 +289,7 @@ $(eval $(call gb_Library_add_exception_objects,sfx,\
     sfx2/source/sidebar/UnoDecks \
     sfx2/source/sidebar/UnoSidebar \
     sfx2/source/statbar/stbitem \
+    sfx2/source/styles/StyleManager \
     sfx2/source/toolbox/imgmgr \
     sfx2/source/toolbox/tbxitem \
     sfx2/source/view/frame \
diff --git a/sfx2/source/styles/StyleManager.cxx b/sfx2/source/styles/StyleManager.cxx
new file mode 100644
index 0000000..aea80be
--- /dev/null
+++ b/sfx2/source/styles/StyleManager.cxx
@@ -0,0 +1,38 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * 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/StyleManager.hxx>
+
+namespace sfx2
+{
+
+SfxStyleSheetBase* StyleManager::Search(const OUString& rStyleName, SfxStyleFamily eFamily)
+{
+    SfxStyleSheetBasePool* pPool = mrShell.GetStyleSheetPool();
+    if (!pPool)
+        return nullptr;
+
+    pPool->SetSearchMask(eFamily, SFXSTYLEBIT_ALL);
+    SfxStyleSheetBase* pStyle = nullptr;
+    pStyle = pPool->First();
+
+    while (pStyle)
+    {
+        if (rStyleName == pStyle->GetName())
+            return pStyle;
+
+        pStyle = pPool->Next();
+    }
+
+    return nullptr;
+}
+
+} // end namespace sfx2
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/styles/CommonStyleManager.cxx b/svx/source/styles/CommonStyleManager.cxx
index 0cabafd..2dd825b 100644
--- a/svx/source/styles/CommonStyleManager.cxx
+++ b/svx/source/styles/CommonStyleManager.cxx
@@ -15,29 +15,6 @@ namespace svx
 {
 
 sfx2::StylePreviewRenderer* CommonStyleManager::CreateStylePreviewRenderer(
-                                            OutputDevice& rOutputDev, OUString const & rName,
-                                            SfxStyleFamily eFamily, long nMaxHeight)
-{
-    SfxStyleSheetBasePool* pPool = mrShell.GetStyleSheetPool();
-    if (!pPool)
-        return nullptr;
-
-    pPool->SetSearchMask(eFamily, SFXSTYLEBIT_ALL);
-    SfxStyleSheetBase* pStyle = nullptr;
-    pStyle = pPool->First();
-
-    while (pStyle)
-    {
-        if (rName == pStyle->GetName())
-            return CreateStylePreviewRenderer(rOutputDev, pStyle, nMaxHeight);
-
-        pStyle = pPool->Next();
-    }
-
-    return nullptr;
-}
-
-sfx2::StylePreviewRenderer* CommonStyleManager::CreateStylePreviewRenderer(
                                             OutputDevice& rOutputDev, SfxStyleSheetBase* pStyle,
                                             long nMaxHeight)
 {
commit 76360c8de7bf6f0baef9c0440a2f721f15cc1564
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Mon Jun 8 14:26:49 2015 +0900

    create the stlye preview renderer with style as parameter
    
    Change-Id: Ie191467305279253f165f13980c125f6b7b9fdde

diff --git a/include/sfx2/StyleManager.hxx b/include/sfx2/StyleManager.hxx
index 962fbb9..badc39c 100644
--- a/include/sfx2/StyleManager.hxx
+++ b/include/sfx2/StyleManager.hxx
@@ -38,6 +38,10 @@ public:
     virtual StylePreviewRenderer* CreateStylePreviewRenderer(
                     OutputDevice& rOutputDev, OUString const & rName,
                     SfxStyleFamily eFamily, long nMaxHeight = 32) = 0;
+
+    virtual StylePreviewRenderer* CreateStylePreviewRenderer(
+                    OutputDevice& rOutputDev, SfxStyleSheetBase* pStyle,
+                    long nMaxHeight = 32) = 0;
 };
 
 } // end namespace sfx2
diff --git a/include/svx/CommonStyleManager.hxx b/include/svx/CommonStyleManager.hxx
index 0ce0a3d..1fc22a6 100644
--- a/include/svx/CommonStyleManager.hxx
+++ b/include/svx/CommonStyleManager.hxx
@@ -32,6 +32,10 @@ public:
     virtual sfx2::StylePreviewRenderer* CreateStylePreviewRenderer(
                                             OutputDevice& rOutputDev, OUString const & rName,
                                             SfxStyleFamily eFamily, long nMaxHeight = 32) SAL_OVERRIDE;
+
+    virtual sfx2::StylePreviewRenderer* CreateStylePreviewRenderer(
+                                            OutputDevice& rOutputDev, SfxStyleSheetBase* pStyle,
+                                            long nMaxHeight = 32) SAL_OVERRIDE;
 };
 
 } // end namespace svx
diff --git a/svx/source/styles/CommonStyleManager.cxx b/svx/source/styles/CommonStyleManager.cxx
index d452ba4..0cabafd 100644
--- a/svx/source/styles/CommonStyleManager.cxx
+++ b/svx/source/styles/CommonStyleManager.cxx
@@ -29,13 +29,21 @@ sfx2::StylePreviewRenderer* CommonStyleManager::CreateStylePreviewRenderer(
     while (pStyle)
     {
         if (rName == pStyle->GetName())
-            return new CommonStylePreviewRenderer(mrShell, rOutputDev, pStyle, nMaxHeight);
+            return CreateStylePreviewRenderer(rOutputDev, pStyle, nMaxHeight);
+
         pStyle = pPool->Next();
     }
 
     return nullptr;
 }
 
+sfx2::StylePreviewRenderer* CommonStyleManager::CreateStylePreviewRenderer(
+                                            OutputDevice& rOutputDev, SfxStyleSheetBase* pStyle,
+                                            long nMaxHeight)
+{
+    return new CommonStylePreviewRenderer(mrShell, rOutputDev, pStyle, nMaxHeight);
+}
+
 } // end svx namespace
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 210f42a318cbac62de835ccacbc1fc0e36f713f6
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Tue Jul 14 14:19:23 2015 +0900

    tdf#91495 add property to turn off stlye previews
    
    Newly added property Office::Common::StylesAndFormatting::Preview
    can now be used to turn off "Style And Formatting" style preview.
    
    Change-Id: I2e01de2a74e2d295557c87022a7b745ce23b4800

diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
index 220a989..7e722ca 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
@@ -2165,7 +2165,7 @@
           <!-- UIHints: Tools  Options - General  Save - [Section] Save -->
           <info>
             <desc>Specifies whether to generate a thumbnail image and place it inside the
-	      the odf archive file, which makes it possible to see a preview of the document.</desc>
+            the odf archive file, which makes it possible to see a preview of the document.</desc>
             <label>Store a preview of this document</label>
           </info>
           <value>true</value>
@@ -6634,5 +6634,16 @@
         </prop>
       </group>
     </group>
+    <group oor:name="StylesAndFormatting">
+      <info>
+        <desc>Contains settings for Styles and Formatting.</desc>
+      </info>
+      <prop oor:name="Preview" oor:type="xs:boolean" oor:nillable="false">
+        <info>
+           <desc>Specifies if the styles and formatting preview is enabled.</desc>
+        </info>
+        <value>true</value>
+      </prop>
+    </group>
   </component>
 </oor:component-schema>
diff --git a/sfx2/source/dialog/templdlg.cxx b/sfx2/source/dialog/templdlg.cxx
index 5b91be9..9446d0b 100644
--- a/sfx2/source/dialog/templdlg.cxx
+++ b/sfx2/source/dialog/templdlg.cxx
@@ -33,6 +33,7 @@
 #include <com/sun/star/beans/PropertyValue.hpp>
 #include <com/sun/star/frame/ModuleManager.hpp>
 #include <com/sun/star/frame/theUICommandDescription.hpp>
+#include <officecfg/Office/Common.hxx>
 
 #include <sfx2/sfxhelp.hxx>
 #include <sfx2/app.hxx>
@@ -515,8 +516,11 @@ StyleTreeListBox_Impl::StyleTreeListBox_Impl(SfxCommonTemplateDialog_Impl* pPare
 
 void StyleTreeListBox_Impl::Recalc()
 {
-    SetEntryHeight(32 * GetDPIScaleFactor());
-    RecalcViewData();
+    if (officecfg::Office::Common::StylesAndFormatting::Preview::get())
+    {
+        SetEntryHeight(32 * GetDPIScaleFactor());
+        RecalcViewData();
+    }
 }
 
 /** Internal structure for the establishment of the hierarchical view */
@@ -627,9 +631,11 @@ SvTreeListEntry* FillBox_Impl(SvTreeListBox* pBox,
 {
     SvTreeListEntry* pTreeListEntry = pBox->InsertEntry(pEntry->getName(), pParent);
 
-    StyleLBoxString* pStyleLBoxString = new StyleLBoxString(pTreeListEntry, 0, pEntry->getName(), eStyleFamily);
-
-    pTreeListEntry->ReplaceItem(pStyleLBoxString, 1);
+    if (officecfg::Office::Common::StylesAndFormatting::Preview::get())
+    {
+        StyleLBoxString* pStyleLBoxString = new StyleLBoxString(pTreeListEntry, 0, pEntry->getName(), eStyleFamily);
+        pTreeListEntry->ReplaceItem(pStyleLBoxString, 1);
+    }
 
     pBox->GetModel()->InvalidateEntry(pTreeListEntry);
 
@@ -1245,8 +1251,11 @@ void SfxCommonTemplateDialog_Impl::UpdateStyles_Impl(sal_uInt16 nFlags)
                 for(nPos = 0; nPos < nCount; ++nPos)
                 {
                     SvTreeListEntry* pTreeListEntry = aFmtLb->InsertEntry(aStrings[nPos], 0, false, nPos);
-                    StyleLBoxString* pStyleLBoxString = new StyleLBoxString(pTreeListEntry, 0, aStrings[nPos], eFam);
-                    pTreeListEntry->ReplaceItem(pStyleLBoxString, 1);
+                    if (officecfg::Office::Common::StylesAndFormatting::Preview::get())
+                    {
+                        StyleLBoxString* pStyleLBoxString = new StyleLBoxString(pTreeListEntry, 0, aStrings[nPos], eFam);
+                        pTreeListEntry->ReplaceItem(pStyleLBoxString, 1);
+                    }
                     aFmtLb->GetModel()->InvalidateEntry(pTreeListEntry);
                 }
                 aFmtLb->Recalc();
commit 9827eaeac51149c9c26abc4a8cca6f2029274ee5
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Tue Jul 14 14:15:39 2015 +0900

    force a specific DPI with SAL_FORCEDPI (GTK2 & GTK3 backends only)
    
    Change-Id: I2c154e4df060ade36744c6aa2fbffa8c6e665629

diff --git a/vcl/unx/generic/gdi/salgdi.cxx b/vcl/unx/generic/gdi/salgdi.cxx
index ee68a0c..5561250 100644
--- a/vcl/unx/generic/gdi/salgdi.cxx
+++ b/vcl/unx/generic/gdi/salgdi.cxx
@@ -278,6 +278,14 @@ bool X11SalGraphics::GetDitherPixmap( SalColor nSalColor )
 
 void X11SalGraphics::GetResolution( sal_Int32 &rDPIX, sal_Int32 &rDPIY ) // const
 {
+    char* pForceDpi;
+    if ((pForceDpi = getenv("SAL_FORCEDPI")))
+    {
+        OString sForceDPI(pForceDpi);
+        rDPIX = rDPIY = sForceDPI.toInt32();
+        return;
+    }
+
     const SalDisplay *pDisplay = GetDisplay();
     if (!pDisplay)
     {
diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
index 0e3b0f6..c593559 100644
--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
@@ -2102,6 +2102,14 @@ cairo_t* GtkSalGraphics::getCairoContext() const
 
 void GtkSalGraphics::GetResolution(sal_Int32& rDPIX, sal_Int32& rDPIY)
 {
+    char* pForceDpi;
+    if ((pForceDpi = getenv("SAL_FORCEDPI")))
+    {
+        OString sForceDPI(pForceDpi);
+        rDPIX = rDPIY = sForceDPI.toInt32();
+        return;
+    }
+
     GdkScreen* pScreen = gtk_widget_get_screen(mpWindow);
     double fResolution = -1.0;
     g_object_get(pScreen, "resolution", &fResolution, nullptr);
commit 2a19bb85cbe83aa031871a3689b9ff03629da548
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Mon Jul 13 16:12:11 2015 +0900

    GTK3 HiDPI: disable window scaling and get display DPI via GTK3
    
    Change-Id: I66b92146757352408a331f9e23289839f443ff79

diff --git a/vcl/inc/unx/gtk/gtkgdi.hxx b/vcl/inc/unx/gtk/gtkgdi.hxx
index 80de62b..b533cb4 100644
--- a/vcl/inc/unx/gtk/gtkgdi.hxx
+++ b/vcl/inc/unx/gtk/gtkgdi.hxx
@@ -61,6 +61,7 @@ public:
 
     cairo_t* getCairoContext() const;
 
+    virtual void GetResolution(sal_Int32& rDPIX, sal_Int32& rDPIY) SAL_OVERRIDE;
 private:
     GtkWidget       *mpWindow;
     static GtkStyleContext *mpButtonStyle;
diff --git a/vcl/unx/gtk/app/gtkdata.cxx b/vcl/unx/gtk/app/gtkdata.cxx
index df4470b..6e0f711 100644
--- a/vcl/unx/gtk/app/gtkdata.cxx
+++ b/vcl/unx/gtk/app/gtkdata.cxx
@@ -46,6 +46,12 @@
 
 #include <vcl/svapp.hxx>
 
+#if GTK_CHECK_VERSION(3,10,0)
+#ifdef GDK_WINDOWING_X11
+#include <gdk/gdkx.h>
+#endif
+#endif
+
 using namespace vcl_sal;
 
 /***************************************************************
@@ -87,6 +93,19 @@ GtkSalDisplay::GtkSalDisplay( GdkDisplay* pDisplay ) :
 #else
     m_bX11Display = true;
 #endif
+
+#if GTK_CHECK_VERSION(3,10,0)
+#ifdef GDK_WINDOWING_X11
+    if (m_bX11Display)
+    {
+        if (!getenv("GDK_SCALE"))
+        {
+            gdk_x11_display_set_window_scale(m_pGdkDisplay, 1);
+        }
+    }
+#endif
+#endif
+
 }
 
 GtkSalDisplay::~GtkSalDisplay()
diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
index 9e05432..0e3b0f6 100644
--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
@@ -2100,4 +2100,22 @@ cairo_t* GtkSalGraphics::getCairoContext() const
     return mpFrame->getCairoContext();
 }
 
+void GtkSalGraphics::GetResolution(sal_Int32& rDPIX, sal_Int32& rDPIY)
+{
+    GdkScreen* pScreen = gtk_widget_get_screen(mpWindow);
+    double fResolution = -1.0;
+    g_object_get(pScreen, "resolution", &fResolution, nullptr);
+
+    int nScaleFactor = 1;
+
+#if GTK_CHECK_VERSION(3, 10, 0)
+    nScaleFactor = gdk_window_get_scale_factor(widget_get_window(mpWindow));
+#endif
+
+    if (fResolution > 0.0)
+        rDPIX = rDPIY = sal_Int32(fResolution * nScaleFactor);
+    else
+        rDPIX = rDPIY = 96;
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list