[Libreoffice-commits] .: Branch 'libreoffice-3-4' - 2 commits - sw/inc sw/source

Miklos Vajna vmiklos at kemper.freedesktop.org
Mon Mar 5 06:01:59 PST 2012


 sw/inc/txtfld.hxx                   |    3 ++-
 sw/source/core/crsr/crstrvl.cxx     |    3 ++-
 sw/source/core/txtnode/atrfld.cxx   |    7 +++++--
 sw/source/core/txtnode/thints.cxx   |    3 ++-
 sw/source/core/unocore/unofield.cxx |    5 ++---
 5 files changed, 13 insertions(+), 8 deletions(-)

New commits:
commit ea137eef21554dfc7b8420b1f40e7a26eaaa5210
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Mar 2 21:32:27 2012 +0100

    fdo#42073: sw: expand all text fields when setting properties:
    
    SwXTextField::setPropertyValue: call Expand() for all text fields
    Fixes getPresentation returning stale values.
    (regression from CWS sw34bf01, 8485708f3001fca132c3353c464fe7187ef62bed)
    Also, without this the text formatting does not actually update and the new
    content is not displayed until some other unrelated editing operation.
    (cherry picked from commit e3dfae0741aae8581cd3fc713ba1b4459bb22d88)
    
    Signed-off-by: Miklos Vajna <vmiklos at suse.cz>
    Signed-off-by: Miklos Vajna <vmiklos at frugalware.org>

diff --git a/sw/source/core/unocore/unofield.cxx b/sw/source/core/unocore/unofield.cxx
index 8351970..ca9511b 100644
--- a/sw/source/core/unocore/unofield.cxx
+++ b/sw/source/core/unocore/unofield.cxx
@@ -1902,9 +1902,8 @@ void SwXTextField::setPropertyValue(const OUString& rPropertyName, const uno::An
         const_cast<SwFmtFld*>(pFmtFld)->Broadcast(SwFmtFldHint( 0, SWFMTFLD_CHANGED ));
     }
 
-        // changes of the expanded string have to be notified
-        //#to the SwTxtFld
-        if(RES_DBFLD == nWhich && pFmtFld->GetTxtFld())
+        // fdo#42073 notify SwTxtFld about changes of the expanded string
+        if (pFmtFld->GetTxtFld())
         {
             pFmtFld->GetTxtFld()->Expand();
         }
commit bad17b39d1567c5f58c439093c8f8b692e106cdc
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Mar 2 19:02:03 2012 +0100

    fdo#39694: SwTxtFld: do expand the field in the ctor
    
    While only the text formatting is able to expand all fields correctly,
    this is still good enough for many field types and fixes a race
    condition when the field value is requested before layout is finished.
    (regression from CWS sw34bf01, 8485708f3001fca132c3353c464fe7187ef62bed)
    (cherry picked from commit 9519deda120b73b72e75d89c3b2ae3d66220ec2d)
    
    Signed-off-by: Miklos Vajna <vmiklos at suse.cz>
    Signed-off-by: Miklos Vajna <vmiklos at frugalware.org>

diff --git a/sw/inc/txtfld.hxx b/sw/inc/txtfld.hxx
index 4b06c3f..246de80 100644
--- a/sw/inc/txtfld.hxx
+++ b/sw/inc/txtfld.hxx
@@ -42,7 +42,8 @@ class SwTxtFld : public SwTxtAttr
     SwTxtNode * m_pTxtNode;
 
 public:
-    SwTxtFld(SwFmtFld & rAttr, xub_StrLen const nStart);
+    SwTxtFld(SwFmtFld & rAttr, xub_StrLen const nStart,
+            bool const bInClipboard);
     virtual ~SwTxtFld();
 
     void CopyFld( SwTxtFld *pDest ) const;
diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx
index ca4b282..0bf0aae 100644
--- a/sw/source/core/crsr/crstrvl.cxx
+++ b/sw/source/core/crsr/crstrvl.cxx
@@ -711,7 +711,8 @@ sal_Bool SwCrsrShell::MoveFldType( const SwFieldType* pFldType, sal_Bool bNext,
             SwFmtFld* pFmtFld = new SwFmtFld( SwDateTimeField(
                 (SwDateTimeFieldType*)pDoc->GetSysFldType( RES_DATETIMEFLD ) ) );
 
-            pTxtFld = new SwTxtFld( *pFmtFld, rPos.nContent.GetIndex() );
+            pTxtFld = new SwTxtFld( *pFmtFld, rPos.nContent.GetIndex(),
+                        pDoc->IsClipBoard() );
             pTxtFld->ChgTxtNode( pTNd );
         }
 
diff --git a/sw/source/core/txtnode/atrfld.cxx b/sw/source/core/txtnode/atrfld.cxx
index 30eb065..a2e7462 100644
--- a/sw/source/core/txtnode/atrfld.cxx
+++ b/sw/source/core/txtnode/atrfld.cxx
@@ -287,9 +287,12 @@ sal_Bool SwFmtFld::IsProtect() const
 |*
 *************************************************************************/
 
-SwTxtFld::SwTxtFld(SwFmtFld & rAttr, xub_StrLen const nStartPos)
+SwTxtFld::SwTxtFld(SwFmtFld & rAttr, xub_StrLen const nStartPos,
+        bool const bInClipboard)
     : SwTxtAttr( rAttr, nStartPos )
-    , m_aExpand( rAttr.GetFld()->ExpandField(true) )
+// fdo#39694 the ExpandField here may not give the correct result in all cases,
+// but is better than nothing
+    , m_aExpand( rAttr.GetFld()->ExpandField(bInClipboard) )
     , m_pTxtNode( 0 )
 {
     rAttr.pTxtAttr = this;
diff --git a/sw/source/core/txtnode/thints.cxx b/sw/source/core/txtnode/thints.cxx
index b67be35..4f0de8e 100644
--- a/sw/source/core/txtnode/thints.cxx
+++ b/sw/source/core/txtnode/thints.cxx
@@ -1041,7 +1041,8 @@ SwTxtAttr* MakeTxtAttr( SwDoc & rDoc, SfxPoolItem& rAttr,
         pNew = new SwTxtINetFmt( (SwFmtINetFmt&)rNew, nStt, nEnd );
         break;
     case RES_TXTATR_FIELD:
-        pNew = new SwTxtFld( static_cast<SwFmtFld &>(rNew), nStt );
+        pNew = new SwTxtFld( static_cast<SwFmtFld &>(rNew), nStt,
+                    rDoc.IsClipBoard() );
         break;
     case RES_TXTATR_FLYCNT:
         {


More information about the Libreoffice-commits mailing list