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; }
const SwTxtINetFmt* GetTxtINetFmt() const
{
return mpTxtAttr;
}
SwTxtINetFmt* GetTxtINetFmt()
{
return mpTxtAttr;
}
OUString GetValue() const { return aURL; }
const OUString& GetValue() const
{
return msURL;
}
OUString GetName() const { return aName; }
void SetName( const OUString& rNm ) { aName = rNm; }
const OUString& GetName() const
{
return msHyperlinkName;
}
void SetName( const OUString& rNm )
{
msHyperlinkName = rNm;
}
OUString GetTargetFrame() const { return aTargetFrame; }
const OUString& GetTargetFrame() const
{
return msTargetFrame;
}
OUString GetINetFmt() const { return aINetFmt; }
void SetINetFmt( const OUString& rNm ) { aINetFmt = rNm; }
void SetINetFmtAndId(
const OUString& rNm,
const sal_uInt16 nId )
{
msINetFmtName = rNm;
mnINetFmtId = nId;
}
OUString GetVisitedFmt() const { return aVisitedFmt; }
void SetVisitedFmt( const OUString& rNm ) { aVisitedFmt = rNm; }
const OUString& GetINetFmt() const
{
return msINetFmtName;
}
sal_uInt16 GetINetFmtId() const { return nINetId; }
void SetINetFmtId( sal_uInt16 nNew ) { nINetId = nNew; }
sal_uInt16 GetINetFmtId() const
{
return mnINetFmtId;
}
sal_uInt16 GetVisitedFmtId() const { return nVisitedId; }
void SetVisitedFmtId( sal_uInt16 nNew ) { nVisitedId = nNew; }
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;