Index: filter/inc/filter/msfilter/svdfppt.hxx =================================================================== --- filter/inc/filter/msfilter/svdfppt.hxx (revision 1348699) +++ filter/inc/filter/msfilter/svdfppt.hxx (working copy) @@ -870,6 +870,14 @@ struct PPTCharPropSet { + //when the bullet text has more than two color,next the text following with bullet has been set hyperlink. + //now,the bullet color should be set original hyperlink text's color + //so "mbHardHylinkOrigColor" hold the original hyperlink text's color. + sal_uInt32 mnHylinkOrigColor; + //the bullet text weather has a hyperlink. + sal_Bool mbIsHyperlink; + //the hyperlink text weather has a custom color. + sal_Bool mbHardHylinkOrigColor; sal_uInt32 mnOriginalTextPos; sal_uInt32 mnParagraph; Index: filter/source/msfilter/svdfppt.cxx =================================================================== --- filter/source/msfilter/svdfppt.cxx (revision 1348720) +++ filter/source/msfilter/svdfppt.cxx (working copy) @@ -4638,11 +4638,17 @@ mpFieldItem ( NULL ), pCharSet ( new ImplPPTCharPropSet ) { + mnHylinkOrigColor = 0; + mbIsHyperlink = 0; + mbHardHylinkOrigColor = 0; mnLanguage[ 0 ] = mnLanguage[ 1 ] = mnLanguage[ 2 ] = 0; } PPTCharPropSet::PPTCharPropSet( PPTCharPropSet& rCharPropSet ) { + mnHylinkOrigColor = rCharPropSet.mnHylinkOrigColor; + mbIsHyperlink = rCharPropSet.mbIsHyperlink; + mbHardHylinkOrigColor = rCharPropSet.mbHardHylinkOrigColor; pCharSet = rCharPropSet.pCharSet; pCharSet->mnRefCount++; @@ -4659,6 +4665,10 @@ { pCharSet = rCharPropSet.pCharSet; pCharSet->mnRefCount++; + + mnHylinkOrigColor = rCharPropSet.mnHylinkOrigColor; + mbIsHyperlink = rCharPropSet.mbIsHyperlink; + mbHardHylinkOrigColor = rCharPropSet.mbHardHylinkOrigColor; mnParagraph = nParagraph; mnOriginalTextPos = rCharPropSet.mnOriginalTextPos; @@ -6182,7 +6192,20 @@ { PPTPortionObj* pPortion = mpPortionList[ 0 ]; if ( pPortion ) - bIsHardAttribute = pPortion->GetAttrib( PPT_CharAttr_FontColor, nRetValue, nDestinationInstance ); + { + if (pPortion->mbIsHyperlink ) + { + if( pPortion->mbHardHylinkOrigColor ) + nRetValue = pPortion->mnHylinkOrigColor; + else + nRetValue = mrStyleSheet.mpCharSheet[ mnInstance ]->maCharLevel[ pParaSet->mnDepth ].mnFontColor; + bIsHardAttribute = 1; + } + else + { + bIsHardAttribute = pPortion->GetAttrib( PPT_CharAttr_FontColor, nRetValue, nDestinationInstance ); + } + } } else { @@ -7128,6 +7151,10 @@ const SvxURLField* pField = (const SvxURLField*)pFE->pField1->GetField(); + pCurrent->mbIsHyperlink=1; + pCurrent->mnHylinkOrigColor=pCurrent->pCharSet->mnColor; + pCurrent->mbHardHylinkOrigColor= ( ( pCurrent->pCharSet->mnAttrSet >>PPT_CharAttr_FontColor ) & 1)>0; + if ( pCurrent->mpFieldItem ) { pCurrent->SetColor( PPT_COLSCHEME_A_UND_HYPERLINK );