[Libreoffice-commits] core.git: sw/inc sw/source

Oliver-Rainer Wittmann orw at apache.org
Thu Jan 9 07:41:03 PST 2014


 sw/inc/fmtinfmt.hxx                |  111 +++++++++++++++++++++---------
 sw/source/core/doc/doctxm.cxx      |   20 +----
 sw/source/core/txtnode/fmtatr2.cxx |  135 ++++++++++++++++++++-----------------
 sw/source/core/txtnode/txtatr2.cxx |   36 ++++-----
 sw/source/filter/ww8/ww8atr.cxx    |   12 +--
 sw/source/filter/ww8/ww8par5.cxx   |   16 +---
 sw/source/ui/chrdlg/chardlg.cxx    |   33 +++++----
 sw/source/ui/shells/txtattr.cxx    |   31 ++++----
 8 files changed, 225 insertions(+), 169 deletions(-)

New commits:
commit 74593273655e475017bb2bd45aba3c6b132e372d
Author: Oliver-Rainer Wittmann <orw at apache.org>
Date:   Thu Jan 9 12:59:28 2014 +0000

    Resolves: #i123988# assure that hyperlink attribute...
    
    (<SwFmtINetFmt>) always provides character style names for visited and
    unvisited state
    
    (cherry picked from commit c15b814d6e8ea429287def9a0bf3ac71db414119)
    
    Conflicts:
    	sw/inc/fmtinfmt.hxx
    	sw/source/core/doc/doctxm.cxx
    	sw/source/core/txtnode/fmtatr2.cxx
    	sw/source/core/txtnode/txtatr2.cxx
    	sw/source/filter/ww8/ww8atr.cxx
    	sw/source/filter/ww8/ww8par5.cxx
    	sw/source/ui/chrdlg/chardlg.cxx
    	sw/source/ui/shells/txtattr.cxx
    
    Change-Id: Ib23d55a299d0d78a2eba18dd5c1c0327c816da56

diff --git a/sw/inc/fmtinfmt.hxx b/sw/inc/fmtinfmt.hxx
index fbdaf2e..2179751 100644
--- a/sw/inc/fmtinfmt.hxx
+++ b/sw/inc/fmtinfmt.hxx
@@ -33,15 +33,15 @@ class SW_DLLPUBLIC SwFmtINetFmt: public SfxPoolItem
 {
     friend class SwTxtINetFmt;
 
-    OUString aURL;                  ///< URL.
-    OUString aTargetFrame;          ///< Target frame for URL.
-    OUString aINetFmt;
-    OUString aVisitedFmt;
-    OUString aName;                 ///< Name of the link.
-    SvxMacroTableDtor* pMacroTbl;
-    SwTxtINetFmt* pTxtAttr;         ///< My TextAttribute.
-    sal_uInt16 nINetId;
-    sal_uInt16 nVisitedId;
+    OUString msURL;                  ///< URL.
+    OUString msTargetFrame;          ///< Target frame for URL.
+    OUString msINetFmtName;
+    OUString msVisitedFmtName;
+    OUString msHyperlinkName;        ///< Name of the link.
+    SvxMacroTableDtor* mpMacroTbl;
+    SwTxtINetFmt* mpTxtAttr;         ///< My TextAttribute.
+    sal_uInt16 mnINetFmtId;
+    sal_uInt16 mnVisitedFmtId;
 public:
     SwFmtINetFmt( const OUString& rURL, const OUString& rTarget );
     SwFmtINetFmt( const SwFmtINetFmt& rAttr );
@@ -65,34 +65,81 @@ public:
                                         sal_uInt8 nMemberId = 0 );
 
 
