diff options
author | Release Engineers <releng@openoffice.org> | 2009-05-06 13:20:55 +0000 |
---|---|---|
committer | Release Engineers <releng@openoffice.org> | 2009-05-06 13:20:55 +0000 |
commit | e9da29679bce3b544add9233a4aca2b19b78da1a (patch) | |
tree | d7b04f6d50479fccfd1adc411e451910fe360007 /sw | |
parent | cf1aa12f1484595899cd2793bca56b47eb53a0de (diff) |
CWS-TOOLING: integrate CWS os127
2009-04-27 15:37:53 +0200 hde r271284 : i101363
2009-04-27 11:21:04 +0200 hde r271256 : #i101363
2009-03-26 12:56:13 +0100 os r270070 : #i97437# call ErrorHandler if necessary
2009-03-17 14:47:12 +0100 os r269609 : CWS-TOOLING: rebase CWS os127 to trunk@269297 (milestone: DEV300:m43)
2009-03-16 11:45:30 +0100 os r269516 : #i97471# SwDrawTextShell::Init(): mouse double click and key input in group objects at the same time: prevent crash
2009-03-12 12:02:45 +0100 os r269381 : #i100069# label Herma 5116 added
2009-03-12 12:01:21 +0100 os r269380 : #i100069# label description fixed
2009-02-16 15:10:22 +0100 os r267817 : #i96791# mark label names with x-no-translate
2009-01-26 15:41:13 +0100 os r266932 : #i97572# selection should not be kill in update of a TOX
2009-01-22 15:17:37 +0100 os r266719 : #i97850# reconversion patch applied
2009-01-22 15:01:00 +0100 os r266717 : #i98023# enable loading from InputStream
2009-01-21 16:04:52 +0100 os r266679 : #97667# names from database column: keep dots and extensions
2009-01-21 15:58:03 +0100 os r266678 : #i97577# disable address list access if csv-file has been removed
2009-01-21 12:47:19 +0100 os r266658 : #i97577# disable address list access if csv-file has been removed
2009-01-19 14:37:03 +0100 os r266499 : #i97437# catch exceptions in storeToURL
2009-01-19 13:54:44 +0100 os r266494 : #i98237# SwRVPMark removed
Diffstat (limited to 'sw')
-rw-r--r-- | sw/inc/swunohelper.hxx | 2 | ||||
-rw-r--r-- | sw/source/core/inc/rvp_mark.hxx | 46 | ||||
-rw-r--r-- | sw/source/core/txtnode/fntcache.cxx | 38 | ||||
-rw-r--r-- | sw/source/ui/dbui/addresslistdialog.cxx | 12 | ||||
-rw-r--r-- | sw/source/ui/dbui/dbmgr.cxx | 11 | ||||
-rw-r--r-- | sw/source/ui/dbui/mmoutputpage.cxx | 40 | ||||
-rw-r--r-- | sw/source/ui/docvw/edtwin.cxx | 77 | ||||
-rw-r--r-- | sw/source/ui/envelp/mailmrge.cxx | 2 | ||||
-rw-r--r-- | sw/source/ui/index/toxmgr.cxx | 2 | ||||
-rw-r--r-- | sw/source/ui/shells/drwtxtsh.cxx | 3 |
10 files changed, 117 insertions, 116 deletions
diff --git a/sw/inc/swunohelper.hxx b/sw/inc/swunohelper.hxx index 2a23f487bc0e..ebf27999b0aa 100644 --- a/sw/inc/swunohelper.hxx +++ b/sw/inc/swunohelper.hxx @@ -75,7 +75,7 @@ BOOL UCB_GetFileListOfFolder( const String& rURL, SvStrings& rList, SvPtrarr* pDateTimeList = 0 ); // is the URL an existing file? -BOOL UCB_IsFile( const String& rURL ); +SW_DLLPUBLIC BOOL UCB_IsFile( const String& rURL ); // is the URL a existing directory? BOOL UCB_IsDirectory( const String& rURL ); diff --git a/sw/source/core/inc/rvp_mark.hxx b/sw/source/core/inc/rvp_mark.hxx deleted file mode 100644 index 3c72a2ecfeb2..000000000000 --- a/sw/source/core/inc/rvp_mark.hxx +++ /dev/null @@ -1,46 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: rvp_mark.hxx,v $ - * $Revision: 1.3 $ - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _RVP_MARK_HXX -#define _RVP_MARK_HXX - -class OutputDevice; -class SwRVPMarker -{ - const OutputDevice *pOutp; -public: - SwRVPMarker( const OutputDevice* pOut ) : pOutp( pOut ) - { SwRVPMarker::Mark( pOutp ); } - ~SwRVPMarker() { SwRVPMarker::Mark( pOutp ); } - static void Mark( const OutputDevice* pOut ); -}; - - -#endif //_RVP_MARK_HXX diff --git a/sw/source/core/txtnode/fntcache.cxx b/sw/source/core/txtnode/fntcache.cxx index af0e0137af86..d58236da16b9 100644 --- a/sw/source/core/txtnode/fntcache.cxx +++ b/sw/source/core/txtnode/fntcache.cxx @@ -74,10 +74,6 @@ #ifndef _POOLFMT_HRC #include <poolfmt.hrc> #endif -// Enable this to use the helpclass SwRVPMark -#if OSL_DEBUG_LEVEL > 1 -#include <rvp_mark.hxx> -#endif using namespace ::com::sun::star; @@ -110,28 +106,6 @@ USHORT GetDefaultFontHeight( SwDrawTextInfo &rInf ) } -#ifdef _RVP_MARK_HXX - -void SwRVPMarker::Mark( const OutputDevice* pOut ) -{ - if( pOut ) - { - Color aOldCol = pOut->GetLineColor(); - Color aBlack = Color( COL_BLACK ); - if( aOldCol != aBlack ) - { - ((OutputDevice*)pOut)->SetLineColor( aBlack ); - ((OutputDevice*)pOut)->DrawChord( Rectangle(0,1,0,1), - Point(), Point() ); - ((OutputDevice*)pOut)->SetLineColor( aOldCol ); - } - else - ((OutputDevice*)pOut)->DrawChord( Rectangle(0,1,0,1), - Point(), Point() ); - } -} - -#endif /************************************************************************* |* @@ -938,10 +912,10 @@ static void lcl_DrawLineForWrongListData( if (rInf.GetOut().GetConnectMetaFile()) rInf.GetOut().Push(); - const Color aCol( rInf.GetOut().GetLineColor() ); + const Color aCol( rInf.GetOut().GetTextLineColor() ); const BOOL bColSave = aCol != aLineColor; if (bColSave) - rInf.GetOut().SetLineColor( aLineColor ); + rInf.GetOut().SetTextLineColor( aLineColor ); // iterate over all ranges stored in the respective SwWrongList do @@ -1012,7 +986,7 @@ static void lcl_DrawLineForWrongListData( while (nWrLen && pWList->Check( nStart, nWrLen )); if (bColSave) - rInf.GetOut().SetLineColor( aCol ); + rInf.GetOut().SetTextLineColor( aCol ); if (rInf.GetOut().GetConnectMetaFile()) rInf.GetOut().Pop(); @@ -1932,10 +1906,10 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf ) WRONG_SHOW_MEDIUM < nHght ? WAVE_NORMAL : ( WRONG_SHOW_SMALL < nHght ? WAVE_SMALL : WAVE_FLAT ); - Color aCol( rInf.GetOut().GetLineColor() ); + Color aCol( rInf.GetOut().GetTextLineColor() ); BOOL bColSave = aCol != *pWaveCol; if ( bColSave ) - rInf.GetOut().SetLineColor( *pWaveCol ); + rInf.GetOut().SetTextLineColor( *pWaveCol ); Point aEnd; long nKernVal = pKernArray[ USHORT( rInf.GetLen() - 1 ) ]; @@ -1982,7 +1956,7 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf ) rInf.GetOut().DrawWaveLine( aCurrPos, aEnd, nWave ); if ( bColSave ) - rInf.GetOut().SetLineColor( aCol ); + rInf.GetOut().SetTextLineColor( aCol ); if ( rInf.GetOut().GetConnectMetaFile() ) rInf.GetOut().Pop(); diff --git a/sw/source/ui/dbui/addresslistdialog.cxx b/sw/source/ui/dbui/addresslistdialog.cxx index b68bdc0e923a..91248fa1e422 100644 --- a/sw/source/ui/dbui/addresslistdialog.cxx +++ b/sw/source/ui/dbui/addresslistdialog.cxx @@ -68,7 +68,7 @@ #include <swunohelper.hxx> #include <vcl/waitobj.hxx> #include <svtools/pathoptions.hxx> - +#include <svtools/urihelper.hxx> #include <addresslistdialog.hrc> #include <dbui.hrc> @@ -145,6 +145,8 @@ struct AddressUserData_Impl if(!sCharSet.compareToAscii( cUTF8 )) { sURL = String(sDBURL).Copy( 10 ); + //#i97577# at this point the 'URL' can also be a file name! + sURL = URIHelper::SmartRel2Abs( INetURLObject(), sURL ); sURL += C2U("/"); sURL += aFilters[0]; sURL += C2U("."); @@ -269,6 +271,7 @@ SwAddressListDialog::SwAddressListDialog(SwMailMergeAddressBlockPage* pParent) : m_xDBContext->getByName(pNames[nName]) >>= xSourceProperties; pUserData->sURL = lcl_getFlatURL( xSourceProperties ); bEnableEdit = pUserData->sURL.getLength() > 0 && + SWUnoHelper::UCB_IsFile( pUserData->sURL ) && //#i97577# !SWUnoHelper::UCB_IsReadOnlyFileName( pUserData->sURL ); } catch(const uno::Exception& ) @@ -553,6 +556,7 @@ IMPL_STATIC_LINK(SwAddressListDialog, StaticListBoxSelectHdl_Impl, SvLBoxEntry*, pThis->m_aListLB.SetEntryText(String(), pSelect, ITEMID_TABLE - 1); } pThis->m_aEditPB.Enable(pUserData && pUserData->sURL.getLength() && + SWUnoHelper::UCB_IsFile( pUserData->sURL ) && //#i97577# !SWUnoHelper::UCB_IsReadOnlyFileName( pUserData->sURL ) ); pThis->m_bInSelectHdl = false; pThis->LeaveWait(); @@ -638,11 +642,15 @@ void SwAddressListDialog::DetectTablesAndQueries( m_xDBContext->getByName(m_aDBData.sDataSource) >>= xSourceProperties; pUserData->sURL = lcl_getFlatURL( xSourceProperties ); - m_aListLB.SetEntryText(m_aDBData.sCommand, pSelect, ITEMID_TABLE - 1); pUserData->xColumnsSupplier = SwNewDBMgr::GetColumnSupplier(pUserData->xConnection, m_aDBData.sCommand, m_aDBData.nCommandType == CommandType::TABLE ? SW_DB_SELECT_TABLE : SW_DB_SELECT_QUERY ); + //#i97577# + if( pUserData->xColumnsSupplier.is() ) + m_aListLB.SetEntryText(m_aDBData.sCommand, pSelect, ITEMID_TABLE - 1); + else + m_aListLB.SetEntryText(String(), pSelect, ITEMID_TABLE - 1); } String sCommand = m_aListLB.GetEntryText(pSelect, ITEMID_TABLE - 1); m_aOK.Enable(pSelect && sCommand.Len()); diff --git a/sw/source/ui/dbui/dbmgr.cxx b/sw/source/ui/dbui/dbmgr.cxx index bf6bef6959b3..cbc77678e84e 100644 --- a/sw/source/ui/dbui/dbmgr.cxx +++ b/sw/source/ui/dbui/dbmgr.cxx @@ -1332,7 +1332,6 @@ BOOL SwNewDBMgr::MergeMailFiles(SwWrtShell* pSourceShell, pStoreToFilterOptions = &rMergeDescriptor.sSaveToFilterOptions; } } - String sAddress; bCancel = FALSE; // in case of creating a single resulting file this has to be created here @@ -1399,7 +1398,6 @@ BOOL SwNewDBMgr::MergeMailFiles(SwWrtShell* pSourceShell, pViewFrm = SfxViewFrame::GetNext(*pViewFrm, pSourrceDocSh); } ULONG nDocNo = 1; - ULONG nCounter = 0; long nStartRow, nEndRow; // collect temporary files @@ -1410,6 +1408,7 @@ BOOL SwNewDBMgr::MergeMailFiles(SwWrtShell* pSourceShell, { String sPath(sSubject); + String sAddress; if( !bEMail && bColumnName ) { SwDBFormatData aDBFormat; @@ -1419,14 +1418,18 @@ BOOL SwNewDBMgr::MergeMailFiles(SwWrtShell* pSourceShell, if (!sAddress.Len()) sAddress = '_'; sPath += sAddress; - nCounter = 0; } // create a new temporary file name - only done once in case of bCreateSingleFile if( 1 == nDocNo || (!rMergeDescriptor.bCreateSingleFile && !bAsSingleFile) ) { INetURLObject aEntry(sPath); - String sLeading(aEntry.GetBase()); + String sLeading; + //#i97667# if the name is from a database field then it will be used _as is_ + if( sAddress.Len() ) + sLeading = sAddress; + else + sLeading = aEntry.GetBase(); aEntry.removeSegment(); sPath = aEntry.GetMainURL( INetURLObject::NO_DECODE ); String sExt( pStoreToFilter->GetDefaultExtension() ); diff --git a/sw/source/ui/dbui/mmoutputpage.cxx b/sw/source/ui/dbui/mmoutputpage.cxx index 4a5884a9daeb..64fd024fab57 100644 --- a/sw/source/ui/dbui/mmoutputpage.cxx +++ b/sw/source/ui/dbui/mmoutputpage.cxx @@ -55,6 +55,8 @@ #include <svx/langitem.hxx> #include <svtools/itemset.hxx> #include <svtools/stritem.hxx> +#include <svtools/ehdl.hxx> +#include <svtools/sfxecode.hxx> #include <vcl/msgbox.hxx> #include <sfx2/dinfdlg.hxx> #include <sfx2/printer.hxx> @@ -752,7 +754,24 @@ IMPL_LINK(SwMailMergeOutputPage, SaveOutputHdl_Impl, PushButton*, pButton) pValues[0].Value <<= ::rtl::OUString(sFilter); uno::Reference< frame::XStorable > xStore( pTargetView->GetDocShell()->GetModel(), uno::UNO_QUERY); - xStore->storeToURL( sPath, aValues ); + sal_uInt32 nErrorCode = ERRCODE_NONE; + try + { + xStore->storeToURL( sPath, aValues ); + } + catch( task::ErrorCodeIOException& aErrorEx ) + { + nErrorCode = (sal_uInt32)aErrorEx.ErrCode; + } + catch( Exception& ) + { + nErrorCode = ERRCODE_IO_GENERAL; + } + if( nErrorCode != ERRCODE_NONE ) + { + SfxErrorContext aEc(ERRCTX_SFX_SAVEASDOC, pTargetView->GetDocShell()->GetTitle()); + ErrorHandler::HandleError( nErrorCode ); + } } else { @@ -787,7 +806,24 @@ IMPL_LINK(SwMailMergeOutputPage, SaveOutputHdl_Impl, PushButton*, pButton) pValues[0].Value <<= ::rtl::OUString(pSfxFlt->GetFilterName()); uno::Reference< frame::XStorable > xStore( pTargetView->GetDocShell()->GetModel(), uno::UNO_QUERY); - xStore->storeToURL( sTargetTempURL, aValues ); + sal_uInt32 nErrorCode = ERRCODE_NONE; + try + { + xStore->storeToURL( sTargetTempURL, aValues ); + } + catch( task::ErrorCodeIOException& aErrorEx ) + { + nErrorCode = (sal_uInt32)aErrorEx.ErrCode; + } + catch( Exception& ) + { + nErrorCode = ERRCODE_IO_GENERAL; + } + if( nErrorCode != ERRCODE_NONE ) + { + SfxErrorContext aEc(ERRCTX_SFX_SAVEASDOC, pTargetView->GetDocShell()->GetTitle()); + ErrorHandler::HandleError( nErrorCode ); + } SwView* pSourceView = rConfigItem.GetSourceView(); PrintMonitor aSaveMonitor(this, PrintMonitor::MONITOR_TYPE_SAVE); diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx index f5a39dd1dee0..5166f0f01d5c 100644 --- a/sw/source/ui/docvw/edtwin.cxx +++ b/sw/source/ui/docvw/edtwin.cxx @@ -5076,49 +5076,70 @@ void SwEditWin::Command( const CommandEvent& rCEvt ) case COMMAND_SELECTIONCHANGE: { const CommandSelectionChangeData *pData = rCEvt.GetSelectionChangeData(); - rSh.HideCrsr(); + rSh.SttCrsrMove(); rSh.GoStartSentence(); rSh.GetCrsr()->GetPoint()->nContent += sal::static_int_cast<sal_uInt16, ULONG>(pData->GetStart()); rSh.SetMark(); - rSh.GetCrsr()->GetMark()->nContent += sal::static_int_cast<sal_uInt16, ULONG>( pData->GetEnd() - pData->GetStart() ); - rSh.ShowCrsr(); + rSh.GetCrsr()->GetMark()->nContent += sal::static_int_cast<sal_uInt16, ULONG>(pData->GetEnd() - pData->GetStart()); + rSh.EndCrsrMove( TRUE ); } break; case COMMAND_PREPARERECONVERSION: if( rSh.HasSelection() ) { - if ( rSh.IsMultiSelection() ) + SwPaM *pCrsr = (SwPaM*)rSh.GetCrsr(); + + if( rSh.IsMultiSelection() ) + { + if( pCrsr && !pCrsr->HasMark() && + pCrsr->GetPoint() == pCrsr->GetMark() ) + { + rSh.GoPrevCrsr(); + pCrsr = (SwPaM*)rSh.GetCrsr(); + } + + // Cancel all selections other than the last selected one. + while( rSh.GetCrsr()->GetNext() != rSh.GetCrsr() ) + delete rSh.GetCrsr()->GetNext(); + } + + if( pCrsr ) { - // Save the last selected area. - SwPaM *pCrsr = (SwPaM*)rSh.GetCrsr()->GetPrev(); - xub_StrLen nPosIdx = pCrsr->GetPoint()->nContent.GetIndex(); ULONG nPosNodeIdx = pCrsr->GetPoint()->nNode.GetIndex(); - xub_StrLen nMarkIdx = pCrsr->GetMark()->nContent.GetIndex(); + xub_StrLen nPosIdx = pCrsr->GetPoint()->nContent.GetIndex(); ULONG nMarkNodeIdx = pCrsr->GetMark()->nNode.GetIndex(); + xub_StrLen nMarkIdx = pCrsr->GetMark()->nContent.GetIndex(); - // ToDo: Deselect the text behind the first paragraph break, - // if the last selected area ranges from one paragraph - // to another. - if( nPosNodeIdx != nMarkNodeIdx ) - break; + if( !rSh.GetCrsr()->HasMark() ) + rSh.GetCrsr()->SetMark(); - // Cancel all selection. - while( rSh._GetCrsr()->GetNext() != rSh._GetCrsr() ) - delete rSh._GetCrsr()->GetNext(); + rSh.SttCrsrMove(); - // Restore the last selected area. + if( nPosNodeIdx < nMarkNodeIdx ) + { + rSh.GetCrsr()->GetPoint()->nNode = nPosNodeIdx; rSh.GetCrsr()->GetPoint()->nContent = nPosIdx; + rSh.GetCrsr()->GetMark()->nNode = nPosNodeIdx; + rSh.GetCrsr()->GetMark()->nContent = + rSh.GetCrsr()->GetCntntNode( TRUE )->Len(); + } + else if( nPosNodeIdx == nMarkNodeIdx ) + { rSh.GetCrsr()->GetPoint()->nNode = nPosNodeIdx; - rSh.SetMark(); + rSh.GetCrsr()->GetPoint()->nContent = nPosIdx; + rSh.GetCrsr()->GetMark()->nNode = nMarkNodeIdx; rSh.GetCrsr()->GetMark()->nContent = nMarkIdx; + } + else + { rSh.GetCrsr()->GetMark()->nNode = nMarkNodeIdx; - rSh.ShowCrsr(); - } - else - { - // Deselect the text behind the first paragraph break. - rSh.NormalizePam( FALSE ); - while( !rSh.IsSelOnePara() && rSh.MovePara( fnParaPrev, fnParaEnd )); + rSh.GetCrsr()->GetMark()->nContent = nMarkIdx; + rSh.GetCrsr()->GetPoint()->nNode = nMarkNodeIdx; + rSh.GetCrsr()->GetPoint()->nContent = + rSh.GetCrsr()->GetCntntNode( FALSE )->Len(); + } + + rSh.EndCrsrMove( TRUE ); } } break; @@ -5653,7 +5674,7 @@ XubString SwEditWin::GetSurroundingText() const String sReturn; SwWrtShell& rSh = rView.GetWrtShell(); if( rSh.HasSelection() && !rSh.IsMultiSelection() && rSh.IsSelOnePara() ) - rSh.GetSelectedText( sReturn ); + rSh.GetSelectedText( sReturn, GETSELTXT_PARABRK_TO_ONLYCR ); else if( !rSh.HasSelection() ) { SwPosition *pPos = rSh.GetCrsr()->GetPoint(); @@ -5664,7 +5685,7 @@ XubString SwEditWin::GetSurroundingText() const rSh.GoStartSentence(); rSh.SetMark(); rSh.GoEndSentence(); - rSh.GetSelectedText( sReturn ); + rSh.GetSelectedText( sReturn, GETSELTXT_PARABRK_TO_ONLYCR ); pPos->nContent = nPos; rSh.ClearMark(); @@ -5682,7 +5703,7 @@ Selection SwEditWin::GetSurroundingTextSelection() const if( rSh.HasSelection() ) { String sReturn; - rSh.GetSelectedText( sReturn ); + rSh.GetSelectedText( sReturn, GETSELTXT_PARABRK_TO_ONLYCR ); return Selection( 0, sReturn.Len() ); } else diff --git a/sw/source/ui/envelp/mailmrge.cxx b/sw/source/ui/envelp/mailmrge.cxx index c60859790db0..7b1170b35efe 100644 --- a/sw/source/ui/envelp/mailmrge.cxx +++ b/sw/source/ui/envelp/mailmrge.cxx @@ -768,6 +768,8 @@ bool SwMailMergeDlg::ExecQryShell() } else { + //#i97667# reset column name - otherwise it's remembered from the last run + pMgr->SetEMailColumn(::rtl::OUString()); //start save as dialog String sFilter; sPath = SwMailMergeHelper::CallSaveAsDialog(sFilter); diff --git a/sw/source/ui/index/toxmgr.cxx b/sw/source/ui/index/toxmgr.cxx index 4e0cbe897ac9..686a134a67ec 100644 --- a/sw/source/ui/index/toxmgr.cxx +++ b/sw/source/ui/index/toxmgr.cxx @@ -312,7 +312,7 @@ BOOL SwTOXMgr::UpdateOrInsertTOX(const SwTOXDescription& rDesc, TOXTypes eCurTOXType = rDesc.GetTOXType(); if(pCurTOX && !ppBase && pSh->HasSelection()) - pSh->DelRight(); + pSh->EnterStdMode(); switch(eCurTOXType) { diff --git a/sw/source/ui/shells/drwtxtsh.cxx b/sw/source/ui/shells/drwtxtsh.cxx index 0c2797cebd78..a0f38300fba2 100644 --- a/sw/source/ui/shells/drwtxtsh.cxx +++ b/sw/source/ui/shells/drwtxtsh.cxx @@ -139,6 +139,9 @@ void SwDrawTextShell::Init() SwWrtShell &rSh = GetShell(); pSdrView = rSh.GetDrawView(); SdrOutliner * pOutliner = pSdrView->GetTextEditOutliner(); + //#97471# mouse click _and_ key input at the same time + if( !pOutliner ) + return ; OutlinerView* pOLV = pSdrView->GetTextEditOutlinerView(); ULONG nCtrl = pOutliner->GetControlWord(); nCtrl |= EE_CNTRL_AUTOCORRECT; |