Index: editeng/source/editeng/impedit4.cxx =================================================================== --- editeng/source/editeng/impedit4.cxx (revision 1244143) +++ editeng/source/editeng/impedit4.cxx (working copy) @@ -1241,6 +1241,13 @@ EditSelection aSel( aPaM, aPaM ); DBG_ASSERT( !aSel.DbgIsBuggy( aEditDoc ), "InsertBibTextObject: Selektion kaput!(1)" ); + //#115580# + EditPaM aStart1PaM( aSel.Min().GetNode(), aSel.Min().GetIndex() ); + aSel = ImpInsertParaBreak( aSel ); + EditPaM aStart2PaM = aSel.Min(); + EditPaM aEnd1PaM( ImpInsertParaBreak( aSel.Max() ) ); + aEnd1PaM.GetNode()->SetStyleSheet( aStart1PaM.GetNode()->GetStyleSheet(), sal_False ); + sal_Bool bUsePortionInfo = sal_False; // sal_Bool bFields = sal_False; XParaPortionList* pPortionInfo = rTextObject.GetPortionInfo(); @@ -1270,6 +1277,17 @@ for ( sal_uInt16 n = 0; n < nContents; n++, nPara++ ) { ContentInfo* pC = rTextObject.GetContents().GetObject( n ); + + if ( bIsPasting ) //#115580# + { + if ( !n ) + aPaM = aStart2PaM; + //init node + aPaM.GetNode()->SetStyleSheet( aStart1PaM.GetNode()->GetStyleSheet(), sal_False ); + aPaM.GetNode()->GetContentAttribs().GetItems().ClearItem(); + aPaM.GetNode()->GetCharAttribs().Clear(); + } + sal_Bool bNewContent = aPaM.GetNode()->Len() ? sal_False: sal_True; sal_uInt16 nStartPos = aPaM.GetIndex(); @@ -1340,6 +1358,18 @@ // nur dann Style und ParaAttribs, wenn neuer Absatz, oder // komplett inneliegender... bParaAttribs = pC->GetParaAttribs().Count() ? sal_True : sal_False; + + if ( bIsPasting ) //#115580# + { + nPara = aEditDoc.GetPos( aPaM.GetNode() ); + if ( GetStyleSheetPool() && pC->GetStyle().Len() ) + { + SfxStyleSheet* pStyle = (SfxStyleSheet*)GetStyleSheetPool()->Find( pC->GetStyle(), pC->GetFamily() ); + DBG_ASSERT( pStyle, "InsertBinTextObject - Style not found!" ); + SetStyleSheet( nPara, pStyle ); + } + } + else if ( GetStyleSheetPool() && pC->GetStyle().Len() ) { SfxStyleSheet* pStyle = (SfxStyleSheet*)GetStyleSheetPool()->Find( pC->GetStyle(), pC->GetFamily() ); @@ -1412,6 +1442,12 @@ } #endif // !SVX_LIGHT + if ( bIsPasting ) //#115580# + { + AdjustParaAttribsByStyleSheet( aPaM.GetNode() ); + ParaAttribsToCharAttribs( aPaM.GetNode() ); + } + // Zeilenumbruch, wenn weitere folgen... if ( n < ( nContents-1) ) { @@ -1422,7 +1458,23 @@ } } - aSel.Max() = aPaM; + /* aSel.Max() = aPaM; */ //#115580# + + if ( bIsPasting ) + { + EditPaM aEnd2PaM( aPaM ); + + sal_Bool bSpecialBackward = aStart1PaM.GetNode()->Len() ? sal_False : sal_True; + + aSel.Min() = ImpConnectParagraphs( aStart1PaM.GetNode(), aStart2PaM.GetNode(), bSpecialBackward ); + bSpecialBackward = aEnd1PaM.GetNode()->Len() ? sal_True : sal_False; + + aSel.Max() = ImpConnectParagraphs( ( ( nContents == 1 ) ? aStart1PaM.GetNode() : aEnd2PaM.GetNode() ), + aEnd1PaM.GetNode(), bSpecialBackward ); + } + else + aSel.Max() = aPaM; + DBG_ASSERT( !aSel.DbgIsBuggy( aEditDoc ), "InsertBibTextObject: Selektion kaput!(1)" ); return aSel; } Index: editeng/source/editeng/impedit5.cxx =================================================================== --- editeng/source/editeng/impedit5.cxx (revision 1244143) +++ editeng/source/editeng/impedit5.cxx (working copy) @@ -813,6 +813,23 @@ } } +void ImpEditEngine::AdjustParaAttribsByStyleSheet( ContentNode* pNode ) //#115580# +{ + if ( !pNode ) + return; + + SfxStyleSheet* pStyle = pNode->GetStyleSheet(); + for ( sal_uInt16 nWhich = EE_PARA_START; nWhich < EE_CHAR_START && pStyle; nWhich++ ) + { + if ( pNode->GetContentAttribs().GetItems().GetItemState( nWhich ) == SFX_ITEM_ON ) + { + const SfxItemSet& rStyleAttribs = pStyle->GetItemSet(); + if ( rStyleAttribs.GetItemState( nWhich ) == SFX_ITEM_ON ) + pNode->GetContentAttribs().GetItems().ClearItem( nWhich ); + } + } +} + void ImpEditEngine::ParaAttribsToCharAttribs( ContentNode* pNode ) { pNode->GetCharAttribs().DeleteEmptyAttribs( GetEditDoc().GetItemPool() ); @@ -841,6 +858,8 @@ } bFormatted = sal_False; // Portion braucht hier nicht invalidiert werden, geschieht woanders. + if ( bIsPasting ) //#115580# + pNode->GetContentAttribs().GetItems().ClearItem(); } IdleFormattter::IdleFormattter() Index: editeng/source/editeng/impedit.hxx =================================================================== --- editeng/source/editeng/impedit.hxx (revision 1244143) +++ editeng/source/editeng/impedit.hxx (working copy) @@ -479,6 +479,7 @@ sal_Bool bFormatted; sal_Bool bInSelection; sal_Bool bIsInUndo; + sal_Bool bIsPasting; //#115580# sal_Bool bUpdate; sal_Bool bUndoEnabled; sal_Bool bOwnerOfRefDev; @@ -543,6 +544,7 @@ void SetParaAttrib( sal_uInt8 nFunc, EditSelection aSel, sal_uInt16 nValue ); sal_uInt16 GetParaAttrib( sal_uInt8 nFunc, EditSelection aSel ); void SetCharAttrib( EditSelection aSel, const SfxPoolItem& rItem ); + void AdjustParaAttribsByStyleSheet( ContentNode* pNode ); //#115580# void ParaAttribsToCharAttribs( ContentNode* pNode ); void GetCharAttribs( sal_uInt16 nPara, EECharAttribArray& rLst ) const; Index: editeng/source/editeng/eertfpar.cxx =================================================================== --- editeng/source/editeng/eertfpar.cxx (revision 1244143) +++ editeng/source/editeng/eertfpar.cxx (working copy) @@ -108,7 +108,7 @@ EditPaM aStart2PaM = aCurSel.Min(); // Sinnvoll oder nicht?: aStart2PaM.GetNode()->GetContentAttribs().GetItems().ClearItem(); - AddRTFDefaultValues( aStart2PaM, aStart2PaM ); + //AddRTFDefaultValues( aStart2PaM, aStart2PaM ); //#115580# EditPaM aEnd1PaM( pImpEditEngine->ImpInsertParaBreak( aCurSel.Max() ) ); // aCurCel zeigt jetzt auf den Zwischenraum @@ -136,6 +136,47 @@ aSel.Min() = EditPaM( pPrevNode, pPrevNode->Len() ); aSel.Max() = EditPaM( pCurNode, 0 ); aCurSel.Max() = pImpEditEngine->ImpDeleteSelection( aSel ); + //#115580# added at 2011/11/28 start + sal_uInt16 nStart2 = pImpEditEngine->GetEditDoc().GetPos( aStart2PaM.GetNode() ); + sal_uInt16 nEnd2 = pImpEditEngine->GetEditDoc().GetPos( aCurSel.Max().GetNode() ); + for ( sal_uInt16 n = nStart2; n <= nEnd2; n++ ) + { + ContentNode* pTmpNode = pImpEditEngine->GetEditDoc().SaveGetObject( n ); + if ( pTmpNode ) + { + {//if ContentAttribs of node has no font info, add default font attribs into it. + Size aSz( 12, 0 ); + MapMode aPntMode( MAP_POINT ); + MapMode _aEditMapMode( pImpEditEngine->GetRefDevice()->GetMapMode().GetMapUnit() ); + aSz = pImpEditEngine->GetRefDevice()->LogicToLogic( aSz, &aPntMode, &_aEditMapMode ); + + SfxItemSet& rSet = pTmpNode->GetContentAttribs().GetItems(); + SvxFont& rFont = pTmpNode->GetCharAttribs().GetDefFont(); + SvxFont& rFontCJK = pTmpNode->GetCharAttribs().GetDefFontCJK(); + SvxFont& rFontCTL = pTmpNode->GetCharAttribs().GetDefFontCTL(); + + if ( rSet.GetItemState( EE_CHAR_FONTINFO ) != SFX_ITEM_ON ) + rSet.Put( SvxFontItem( rFont.GetFamily(), rFont.GetName(), XubString(), + rFont.GetPitch(), rFont.GetCharSet(), EE_CHAR_FONTINFO ) ); + if ( rSet.GetItemState( EE_CHAR_FONTINFO_CJK ) != SFX_ITEM_ON ) + rSet.Put( SvxFontItem( rFontCJK.GetFamily(), rFontCJK.GetName(), XubString(), + rFontCJK.GetPitch(), rFontCJK.GetCharSet(), EE_CHAR_FONTINFO_CJK ) ); + if ( rSet.GetItemState( EE_CHAR_FONTINFO_CTL ) != SFX_ITEM_ON ) + rSet.Put( SvxFontItem( rFontCTL.GetFamily(), rFontCTL.GetName(), XubString(), + rFontCTL.GetPitch(), rFontCTL.GetCharSet(), EE_CHAR_FONTINFO_CTL ) ); + + if ( rSet.GetItemState( EE_CHAR_FONTHEIGHT ) != SFX_ITEM_ON ) + rSet.Put( SvxFontHeightItem( aSz.Width(), 100, EE_CHAR_FONTHEIGHT ) ); + if ( rSet.GetItemState( EE_CHAR_FONTHEIGHT_CJK ) != SFX_ITEM_ON ) + rSet.Put( SvxFontHeightItem( aSz.Width(), 100, EE_CHAR_FONTHEIGHT_CJK ) ); + if ( rSet.GetItemState( EE_CHAR_FONTHEIGHT_CTL ) != SFX_ITEM_ON ) + rSet.Put( SvxFontHeightItem( aSz.Width(), 100, EE_CHAR_FONTHEIGHT_CTL ) ); + } + + pImpEditEngine->AdjustParaAttribsByStyleSheet( pTmpNode ); + pImpEditEngine->ParaAttribsToCharAttribs( pTmpNode ); + } + } } EditPaM aEnd2PaM( aCurSel.Max() ); //AddRTFDefaultValues( aStart2PaM, aEnd2PaM ); @@ -145,14 +186,16 @@ // => Zeichenattribute machen. sal_Bool bSpecialBackward = aStart1PaM.GetNode()->Len() ? sal_False : sal_True; - if ( bOnlyOnePara || aStart1PaM.GetNode()->Len() ) - pImpEditEngine->ParaAttribsToCharAttribs( aStart2PaM.GetNode() ); + /* if ( bOnlyOnePara || aStart1PaM.GetNode()->Len() ) //#115580# + pImpEditEngine->ParaAttribsToCharAttribs( aStart2PaM.GetNode() ); */ + // end aCurSel.Min() = pImpEditEngine->ImpConnectParagraphs( aStart1PaM.GetNode(), aStart2PaM.GetNode(), bSpecialBackward ); bSpecialBackward = aEnd1PaM.GetNode()->Len() ? sal_True : sal_False; // wenn bOnlyOnePara, dann ist der Node beim Connect verschwunden. - if ( !bOnlyOnePara && aEnd1PaM.GetNode()->Len() ) - pImpEditEngine->ParaAttribsToCharAttribs( aEnd2PaM.GetNode() ); + /* if ( !bOnlyOnePara && aEnd1PaM.GetNode()->Len() ) //#115580# + pImpEditEngine->ParaAttribsToCharAttribs( aEnd2PaM.GetNode() ); */ + // end aCurSel.Max() = pImpEditEngine->ImpConnectParagraphs( ( bOnlyOnePara ? aStart1PaM.GetNode() : aEnd2PaM.GetNode() ), aEnd1PaM.GetNode(), bSpecialBackward ); Index: editeng/source/editeng/editdoc.hxx =================================================================== --- editeng/source/editeng/editdoc.hxx (revision 1244143) +++ editeng/source/editeng/editdoc.hxx (working copy) @@ -202,7 +202,9 @@ { private: CharAttribArray aAttribs; - SvxFont aDefFont; // schneller, als jedesmal vom Pool! + SvxFont aDefFont; // schneller, als jedesmal vom Pool! + SvxFont aDefFontCJK; //#115580# + SvxFont aDefFontCTL; sal_Bool bHasEmptyAttribs; CharAttribList( const CharAttribList& ) {;} @@ -228,6 +230,8 @@ void InsertAttrib( EditCharAttrib* pAttrib ); SvxFont& GetDefFont() { return aDefFont; } + SvxFont& GetDefFontCJK() { return aDefFontCJK; } //#115580# + SvxFont& GetDefFontCTL() { return aDefFontCTL; } sal_Bool HasEmptyAttribs() const { return bHasEmptyAttribs; } sal_Bool& HasEmptyAttribs() { return bHasEmptyAttribs; } @@ -451,7 +455,7 @@ sal_uInt16 nEndPortion; sal_uInt16 nHeight; // Gesamthoehe der Zeile sal_uInt16 nTxtHeight; // Reine Texthoehe - sal_uInt16 nCrsrHeight; // Bei Konturfluss hohe Zeilen => Cursor zu gro�. + sal_uInt16 nCrsrHeight; // Bei Konturfluss hohe Zeilen => Cursor zu gro� sal_uInt16 nMaxAscent; sal_Bool bHangingPunctuation; sal_Bool bInvalid; // fuer geschickte Formatierung Index: editeng/source/editeng/editdoc.cxx =================================================================== --- editeng/source/editeng/editdoc.cxx (revision 1244143) +++ editeng/source/editeng/editdoc.cxx (working copy) @@ -1066,12 +1066,27 @@ { // Erst alle Informationen aus dem Style verwenden... SfxStyleSheet* pS = aContentAttribs.GetStyleSheet(); - if ( pS ) - CreateFont( GetCharAttribs().GetDefFont(), pS->GetItemSet() ); - + /* if ( pS ) //#115580# + CreateFont( GetCharAttribs().GetDefFont(), pS->GetItemSet() ); + // ... dann die harte Absatzformatierung rueberbuegeln... CreateFont( GetCharAttribs().GetDefFont(), - GetContentAttribs().GetItems(), pS == NULL ); + GetContentAttribs().GetItems(), pS == NULL ); */ + + SvxFont& rFont = GetCharAttribs().GetDefFont(); + SvxFont& rFontCJK = GetCharAttribs().GetDefFontCJK(); + SvxFont& rFontCTL = GetCharAttribs().GetDefFontCTL(); + + if ( pS ) + { + CreateFont( rFont, pS->GetItemSet(), sal_True, i18n::ScriptType::LATIN ); + CreateFont( rFontCJK, pS->GetItemSet(), sal_True, i18n::ScriptType::ASIAN ); + CreateFont( rFontCTL, pS->GetItemSet(), sal_True, i18n::ScriptType::COMPLEX ); + } + + CreateFont( rFont, GetContentAttribs().GetItems(), pS == NULL, i18n::ScriptType::LATIN ); + CreateFont( rFontCJK, GetContentAttribs().GetItems(), pS == NULL, i18n::ScriptType::ASIAN ); + CreateFont( rFontCTL, GetContentAttribs().GetItems(), pS == NULL, i18n::ScriptType::COMPLEX ); } void ContentNode::SetStyleSheet( SfxStyleSheet* pS, const SvxFont& rFontFromStyle ) @@ -1448,7 +1463,7 @@ { ContentNode* pNode = GetObject( nNode ); nLen += pNode->Len(); - // Felder k�nnen laenger sein als der Platzhalter im Node. + // Felder k???nnen laenger sein als der Platzhalter im Node. const CharAttribArray& rAttrs = pNode->GetCharAttribs().GetAttribs(); for ( sal_uInt16 nAttr = rAttrs.Count(); nAttr; ) { @@ -1560,6 +1575,9 @@ // Den Default-Font kopieren pNode->GetCharAttribs().GetDefFont() = aPaM.GetNode()->GetCharAttribs().GetDefFont(); + //#115580# start + pNode->GetCharAttribs().GetDefFontCJK() = aPaM.GetNode()->GetCharAttribs().GetDefFontCJK(); + pNode->GetCharAttribs().GetDefFontCTL() = aPaM.GetNode()->GetCharAttribs().GetDefFontCTL(); SfxStyleSheet* pStyle = aPaM.GetNode()->GetStyleSheet(); if ( pStyle ) { Index: editeng/source/editeng/impedit2.cxx =================================================================== --- editeng/source/editeng/impedit2.cxx (revision 1244143) +++ editeng/source/editeng/impedit2.cxx (working copy) @@ -133,6 +133,7 @@ bOwnerOfRefDev = sal_False; bDowning = sal_False; bIsInUndo = sal_False; + bIsPasting = sal_False; //#115580# bIsFormatting = sal_False; bFormatted = sal_False; bUpdate = sal_True; @@ -3701,6 +3702,7 @@ if ( rxDataObj.is() ) { + bIsPasting = sal_True; //#115580# datatransfer::DataFlavor aFlavor; sal_Bool bDone = sal_False; @@ -3791,6 +3793,7 @@ } } } + bIsPasting = sal_False; //#115580# } return aNewSelection; Index: sw/source/ui/app/docshini.cxx =================================================================== --- sw/source/ui/app/docshini.cxx (revision 1244143) +++ sw/source/ui/app/docshini.cxx (working copy) @@ -358,6 +358,145 @@ return bRet; } +//#115580# When creating a new document, if needed, set the default +// font and languague attributes. +void SwDocShell::InitDefaultFontAttr( SwDoc* pDoc ) +{ + sal_uInt16 aFontWhich[] = + { + RES_CHRATR_FONT, + RES_CHRATR_CJK_FONT, + RES_CHRATR_CTL_FONT + }; + sal_uInt16 aFontHeightWhich[] = + { + RES_CHRATR_FONTSIZE, + RES_CHRATR_CJK_FONTSIZE, + RES_CHRATR_CTL_FONTSIZE + }; + sal_uInt16 aFontIds[] = + { + FONT_STANDARD, + FONT_STANDARD_CJK, + FONT_STANDARD_CTL + }; + sal_uInt16 nFontTypes[] = + { + DEFAULTFONT_LATIN_TEXT, + DEFAULTFONT_CJK_TEXT, + DEFAULTFONT_CTL_TEXT + }; + + sal_uInt16 aLangWhich[] = + { + RES_CHRATR_LANGUAGE, + RES_CHRATR_CJK_LANGUAGE, + RES_CHRATR_CTL_LANGUAGE + }; + sal_uInt16 aLangTypes[] = + { + LANGUAGE_ENGLISH_US, + LANGUAGE_ENGLISH_US, + LANGUAGE_ARABIC_SAUDI_ARABIA + }; + + SwStdFontConfig* pStdFont = SW_MOD()->GetStdFontConfig(); + SfxPrinter* pPrt = pDoc->getPrinter( false ); + String sEntry; + + for(sal_uInt8 i = 0; i < 3; i++) + { + sal_uInt16 nFontWhich = aFontWhich[i]; + sal_uInt16 nFontId = aFontIds[i]; + SvxFontItem* pFontItem = 0; + const SvxLanguageItem& rLang = (const SvxLanguageItem&)pDoc->GetDefault( aLangWhich[i] ); + LanguageType eLanguage = rLang.GetLanguage(); + if ( (eLanguage == LANGUAGE_DONTKNOW) || (eLanguage == LANGUAGE_NONE) ) + eLanguage = aLangTypes[i]; + { + if ( i == 0 ) + {//At present, just supports for the following languages: english, french and german. + LanguageType eUiLanguage = Application::GetSettings().GetUILanguage(); + switch( eUiLanguage ) + { + case LANGUAGE_ENGLISH_US: + case LANGUAGE_FRENCH: + case LANGUAGE_FRENCH_BELGIAN: + case LANGUAGE_FRENCH_CAMEROON: + case LANGUAGE_FRENCH_CANADIAN: + case LANGUAGE_FRENCH_COTE_D_IVOIRE: + case LANGUAGE_FRENCH_HAITI: + case LANGUAGE_FRENCH_LUXEMBOURG: + case LANGUAGE_FRENCH_MALI: + case LANGUAGE_FRENCH_MONACO: + case LANGUAGE_FRENCH_MOROCCO: + case LANGUAGE_FRENCH_NORTH_AFRICA: + case LANGUAGE_FRENCH_REUNION: + case LANGUAGE_FRENCH_SENEGAL: + case LANGUAGE_FRENCH_SWISS: + case LANGUAGE_FRENCH_WEST_INDIES: + case LANGUAGE_FRENCH_ZAIRE: + case LANGUAGE_GERMAN: + case LANGUAGE_GERMAN_AUSTRIAN: + case LANGUAGE_GERMAN_LIECHTENSTEIN: + case LANGUAGE_GERMAN_LUXEMBOURG: + case LANGUAGE_GERMAN_SWISS: + eLanguage = eUiLanguage; + break; + + } + } + + if ( i == 2 ) //CTL,just supports for HINDI and ARABIC_SAUDI_ARABIA + { + LanguageType eUiLanguage = Application::GetSettings().GetUILanguage(); + switch( eUiLanguage ) + { + case LANGUAGE_HINDI: + eLanguage = eUiLanguage; + break; + + } + } + + if ( i == 1 ) //CJK + { + LanguageType eUiLanguage = Application::GetSettings().GetUILanguage(); + switch( eUiLanguage ) + { + case LANGUAGE_KOREAN: + case LANGUAGE_KOREAN_JOHAB: + case LANGUAGE_CHINESE: + case LANGUAGE_CHINESE_HONGKONG: + case LANGUAGE_CHINESE_MACAU: + case LANGUAGE_CHINESE_SIMPLIFIED: + case LANGUAGE_CHINESE_SINGAPORE: + case LANGUAGE_CHINESE_TRADITIONAL: + case LANGUAGE_JAPANESE: + eLanguage = eUiLanguage; + break; + } + } + + Font aLangDefFont = OutputDevice::GetDefaultFont( + nFontTypes[i], + eLanguage, + DEFAULTFONT_FLAGS_ONLYONE ); + pFontItem = new SvxFontItem(aLangDefFont.GetFamily(), aLangDefFont.GetName(), + aEmptyStr, aLangDefFont.GetPitch(), aLangDefFont.GetCharSet(), nFontWhich); + } + + pDoc->SetDefault(*pFontItem); + delete pFontItem; + + sal_Int32 nFontHeight = pStdFont->GetFontHeight( FONT_STANDARD, i, eLanguage ); + if(nFontHeight <= 0) + nFontHeight = pStdFont->GetDefaultHeightFor( nFontId, eLanguage ); + pDoc->SetDefault(SvxFontHeightItem( nFontHeight, 100, aFontHeightWhich[i] )); + pDoc->SetDefault( SvxLanguageItem( eLanguage, aLangWhich[i] ) ); + } +} + /*-------------------------------------------------------------------- Beschreibung: Ctor mit SfxCreateMode ????? --------------------------------------------------------------------*/ Index: sw/source/ui/dochdl/swdtflvr.cxx =================================================================== --- sw/source/ui/dochdl/swdtflvr.cxx (revision 1244143) +++ sw/source/ui/dochdl/swdtflvr.cxx (working copy) @@ -838,6 +838,8 @@ SwDoc *const pTmpDoc = lcl_GetDoc(*pClpDocFac); + SwDocShell::InitDefaultFontAttr( pTmpDoc ); //#115580# + pTmpDoc->LockExpFlds(); // nie die Felder updaten - Text so belassen pWrtShell->Copy( pTmpDoc ); Index: sw/inc/docsh.hxx =================================================================== --- sw/inc/docsh.hxx (revision 1244143) +++ sw/inc/docsh.hxx (working copy) @@ -147,6 +147,8 @@ static rtl::OUString GetEventName( sal_Int32 nId ); + static void InitDefaultFontAttr( SwDoc* pDoc ); //#115580# added at 2011/11/28 + //Das Doc wird fuer SO-Datenaustausch benoetigt! SwDocShell( SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED ); SwDocShell( const sal_uInt64 i_nSfxCreationFlags );