summaryrefslogtreecommitdiff
path: root/sc/source/ui/app/inputwin.cxx
diff options
context:
space:
mode:
authorIvo Hinkelmann <ihi@openoffice.org>2009-11-20 14:02:34 +0000
committerIvo Hinkelmann <ihi@openoffice.org>2009-11-20 14:02:34 +0000
commitef9931cee162db34de60adb23ee7c54083105ff6 (patch)
tree630a9e730df115ea783b708037564f23556046b0 /sc/source/ui/app/inputwin.cxx
parent6412003193f79e16f4aa33f206b736e3c9bf6bc3 (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.cxx41
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 )