-    const SwTxtINetFmt* GetTxtINetFmt() const   { return pTxtAttr; }
-    SwTxtINetFmt* GetTxtINetFmt()               { return pTxtAttr; }
-
-    OUString GetValue() const               { return aURL; }
-
-    OUString GetName() const                { return aName; }
-    void SetName( const OUString& rNm )     { aName = rNm; }
-
-    OUString GetTargetFrame() const         { return aTargetFrame; }
-
-    OUString GetINetFmt() const             { return aINetFmt; }
-    void SetINetFmt( const OUString& rNm )  { aINetFmt = rNm; }
-
-    OUString GetVisitedFmt() const            { return aVisitedFmt; }
-    void SetVisitedFmt( const OUString& rNm ) { aVisitedFmt = rNm; }
-
-    sal_uInt16 GetINetFmtId() const             { return nINetId; }
-    void SetINetFmtId( sal_uInt16 nNew )        { nINetId = nNew; }
-
-    sal_uInt16 GetVisitedFmtId() const          { return nVisitedId; }
-    void SetVisitedFmtId( sal_uInt16 nNew )     { nVisitedId = nNew; }
+    const SwTxtINetFmt* GetTxtINetFmt() const
+    {
+        return mpTxtAttr;
+    }
+    SwTxtINetFmt* GetTxtINetFmt()
+    {
+        return mpTxtAttr;
+    }
+
+    const OUString& GetValue() const
+    {
+        return msURL;
+    }
+
+    const OUString& GetName() const
+    {
+        return msHyperlinkName;
+    }
+    void SetName( const OUString& rNm )
+    {
+        msHyperlinkName = rNm;
+    }
+
+    const OUString& GetTargetFrame() const
+    {
+        return msTargetFrame;
+    }
+
+    void SetINetFmtAndId(
+            const OUString& rNm,
+            const sal_uInt16 nId )
+    {
+        msINetFmtName = rNm;
+        mnINetFmtId = nId;
+    }
+
+    const OUString& GetINetFmt() const
+    {
+        return msINetFmtName;
+    }
+
+    sal_uInt16 GetINetFmtId() const
+    {
+        return mnINetFmtId;
+    }
+
+    void SetVisitedFmtAndId(
+            const OUString& rNm,
+            const sal_uInt16 nId )
+    {
+        msVisitedFmtName = rNm;
+        mnVisitedFmtId = nId;
+    }
+
+    const OUString& GetVisitedFmt() const
+    {
+        return msVisitedFmtName;
+    }
+
+    sal_uInt16 GetVisitedFmtId() const
+    {
+        return mnVisitedFmtId;
+    }
 
     /// Set a new MacroTable or clear the current one.
     void SetMacroTbl( const SvxMacroTableDtor* pTbl = 0 );
-    const SvxMacroTableDtor* GetMacroTbl() const    { return pMacroTbl; }
+    const SvxMacroTableDtor* GetMacroTbl() const
+    {
+        return mpMacroTbl;
+    }
 
     /// Macro getter and setter.
-    void SetMacro( sal_uInt16 nEvent, const SvxMacro& rMacro );
+    void SetMacro(
+            sal_uInt16 nEvent,
+            const SvxMacro& rMacro );
     const SvxMacro* GetMacro( sal_uInt16 nEvent ) const;
 };
 
diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx
index 1fb4254..2080812 100644
--- a/sw/source/core/doc/doctxm.cxx
+++ b/sw/source/core/doc/doctxm.cxx
@@ -1796,20 +1796,12 @@ void SwTOXBaseSection::GenerateText( sal_uInt16 nArrayIdx,
                     }
                     LinkStruct* pNewLink = new LinkStruct(sURL, nLinkStartPosition,
                                                     nEnd);
-                    pNewLink->aINetFmt.SetVisitedFmt(sLinkCharacterStyle);
-                    pNewLink->aINetFmt.SetINetFmt(sLinkCharacterStyle);
-                    if(!sLinkCharacterStyle.isEmpty())
-                    {
-                        sal_uInt16 nPoolId =
-                            SwStyleNameMapper::GetPoolIdFromUIName( sLinkCharacterStyle, nsSwGetPoolIdFromName::GET_POOLID_CHRFMT );
-                        pNewLink->aINetFmt.SetVisitedFmtId(nPoolId);
-                        pNewLink->aINetFmt.SetINetFmtId(nPoolId);
-                    }
-                    else
-                    {
-                        pNewLink->aINetFmt.SetVisitedFmtId(USHRT_MAX);
-                        pNewLink->aINetFmt.SetINetFmtId(USHRT_MAX);
-                    }
+                    const sal_uInt16 nPoolId =
+                            sLinkCharacterStyle.isEmpty()
+                            ? USHRT_MAX
+                            : SwStyleNameMapper::GetPoolIdFromUIName( sLinkCharacterStyle, nsSwGetPoolIdFromName::GET_POOLID_CHRFMT );
+                    pNewLink->aINetFmt.SetVisitedFmtAndId( sLinkCharacterStyle, nPoolId );
+                    pNewLink->aINetFmt.SetINetFmtAndId( sLinkCharacterStyle, nPoolId );
                     aLinkArr.push_back(pNewLink);
                     nLinkStartPosition = -1;
                     sLinkCharacterStyle = "";
