diff options
author | Ivo Hinkelmann <ihi@openoffice.org> | 2009-11-20 14:02:34 +0000 |
---|---|---|
committer | Ivo Hinkelmann <ihi@openoffice.org> | 2009-11-20 14:02:34 +0000 |
commit | ef9931cee162db34de60adb23ee7c54083105ff6 (patch) | |
tree | 630a9e730df115ea783b708037564f23556046b0 /sc/source/ui/app/inputwin.cxx | |
parent | 6412003193f79e16f4aa33f206b736e3c9bf6bc3 (diff) |
CWS-TOOLING: integrate CWS calc32stopper5
2009-11-12 13:18:26 +0100 dr r277477 : #i105267# missing in exception files list
2009-11-12 11:13:57 +0100 dr r277472 : CWS-TOOLING: rebase CWS calc32stopper5 to branches/OOO320@277373 (milestone: OOO320:m4)
2009-11-11 17:27:10 +0100 dr r277466 : #i105267# remember all existing copies of ScAccessibeEditLineTextData in the ScTextWnd instance (text input line)
2009-11-04 09:59:49 +0100 dr r277334 : dump even more BIFF records written by XL12
2009-10-27 19:11:37 +0100 dr r277231 : few dumper additions
2009-10-27 17:17:10 +0100 nn r277225 : #i106343# check if pDocShell is set in GetFormatter
2009-10-26 14:54:15 +0100 dr r277178 : #i106194# OOXML: load form controls from binary streams
2009-10-26 14:14:01 +0100 dr r277177 : #i106194# OOXML: load form controls from binary streams
Diffstat (limited to 'sc/source/ui/app/inputwin.cxx')
-rw-r--r-- | sc/source/ui/app/inputwin.cxx | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx index 33f26947f49f..fd8009051ec4 100644 --- a/sc/source/ui/app/inputwin.cxx +++ b/sc/source/ui/app/inputwin.cxx @@ -31,9 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sc.hxx" - - -//------------------------------------------------------------------ +#include <algorithm> #include "scitems.hxx" #include <svx/eeitem.hxx> @@ -738,7 +736,6 @@ ScTextWnd::ScTextWnd( Window* pParent ) DragSourceHelper( this ), pEditEngine ( NULL ), pEditView ( NULL ), - pAccTextData ( NULL ), bIsInsertMode( TRUE ), bFormulaMode ( FALSE ), bInputMode ( FALSE ) @@ -774,8 +771,8 @@ __EXPORT ScTextWnd::~ScTextWnd() { delete pEditView; delete pEditEngine; - if (pAccTextData) - pAccTextData->Dispose(); + for( AccTextDataVector::reverse_iterator aIt = maAccTextDatas.rbegin(), aEnd = maAccTextDatas.rend(); aIt != aEnd; ++aIt ) + (*aIt)->Dispose(); } void __EXPORT ScTextWnd::Paint( const Rectangle& rRec ) @@ -1112,8 +1109,8 @@ void ScTextWnd::StartEditEngine() pEditEngine->SetModifyHdl(LINK(this, ScTextWnd, NotifyHdl)); - if (pAccTextData) - pAccTextData->StartEdit(); + if (!maAccTextDatas.empty()) + maAccTextDatas.back()->StartEdit(); // as long as EditEngine and DrawText sometimes differ for CTL text, // repaint now to have the EditEngine's version visible @@ -1154,8 +1151,8 @@ void ScTextWnd::StopEditEngine( BOOL bAll ) { if (pEditView) { - if (pAccTextData) - pAccTextData->EndEdit(); + if (!maAccTextDatas.empty()) + maAccTextDatas.back()->EndEdit(); ScModule* pScMod = SC_MOD(); @@ -1259,8 +1256,8 @@ void ScTextWnd::SetTextString( const String& rNewString ) aString = rNewString; - if (pAccTextData) - pAccTextData->TextChanged(); + if (!maAccTextDatas.empty()) + maAccTextDatas.back()->TextChanged(); bInputMode = FALSE; } @@ -1317,8 +1314,8 @@ void ScTextWnd::MakeDialogEditView() if ( bIsRTL ) lcl_ModifyRTLVisArea( pEditView ); - if (pAccTextData) - pAccTextData->StartEdit(); + if (!maAccTextDatas.empty()) + maAccTextDatas.back()->StartEdit(); } void ScTextWnd::ImplInitSettings() @@ -1343,6 +1340,22 @@ void ScTextWnd::ImplInitSettings() rtl::OUString(String(ScResId(STR_ACC_EDITLINE_DESCR))), EditLine); } +void ScTextWnd::InsertAccessibleTextData( ScAccessibleEditLineTextData& rTextData ) +{ + OSL_ENSURE( ::std::find( maAccTextDatas.begin(), maAccTextDatas.end(), &rTextData ) == maAccTextDatas.end(), + "ScTextWnd::InsertAccessibleTextData - passed object already registered" ); + maAccTextDatas.push_back( &rTextData ); +} + +void ScTextWnd::RemoveAccessibleTextData( ScAccessibleEditLineTextData& rTextData ) +{ + AccTextDataVector::iterator aEnd = maAccTextDatas.end(); + AccTextDataVector::iterator aIt = ::std::find( maAccTextDatas.begin(), aEnd, &rTextData ); + OSL_ENSURE( aIt != aEnd, "ScTextWnd::RemoveAccessibleTextData - passed object not registered" ); + if( aIt != aEnd ) + maAccTextDatas.erase( aIt ); +} + // ----------------------------------------------------------------------- void ScTextWnd::DataChanged( const DataChangedEvent& rDCEvt ) |