[Libreoffice-commits] .: 2 commits - sfx2/inc sfx2/source sw/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Mon Aug 20 22:08:17 PDT 2012


 sfx2/inc/sfx2/templateviewitem.hxx           |    3 ++-
 sfx2/inc/sfx2/thumbnailviewitem.hxx          |    3 ++-
 sfx2/source/control/templatelocalview.cxx    |    2 +-
 sfx2/source/control/templateviewitem.cxx     |    8 ++++++--
 sfx2/source/control/thumbnailview.cxx        |    2 +-
 sfx2/source/control/thumbnailviewitem.cxx    |    6 +++++-
 sw/source/filter/ww8/docxattributeoutput.cxx |   17 ++++++++++++-----
 sw/source/filter/ww8/docxattributeoutput.hxx |    1 +
 8 files changed, 30 insertions(+), 12 deletions(-)

New commits:
commit c1c2688912e769dfd7654e11e87dae380a8ce1eb
Author: Cédric Bosdonnat <cedric.bosdonnat at free.fr>
Date:   Tue Aug 21 07:02:46 2012 +0200

    fdo#53175: Fixed the end of hyperlinks
    
    This fixes the end of hyperlinks appearing after field ends (while the
    start of hyperlink is after field start too).
    
    Change-Id: If21b8973baaca183e0103e3a70ed98b99aa59392

diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index cbca1b6..71c1915 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -559,6 +559,7 @@ void DocxAttributeOutput::EndRun()
 
         m_pSerializer->startElementNS( XML_w, XML_hyperlink, xAttrList );
         m_pHyperlinkAttrList = NULL;
+        m_startedHyperlink = true;
     }
 
     DoWriteBookmarks( );
@@ -575,16 +576,21 @@ void DocxAttributeOutput::EndRun()
 
     WritePostponedMath();
 
+    if ( m_closeHyperlinkInThisRun )
+    {
+        if ( m_startedHyperlink )
+        {
+            m_pSerializer->endElementNS( XML_w, XML_hyperlink );
+            m_startedHyperlink = false;
+        }
+        m_closeHyperlinkInThisRun = false;
+    }
+
     while ( m_Fields.begin() != m_Fields.end() )
     {
         EndField_Impl( m_Fields.front( ) );
         m_Fields.erase( m_Fields.begin( ) );
     }
-    if ( m_closeHyperlinkInThisRun )
-    {
-        m_pSerializer->endElementNS( XML_w, XML_hyperlink );
-        m_closeHyperlinkInThisRun = false;
-    }
 
     // if there is some redlining in the document, output it
     EndRedline();
@@ -4401,6 +4407,7 @@ DocxAttributeOutput::DocxAttributeOutput( DocxExport &rExport, FSHelperPtr pSeri
       m_pParentFrame( NULL ),
       m_closeHyperlinkInThisRun( false ),
       m_closeHyperlinkInPreviousRun( false ),
+      m_startedHyperlink( false ),
       m_postponedGraphic( NULL ),
       m_postponedMath( NULL ),
       m_postitFieldsMaxId( 0 ),
diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx
index 24b6836..3a9c7cb 100644
--- a/sw/source/filter/ww8/docxattributeoutput.hxx
+++ b/sw/source/filter/ww8/docxattributeoutput.hxx
@@ -592,6 +592,7 @@ private:
     // close of hyperlink needed
     bool m_closeHyperlinkInThisRun;
     bool m_closeHyperlinkInPreviousRun;
+    bool m_startedHyperlink;
 
     struct PostponedGraphic
     {
commit a873be622198c8a9ac59452e64d919d363e32d72
Author: Cédric Bosdonnat <cedric.bosdonnat at free.fr>
Date:   Tue Aug 21 06:24:19 2012 +0200

    template manager: setFontAttribute on TextLayouterDevice is needed
    
    or you could have some weird values initialised much earlier (remember,
    that TextLayouterDevice shares its device)
    
    Change-Id: Ia8e44e578dc1bff6bdc97a3007db51e20692593d

diff --git a/sfx2/inc/sfx2/templateviewitem.hxx b/sfx2/inc/sfx2/templateviewitem.hxx
index a64b15d..992af40 100644
--- a/sfx2/inc/sfx2/templateviewitem.hxx
+++ b/sfx2/inc/sfx2/templateviewitem.hxx
@@ -41,7 +41,8 @@ public:
     const rtl::OUString& getSubTitle () const { return maSubTitle; }
 
     virtual void calculateItemsPosition (const long nThumbnailHeight, const long nDisplayHeight,
-                                         const long nPadding, sal_uInt32 nMaxTextLenght);
+                                         const long nPadding, sal_uInt32 nMaxTextLenght,
+                                         const ThumbnailItemAttributes *pAttrs);
 
     virtual void Paint (drawinglayer::processor2d::BaseProcessor2D *pProcessor,
                         const ThumbnailItemAttributes *pAttrs);
diff --git a/sfx2/inc/sfx2/thumbnailviewitem.hxx b/sfx2/inc/sfx2/thumbnailviewitem.hxx
index aab7fe3..91a6884 100644
--- a/sfx2/inc/sfx2/thumbnailviewitem.hxx
+++ b/sfx2/inc/sfx2/thumbnailviewitem.hxx
@@ -104,7 +104,8 @@ public:
     const Rectangle& getDrawArea () const { return maDrawArea; }
 
     virtual void calculateItemsPosition (const long nThumbnailHeight, const long nDisplayHeight,
-                                         const long nPadding, sal_uInt32 nMaxTextLenght);
+                                         const long nPadding, sal_uInt32 nMaxTextLenght,
+                                         const ThumbnailItemAttributes *pAttrs);
 
     const Point& getTextPos () const { return maTextPos; }
 
diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx
index 79e382f..b230260 100644
--- a/sfx2/source/control/templatelocalview.cxx
+++ b/sfx2/source/control/templatelocalview.cxx
@@ -733,7 +733,7 @@ IMPL_LINK(TemplateLocalView, ChangeNameHdl, TemplateView*, pView)
         {
             mItemList[i]->maTitle = pView->getName();
             mItemList[i]->calculateItemsPosition(mnThumbnailHeight,mnDisplayHeight,
-                                                 mnItemPadding,mpItemAttrs->nMaxTextLenght);
+                                                 mnItemPadding,mpItemAttrs->nMaxTextLenght,mpItemAttrs);
             Invalidate();
             break;
         }
diff --git a/sfx2/source/control/templateviewitem.cxx b/sfx2/source/control/templateviewitem.cxx
index 2b2b4ab..4ef6aa1 100644
--- a/sfx2/source/control/templateviewitem.cxx
+++ b/sfx2/source/control/templateviewitem.cxx
@@ -37,15 +37,19 @@ TemplateViewItem::~TemplateViewItem ()
 }
 
 void TemplateViewItem::calculateItemsPosition(const long nThumbnailHeight, const long nDisplayHeight,
-                                              const long nPadding, sal_uInt32 nMaxTextLenght)
+                                              const long nPadding, sal_uInt32 nMaxTextLenght,
+                                              const ThumbnailItemAttributes *pAttrs)
 {
-    ThumbnailViewItem::calculateItemsPosition(nThumbnailHeight,nDisplayHeight,nPadding,nMaxTextLenght);
+    ThumbnailViewItem::calculateItemsPosition(nThumbnailHeight,nDisplayHeight,nPadding,nMaxTextLenght, pAttrs);
 
     if (!maSubTitle.isEmpty())
     {
         Size aRectSize = maDrawArea.GetSize();
 
         drawinglayer::primitive2d::TextLayouterDevice aTextDev;
+        aTextDev.setFontAttribute(pAttrs->aFontAttr,
+                                  pAttrs->aFontSize.getX(), pAttrs->aFontSize.getY(),
+                                  com::sun::star::lang::Locale() );
 
         long nSpace = (nDisplayHeight + nPadding - 2*aTextDev.getTextHeight()) / 3;
 
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 6e221bb..589766d 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -331,7 +331,7 @@ void ThumbnailView::CalculateItemPositions ()
                 }
 
                 pItem->setDrawArea(Rectangle( Point(x,y), Size(mnItemWidth, mnItemHeight) ));
-                pItem->calculateItemsPosition(mnThumbnailHeight,mnDisplayHeight,mnItemPadding,mpItemAttrs->nMaxTextLenght);
+                pItem->calculateItemsPosition(mnThumbnailHeight,mnDisplayHeight,mnItemPadding,mpItemAttrs->nMaxTextLenght,mpItemAttrs);
 
                 if ( !((nCurCount+1) % mnCols) )
                 {
diff --git a/sfx2/source/control/thumbnailviewitem.cxx b/sfx2/source/control/thumbnailviewitem.cxx
index 6eb6832..77e8592 100644
--- a/sfx2/source/control/thumbnailviewitem.cxx
+++ b/sfx2/source/control/thumbnailviewitem.cxx
@@ -118,9 +118,13 @@ void ThumbnailViewItem::setDrawArea (const Rectangle &area)
 }
 
 void ThumbnailViewItem::calculateItemsPosition (const long nThumbnailHeight, const long nDisplayHeight,
-                                                const long nPadding, sal_uInt32 nMaxTextLenght)
+                                                const long nPadding, sal_uInt32 nMaxTextLenght,
+                                                const ThumbnailItemAttributes *pAttrs)
 {
     drawinglayer::primitive2d::TextLayouterDevice aTextDev;
+    aTextDev.setFontAttribute(pAttrs->aFontAttr,
+                              pAttrs->aFontSize.getX(), pAttrs->aFontSize.getY(),
+                              com::sun::star::lang::Locale() );
 
     Size aRectSize = maDrawArea.GetSize();
     Size aImageSize = maPreview1.GetSizePixel();


More information about the Libreoffice-commits mailing list