diff --git a/sw/source/core/txtnode/fmtatr2.cxx b/sw/source/core/txtnode/fmtatr2.cxx
index cb3c33f..a6680ac 100644
--- a/sw/source/core/txtnode/fmtatr2.cxx
+++ b/sw/source/core/txtnode/fmtatr2.cxx
@@ -18,7 +18,8 @@
  */
 
 
-#include "hintids.hxx"
+#include <hintids.hxx>
+#include <poolfmt.hxx>
 #include "unomid.h"
 
 #include <basic/sbxvar.hxx>
@@ -178,43 +179,53 @@ bool SwFmtAutoFmt::PutValue( const uno::Any& , sal_uInt8 )
 *************************************************************************/
 
 SwFmtINetFmt::SwFmtINetFmt()
-    : SfxPoolItem( RES_TXTATR_INETFMT ),
-    pMacroTbl( 0 ),
-    pTxtAttr( 0 ),
-    nINetId( 0 ),
-    nVisitedId( 0 )
+    : SfxPoolItem( RES_TXTATR_INETFMT )
+    , msURL()
+    , msTargetFrame()
+    , msINetFmtName()
+    , msVisitedFmtName()
+    , msHyperlinkName()
+    , mpMacroTbl( 0 )
+    , mpTxtAttr( 0 )
+    , mnINetFmtId( 0 )
+    , mnVisitedFmtId( 0 )
 {}
 
 SwFmtINetFmt::SwFmtINetFmt( const OUString& rURL, const OUString& rTarget )
-    : SfxPoolItem( RES_TXTATR_INETFMT ),
-    aURL( rURL ),
-    aTargetFrame( rTarget ),
-    pMacroTbl( 0 ),
-    pTxtAttr( 0 ),
-    nINetId( 0 ),
-    nVisitedId( 0 )
+    : SfxPoolItem( RES_TXTATR_INETFMT )
+    , msURL( rURL )
+    , msTargetFrame( rTarget )
+    , msINetFmtName()
+    , msVisitedFmtName()
+    , msHyperlinkName()
+    , mpMacroTbl( 0 )
+    , mpTxtAttr( 0 )
+    , mnINetFmtId( RES_POOLCHR_INET_NORMAL )
+    , mnVisitedFmtId( RES_POOLCHR_INET_VISIT )
 {
+    SwStyleNameMapper::FillUIName( mnINetFmtId, msINetFmtName );
+    SwStyleNameMapper::FillUIName( mnVisitedFmtId, msVisitedFmtName );
 }
 
 SwFmtINetFmt::SwFmtINetFmt( const SwFmtINetFmt& rAttr )
-    : SfxPoolItem( RES_TXTATR_INETFMT ),
-    aURL( rAttr.GetValue() ),
-    aTargetFrame( rAttr.aTargetFrame ),
-    aINetFmt( rAttr.aINetFmt ),
-    aVisitedFmt( rAttr.aVisitedFmt ),
-    aName( rAttr.aName ),
-    pMacroTbl( 0 ),
-    pTxtAttr( 0 ),
-    nINetId( rAttr.nINetId ),
-    nVisitedId( rAttr.nVisitedId )
+    : SfxPoolItem( RES_TXTATR_INETFMT )
+    , msURL( rAttr.GetValue() )
+    , msTargetFrame( rAttr.msTargetFrame )
+    , msINetFmtName( rAttr.msINetFmtName )
+    , msVisitedFmtName( rAttr.msVisitedFmtName )
+    , msHyperlinkName( rAttr.msHyperlinkName )
+    , mpMacroTbl( 0 )
+    , mpTxtAttr( 0 )
+    , mnINetFmtId( rAttr.mnINetFmtId )
+    , mnVisitedFmtId( rAttr.mnVisitedFmtId )
 {
-    if( rAttr.GetMacroTbl() )
-        pMacroTbl = new SvxMacroTableDtor( *rAttr.GetMacroTbl() );
+    if ( rAttr.GetMacroTbl() )
+        mpMacroTbl = new SvxMacroTableDtor( *rAttr.GetMacroTbl() );
 }
 
 SwFmtINetFmt::~SwFmtINetFmt()
 {
-    delete pMacroTbl;
+    delete mpMacroTbl;
 }
 
 
@@ -223,24 +234,24 @@ int SwFmtINetFmt::operator==( const SfxPoolItem& rAttr ) const
 {
     OSL_ENSURE( SfxPoolItem::operator==( rAttr ), "keine gleichen Attribute" );
     bool bRet = SfxPoolItem::operator==( (SfxPoolItem&) rAttr )
-                && aURL == ((SwFmtINetFmt&)rAttr).aURL
-                && aName == ((SwFmtINetFmt&)rAttr).aName
-                && aTargetFrame == ((SwFmtINetFmt&)rAttr).aTargetFrame
-                && aINetFmt == ((SwFmtINetFmt&)rAttr).aINetFmt
-                && aVisitedFmt == ((SwFmtINetFmt&)rAttr).aVisitedFmt
-                && nINetId == ((SwFmtINetFmt&)rAttr).nINetId
-                && nVisitedId == ((SwFmtINetFmt&)rAttr).nVisitedId;
+                && msURL == ((SwFmtINetFmt&)rAttr).msURL
+                && msHyperlinkName == ((SwFmtINetFmt&)rAttr).msHyperlinkName
+                && msTargetFrame == ((SwFmtINetFmt&)rAttr).msTargetFrame
+                && msINetFmtName == ((SwFmtINetFmt&)rAttr).msINetFmtName
+                && msVisitedFmtName == ((SwFmtINetFmt&)rAttr).msVisitedFmtName
+                && mnINetFmtId == ((SwFmtINetFmt&)rAttr).mnINetFmtId
+                && mnVisitedFmtId == ((SwFmtINetFmt&)rAttr).mnVisitedFmtId;
 
     if( !bRet )
         return sal_False;
 
-    const SvxMacroTableDtor* pOther = ((SwFmtINetFmt&)rAttr).pMacroTbl;
-    if( !pMacroTbl )
+    const SvxMacroTableDtor* pOther = ((SwFmtINetFmt&)rAttr).mpMacroTbl;
+    if( !mpMacroTbl )
         return ( !pOther || pOther->empty() );
     if( !pOther )
-        return pMacroTbl->empty();
+        return mpMacroTbl->empty();
 
-    const SvxMacroTableDtor& rOwn = *pMacroTbl;
+    const SvxMacroTableDtor& rOwn = *mpMacroTbl;
     const SvxMacroTableDtor& rOther = *pOther;
 
     return rOwn == rOther;
@@ -259,23 +270,23 @@ void SwFmtINetFmt::SetMacroTbl( const SvxMacroTableDtor* pNewTbl )
 {
     if( pNewTbl )
     {
-        if( pMacroTbl )
-            *pMacroTbl = *pNewTbl;
+        if( mpMacroTbl )
+            *mpMacroTbl = *pNewTbl;
         else
-            pMacroTbl = new SvxMacroTableDtor( *pNewTbl );
+            mpMacroTbl = new SvxMacroTableDtor( *pNewTbl );
     }
     else
-        delete pMacroTbl, pMacroTbl = 0;
+        delete mpMacroTbl, mpMacroTbl = 0;
 }
 
 
 
 void SwFmtINetFmt::SetMacro( sal_uInt16 nEvent, const SvxMacro& rMacro )
 {
-    if( !pMacroTbl )
-        pMacroTbl = new SvxMacroTableDtor;
+    if( !mpMacroTbl )
+        mpMacroTbl = new SvxMacroTableDtor;
 
-     pMacroTbl->Insert( nEvent, rMacro );
+    mpMacroTbl->Insert( nEvent, rMacro );
 }
 
 
@@ -283,8 +294,8 @@ void SwFmtINetFmt::SetMacro( sal_uInt16 nEvent, const SvxMacro& rMacro )
 const SvxMacro* SwFmtINetFmt::GetMacro( sal_uInt16 nEvent ) const
 {
     const SvxMacro* pRet = 0;
-    if( pMacroTbl && pMacroTbl->IsKeyValid( nEvent ) )
-        pRet = pMacroTbl->Get( nEvent );
+    if( mpMacroTbl && mpMacroTbl->IsKeyValid( nEvent ) )
+        pRet = mpMacroTbl->Get( nEvent );
     return pRet;
 }
 
@@ -296,19 +307,19 @@ bool SwFmtINetFmt::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
     switch(nMemberId)
     {
         case MID_URL_URL:
-            rVal <<= aURL;
+            rVal <<= msURL;
         break;
         case MID_URL_TARGET:
-            rVal <<= aTargetFrame;
+            rVal <<= msTargetFrame;
         break;
         case MID_URL_HYPERLINKNAME:
-            rVal <<= aName;
+            rVal <<= msHyperlinkName;
         break;
         case MID_URL_VISITED_FMT:
         {
-            OUString sVal = aVisitedFmt;
-            if (sVal.isEmpty() && nVisitedId != 0)
-                SwStyleNameMapper::FillUIName(nVisitedId, sVal);
+            OUString sVal = msVisitedFmtName;
+            if (sVal.isEmpty() && mnVisitedFmtId != 0)
+                SwStyleNameMapper::FillUIName(mnVisitedFmtId, sVal);
             if (!sVal.isEmpty())
                 SwStyleNameMapper::FillProgName(sVal, sVal,
                         nsSwGetPoolIdFromName::GET_POOLID_CHRFMT, true);
@@ -317,9 +328,9 @@ bool SwFmtINetFmt::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
         break;
         case MID_URL_UNVISITED_FMT:
         {
-            OUString sVal = aINetFmt;
-            if (sVal.isEmpty() && nINetId != 0)
-                SwStyleNameMapper::FillUIName(nINetId, sVal);
+            OUString sVal = msVisitedFmtName;
+            if (sVal.isEmpty() && mnVisitedFmtId != 0)
+                SwStyleNameMapper::FillUIName(mnVisitedFmtId, sVal);
             if (!sVal.isEmpty())
                 SwStyleNameMapper::FillProgName(sVal, sVal,
                         nsSwGetPoolIdFromName::GET_POOLID_CHRFMT, true);
@@ -380,13 +391,13 @@ bool SwFmtINetFmt::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId  )
         switch(nMemberId)
         {
             case MID_URL_URL:
-                rVal >>= aURL;
+                rVal >>= msURL;
                 break;
             case MID_URL_TARGET:
-                rVal >>= aTargetFrame;
+                rVal >>= msTargetFrame;
                 break;
             case MID_URL_HYPERLINKNAME:
-                rVal >>= aName;
+                rVal >>= msHyperlinkName;
                 break;
             case MID_URL_VISITED_FMT:
             {
@@ -394,8 +405,8 @@ bool SwFmtINetFmt::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId  )
                 rVal >>= sVal;
                 OUString aString;
                 SwStyleNameMapper::FillUIName( sVal, aString, nsSwGetPoolIdFromName::GET_POOLID_CHRFMT, true );
-                aVisitedFmt = aString;
-                nVisitedId = SwStyleNameMapper::GetPoolIdFromUIName( aVisitedFmt,
+                msVisitedFmtName = aString;
+                mnVisitedFmtId = SwStyleNameMapper::GetPoolIdFromUIName( msVisitedFmtName,
                                                nsSwGetPoolIdFromName::GET_POOLID_CHRFMT );
             }
             break;
@@ -405,8 +416,8 @@ bool SwFmtINetFmt::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId  )
                 rVal >>= sVal;
                 OUString aString;
                 SwStyleNameMapper::FillUIName( sVal, aString, nsSwGetPoolIdFromName::GET_POOLID_CHRFMT, true );
-                aINetFmt = aString;
-                nINetId = SwStyleNameMapper::GetPoolIdFromUIName( aINetFmt, nsSwGetPoolIdFromName::GET_POOLID_CHRFMT );
+                msINetFmtName = aString;
+                mnINetFmtId = SwStyleNameMapper::GetPoolIdFromUIName( msINetFmtName, nsSwGetPoolIdFromName::GET_POOLID_CHRFMT );
             }
             break;
             default:
diff --git a/sw/source/core/txtnode/txtatr2.cxx b/sw/source/core/txtnode/txtatr2.cxx
index 85208c9..998c592 100644
--- a/sw/source/core/txtnode/txtatr2.cxx
+++ b/sw/source/core/txtnode/txtatr2.cxx
@@ -117,7 +117,7 @@ SwTxtINetFmt::SwTxtINetFmt( SwFmtINetFmt& rAttr,
     , m_bVisited( false )
     , m_bVisitedValid( false )
 {
-    rAttr.pTxtAttr  = this;
+    rAttr.mpTxtAttr  = this;
     SetCharFmtAttr( true );
 }
 
@@ -130,7 +130,7 @@ SwCharFmt* SwTxtINetFmt::GetCharFmt()
     const SwFmtINetFmt& rFmt = SwTxtAttrEnd::GetINetFmt();
     SwCharFmt* pRet = NULL;
 
-    if( !rFmt.GetValue().isEmpty() )
+    if (!rFmt.GetValue().isEmpty())
     {
         const SwDoc* pDoc = GetTxtNode().GetDoc();
         if( !IsVisitedValid() )
@@ -138,38 +138,38 @@ SwCharFmt* SwTxtINetFmt::GetCharFmt()
             SetVisited( pDoc->IsVisitedURL( rFmt.GetValue() ) );
             SetVisitedValid( true );
         }
-        sal_uInt16 nId;
-        const OUString rStr = IsVisited() ? rFmt.GetVisitedFmt()
-                                           : rFmt.GetINetFmt();
-        if( !rStr.isEmpty() )
-            nId = IsVisited() ? rFmt.GetVisitedFmtId() : rFmt.GetINetFmtId();
-        else
-            nId = static_cast<sal_uInt16>(IsVisited() ? RES_POOLCHR_INET_VISIT : RES_POOLCHR_INET_NORMAL);
+
+        const sal_uInt16 nId = IsVisited() ? rFmt.GetVisitedFmtId() : rFmt.GetINetFmtId();
+        const OUString& rStr = IsVisited() ? rFmt.GetVisitedFmt() : rFmt.GetINetFmt();
+        if (rStr.isEmpty())
+        {
+            OSL_ENSURE( false, "<SwTxtINetFmt::GetCharFmt()> - missing character format at hyperlink attribute");
+        }
 
         // JP 10.02.2000, Bug 72806: dont modify the doc for getting the
         //      correct charstyle.
         bool bResetMod = !pDoc->IsModified();
         Link aOle2Lnk;
-        if( bResetMod )
+        if ( bResetMod )
         {
             aOle2Lnk = pDoc->GetOle2Link();
-            ((SwDoc*)pDoc)->SetOle2Link( Link() );
+            ( (SwDoc*) pDoc )->SetOle2Link( Link() );
         }
 
         pRet = IsPoolUserFmt( nId )
-                ? ((SwDoc*)pDoc)->FindCharFmtByName( rStr )
-                : ((SwDoc*)pDoc)->GetCharFmtFromPool( nId );
+               ? ( (SwDoc*) pDoc )->FindCharFmtByName( rStr )
+               : ( (SwDoc*) pDoc )->GetCharFmtFromPool( nId );
 
-        if( bResetMod )
+        if ( bResetMod )
         {
-            ((SwDoc*)pDoc)->ResetModified();
-            ((SwDoc*)pDoc)->SetOle2Link( aOle2Lnk );
+            ( (SwDoc*) pDoc )->ResetModified();
+            ( (SwDoc*) pDoc )->SetOle2Link( aOle2Lnk );
         }
     }
 
-    if( pRet )
+    if ( pRet )
         pRet->Add( this );
-    else if( GetRegisteredIn() )
+    else if ( GetRegisteredIn() )
         GetRegisteredInNonConst()->Remove( this );
 
     return pRet;
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index 93f7653..42f1a8b 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -1627,12 +1627,12 @@ void WW8AttributeOutput::TextINetFormat( const SwFmtINetFmt& rINet )
 {
     if ( !rINet.GetValue().isEmpty() )
     {
-        sal_uInt16 nId;
-        const OUString rStr = rINet.GetINetFmt();
-        if ( !rStr.isEmpty() )
-            nId = rINet.GetINetFmtId();
-        else
-            nId = RES_POOLCHR_INET_NORMAL;
+        const sal_uInt16 nId = rINet.GetINetFmtId();
+        const OUString& rStr = rINet.GetINetFmt();
+        if (rStr.isEmpty())
+        {
+            OSL_ENSURE( false, "WW8AttributeOutput::TextINetFormat(..) - missing unvisited character format at hyperlink attribute" );
+        }
 
         const SwCharFmt* pFmt = IsPoolUserFmt( nId )
                         ? m_rWW8Export.pDoc->FindCharFmtByName( rStr )
diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx
index f0eaf85..5b88475 100644
--- a/sw/source/filter/ww8/ww8par5.cxx
+++ b/sw/source/filter/ww8/ww8par5.cxx
@@ -2076,13 +2076,11 @@ eF_ResT SwWW8ImplReader::Read_F_PgRef( WW8FieldDesc*, OUString& rStr )
             OUString sURL = OUString(INET_MARK_TOKEN) + sBookmarkName;
             const OUString sTarget;
             SwFmtINetFmt aURL( sURL, sTarget );
-            OUString sLinkStyle("Index Link");
-            sal_uInt16 nPoolId =
+            const OUString sLinkStyle("Index Link");
+            const sal_uInt16 nPoolId =
                 SwStyleNameMapper::GetPoolIdFromUIName( sLinkStyle, nsSwGetPoolIdFromName::GET_POOLID_CHRFMT );
-            aURL.SetVisitedFmt(sLinkStyle);
-            aURL.SetINetFmt(sLinkStyle);
-            aURL.SetVisitedFmtId(nPoolId);
-            aURL.SetINetFmtId(nPoolId);
+            aURL.SetVisitedFmtAndId( sLinkStyle, nPoolId);
+            aURL.SetINetFmtAndId( sLinkStyle, nPoolId );
             pCtrlStck->NewAttr( *pPaM->GetPoint(), aURL );
         }
         return FLD_TEXT;
@@ -3460,10 +3458,8 @@ eF_ResT SwWW8ImplReader::Read_F_Hyperlink( WW8FieldDesc* /*pF*/, OUString& rStr
         OUString sLinkStyle("Index Link");
         sal_uInt16 nPoolId =
             SwStyleNameMapper::GetPoolIdFromUIName( sLinkStyle, nsSwGetPoolIdFromName::GET_POOLID_CHRFMT );
-        aURL.SetVisitedFmt(sLinkStyle);
-        aURL.SetINetFmt(sLinkStyle);
-        aURL.SetVisitedFmtId(nPoolId);
-        aURL.SetINetFmtId(nPoolId);
+        aURL.SetVisitedFmtAndId( sLinkStyle, nPoolId );
+        aURL.SetINetFmtAndId( sLinkStyle, nPoolId );
     }
 
     //As an attribute this needs to be closed, and that'll happen from
diff --git a/sw/source/ui/chrdlg/chardlg.cxx b/sw/source/ui/chrdlg/chardlg.cxx
index 58c19ad..f5cf928 100644
--- a/sw/source/ui/chrdlg/chardlg.cxx
+++ b/sw/source/ui/chrdlg/chardlg.cxx
@@ -194,22 +194,29 @@ SwCharURLPage::~SwCharURLPage()
 void SwCharURLPage::Reset(const SfxItemSet& rSet)
 {
     const SfxPoolItem* pItem;
-    if(SFX_ITEM_SET == rSet.GetItemState(RES_TXTATR_INETFMT, sal_False, &pItem))
+    if ( SFX_ITEM_SET == rSet.GetItemState( RES_TXTATR_INETFMT, sal_False, &pItem ) )
     {
-        const SwFmtINetFmt* pINetFmt = (const SwFmtINetFmt*)pItem;
-        m_pURLED->SetText( INetURLObject::decode( pINetFmt->GetValue(),
-                                        INET_HEX_ESCAPE,
-                                           INetURLObject::DECODE_UNAMBIGUOUS,
-                                        RTL_TEXTENCODING_UTF8 ));
+        const SwFmtINetFmt* pINetFmt = (const SwFmtINetFmt*) pItem;
+        m_pURLED->SetText(INetURLObject::decode(pINetFmt->GetValue(),
+            INET_HEX_ESCAPE, INetURLObject::DECODE_UNAMBIGUOUS,
+            RTL_TEXTENCODING_UTF8));
         m_pURLED->SaveValue();
-        m_pNameED->SetText(pINetFmt->GetName());
+        m_pURLED->SetText(pINetFmt->GetName());
+
         OUString sEntry = pINetFmt->GetVisitedFmt();
         if (sEntry.isEmpty())
-            SwStyleNameMapper::FillUIName( RES_POOLCHR_INET_VISIT, sEntry );
-        m_pVisitedLB->SelectEntry(sEntry);
+        {
+            OSL_ENSURE( false, "<SwCharURLPage::Reset(..)> - missing visited character format at hyperlink attribute" );
+            SwStyleNameMapper::FillUIName(RES_POOLCHR_INET_VISIT, sEntry);
+        }
+        m_pVisitedLB->SelectEntry( sEntry );
+
         sEntry = pINetFmt->GetINetFmt();
         if (sEntry.isEmpty())
-            SwStyleNameMapper::FillUIName( RES_POOLCHR_INET_NORMAL, sEntry );
+        {
+            OSL_ENSURE( false, "<SwCharURLPage::Reset(..)> - missing unvisited character format at hyperlink attribute" );
+            SwStyleNameMapper::FillUIName(RES_POOLCHR_INET_NORMAL, sEntry);
+        }
         m_pNotVisitedLB->SelectEntry(sEntry);
 
         m_pTargetFrmLB->SetText(pINetFmt->GetTargetFrame());
@@ -251,13 +258,11 @@ sal_Bool SwCharURLPage::FillItemSet(SfxItemSet& rSet)
     // set valid settings first
     OUString sEntry = m_pVisitedLB->GetSelectEntry();
     sal_uInt16 nId = SwStyleNameMapper::GetPoolIdFromUIName( sEntry, nsSwGetPoolIdFromName::GET_POOLID_CHRFMT);
-    aINetFmt.SetVisitedFmtId(nId);
-    aINetFmt.SetVisitedFmt(nId == RES_POOLCHR_INET_VISIT ? aEmptyOUStr : sEntry);
+    aINetFmt.SetVisitedFmtAndId( sEntry, nId );
 
     sEntry = m_pNotVisitedLB->GetSelectEntry();
     nId = SwStyleNameMapper::GetPoolIdFromUIName( sEntry, nsSwGetPoolIdFromName::GET_POOLID_CHRFMT);
-    aINetFmt.SetINetFmtId( nId );
-    aINetFmt.SetINetFmt(nId == RES_POOLCHR_INET_NORMAL ? aEmptyOUStr : sEntry);
+    aINetFmt.SetINetFmtAndId( sEntry, nId );
 
     if( pINetItem && !pINetItem->GetMacroTable().empty() )
         aINetFmt.SetMacroTbl( &pINetItem->GetMacroTable() );
diff --git a/sw/source/ui/shells/txtattr.cxx b/sw/source/ui/shells/txtattr.cxx
index 706df62..0acaf93 100644
--- a/sw/source/ui/shells/txtattr.cxx
+++ b/sw/source/ui/shells/txtattr.cxx
@@ -179,37 +179,42 @@ void SwTextShell::ExecCharAttrArgs(SfxRequest &rReq)
     SwTxtFmtColl* pColl = 0;
 
     // Is only set if the whole paragraph is selected and AutoUpdateFmt is set.
-    if( rWrtSh.HasSelection() && rWrtSh.IsSelFullPara() )
+    if (rWrtSh.HasSelection() && rWrtSh.IsSelFullPara())
     {
         pColl = rWrtSh.GetCurTxtFmtColl();
-        if(pColl && !pColl->IsAutoUpdateFmt())
+        if ( pColl && !pColl->IsAutoUpdateFmt() )
             pColl = 0;
     }
     SfxItemPool& rPool = GetPool();
-    sal_uInt16 nWhich = rPool.GetWhich(nSlot);
-    switch ( nSlot )
+    sal_uInt16 nWhich = rPool.GetWhich( nSlot );
+    switch (nSlot)
     {
         case FN_TXTATR_INET:
         // Special treatment of the PoolId of the SwFmtInetFmt
         if(bArgs)
         {
-            const SfxPoolItem& rItem = pArgs->Get(nWhich );
+            const SfxPoolItem& rItem = pArgs->Get( nWhich );
 
-            SwFmtINetFmt aINetFmt((const SwFmtINetFmt&)rItem);
-            if( USHRT_MAX == aINetFmt.GetVisitedFmtId() )
+            SwFmtINetFmt aINetFmt( (const SwFmtINetFmt&) rItem );
+            if ( USHRT_MAX == aINetFmt.GetVisitedFmtId() )
             {
-                aINetFmt.SetVisitedFmtId(
-                        SwStyleNameMapper::GetPoolIdFromUIName( aINetFmt.GetVisitedFmt(), nsSwGetPoolIdFromName::GET_POOLID_CHRFMT));
+                OSL_ENSURE( false, "<SwTextShell::ExecCharAttrArgs(..)> - unexpected visited character format ID at hyperlink attribute" );
+                aINetFmt.SetVisitedFmtAndId(
+                        aINetFmt.GetVisitedFmt(),
+                        SwStyleNameMapper::GetPoolIdFromUIName( aINetFmt.GetVisitedFmt(), nsSwGetPoolIdFromName::GET_POOLID_CHRFMT ) );
             }
-            if( USHRT_MAX == aINetFmt.GetINetFmtId() )
+            if ( USHRT_MAX == aINetFmt.GetINetFmtId() )
             {
-                aINetFmt.SetINetFmtId(
-                        SwStyleNameMapper::GetPoolIdFromUIName( aINetFmt.GetINetFmt(), nsSwGetPoolIdFromName::GET_POOLID_CHRFMT));
+                OSL_ENSURE( false, "<SwTextShell::ExecCharAttrArgs(..)> - unexpected unvisited character format ID at hyperlink attribute" );
+                aINetFmt.SetINetFmtAndId(
+                        aINetFmt.GetINetFmt(),
+                        SwStyleNameMapper::GetPoolIdFromUIName( aINetFmt.GetINetFmt(), nsSwGetPoolIdFromName::GET_POOLID_CHRFMT ) );
             }
 
             if ( pColl )
                 pColl->SetFmtAttr( aINetFmt );
-            else rWrtSh.SetAttrItem( aINetFmt );
+            else
+                rWrtSh.SetAttrItem( aINetFmt );
             rReq.Done();
         }
         break;


More information about the Libreoffice-commits mailing list