Kaydet (Commit) 4a480ea2 authored tarafından Kurt Zenker's avatar Kurt Zenker

update to current version

...@@ -1181,7 +1181,7 @@ ScAccessibleEditLineTextData::ScAccessibleEditLineTextData(EditView* pEditView, ...@@ -1181,7 +1181,7 @@ ScAccessibleEditLineTextData::ScAccessibleEditLineTextData(EditView* pEditView,
ScTextWnd* pTxtWnd = (ScTextWnd*)pWin; ScTextWnd* pTxtWnd = (ScTextWnd*)pWin;
if (pTxtWnd) if (pTxtWnd)
pTxtWnd->SetAccessibleTextData(this); pTxtWnd->InsertAccessibleTextData( *this );
} }
ScAccessibleEditLineTextData::~ScAccessibleEditLineTextData() ScAccessibleEditLineTextData::~ScAccessibleEditLineTextData()
...@@ -1189,7 +1189,7 @@ ScAccessibleEditLineTextData::~ScAccessibleEditLineTextData() ...@@ -1189,7 +1189,7 @@ ScAccessibleEditLineTextData::~ScAccessibleEditLineTextData()
ScTextWnd* pTxtWnd = (ScTextWnd*)mpWindow; ScTextWnd* pTxtWnd = (ScTextWnd*)mpWindow;
if (pTxtWnd) if (pTxtWnd)
pTxtWnd->SetAccessibleTextData(NULL); pTxtWnd->RemoveAccessibleTextData( *this );
if (mbEditEngineCreated && mpEditEngine) if (mbEditEngineCreated && mpEditEngine)
{ {
...@@ -1210,7 +1210,7 @@ void ScAccessibleEditLineTextData::Dispose() ...@@ -1210,7 +1210,7 @@ void ScAccessibleEditLineTextData::Dispose()
ScTextWnd* pTxtWnd = (ScTextWnd*)mpWindow; ScTextWnd* pTxtWnd = (ScTextWnd*)mpWindow;
if (pTxtWnd) if (pTxtWnd)
pTxtWnd->SetAccessibleTextData(NULL); pTxtWnd->RemoveAccessibleTextData( *this );
ResetEditMode(); ResetEditMode();
mpWindow = NULL; mpWindow = NULL;
......
...@@ -31,9 +31,7 @@ ...@@ -31,9 +31,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove // MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sc.hxx" #include "precompiled_sc.hxx"
#include <algorithm>
//------------------------------------------------------------------
#include "scitems.hxx" #include "scitems.hxx"
#include <svx/eeitem.hxx> #include <svx/eeitem.hxx>
...@@ -738,7 +736,6 @@ ScTextWnd::ScTextWnd( Window* pParent ) ...@@ -738,7 +736,6 @@ ScTextWnd::ScTextWnd( Window* pParent )
DragSourceHelper( this ), DragSourceHelper( this ),
pEditEngine ( NULL ), pEditEngine ( NULL ),
pEditView ( NULL ), pEditView ( NULL ),
pAccTextData ( NULL ),
bIsInsertMode( TRUE ), bIsInsertMode( TRUE ),
bFormulaMode ( FALSE ), bFormulaMode ( FALSE ),
bInputMode ( FALSE ) bInputMode ( FALSE )
...@@ -774,8 +771,8 @@ __EXPORT ScTextWnd::~ScTextWnd() ...@@ -774,8 +771,8 @@ __EXPORT ScTextWnd::~ScTextWnd()
{ {
delete pEditView; delete pEditView;
delete pEditEngine; delete pEditEngine;
if (pAccTextData) for( AccTextDataVector::reverse_iterator aIt = maAccTextDatas.rbegin(), aEnd = maAccTextDatas.rend(); aIt != aEnd; ++aIt )
pAccTextData->Dispose(); (*aIt)->Dispose();
} }
void __EXPORT ScTextWnd::Paint( const Rectangle& rRec ) void __EXPORT ScTextWnd::Paint( const Rectangle& rRec )
...@@ -1112,8 +1109,8 @@ void ScTextWnd::StartEditEngine() ...@@ -1112,8 +1109,8 @@ void ScTextWnd::StartEditEngine()
pEditEngine->SetModifyHdl(LINK(this, ScTextWnd, NotifyHdl)); pEditEngine->SetModifyHdl(LINK(this, ScTextWnd, NotifyHdl));
if (pAccTextData) if (!maAccTextDatas.empty())
pAccTextData->StartEdit(); maAccTextDatas.back()->StartEdit();
// as long as EditEngine and DrawText sometimes differ for CTL text, // as long as EditEngine and DrawText sometimes differ for CTL text,
// repaint now to have the EditEngine's version visible // repaint now to have the EditEngine's version visible
...@@ -1154,8 +1151,8 @@ void ScTextWnd::StopEditEngine( BOOL bAll ) ...@@ -1154,8 +1151,8 @@ void ScTextWnd::StopEditEngine( BOOL bAll )
{ {
if (pEditView) if (pEditView)
{ {
if (pAccTextData) if (!maAccTextDatas.empty())
pAccTextData->EndEdit(); maAccTextDatas.back()->EndEdit();
ScModule* pScMod = SC_MOD(); ScModule* pScMod = SC_MOD();
...@@ -1259,8 +1256,8 @@ void ScTextWnd::SetTextString( const String& rNewString ) ...@@ -1259,8 +1256,8 @@ void ScTextWnd::SetTextString( const String& rNewString )
aString = rNewString; aString = rNewString;
if (pAccTextData) if (!maAccTextDatas.empty())
pAccTextData->TextChanged(); maAccTextDatas.back()->TextChanged();
bInputMode = FALSE; bInputMode = FALSE;
} }
...@@ -1317,8 +1314,8 @@ void ScTextWnd::MakeDialogEditView() ...@@ -1317,8 +1314,8 @@ void ScTextWnd::MakeDialogEditView()
if ( bIsRTL ) if ( bIsRTL )
lcl_ModifyRTLVisArea( pEditView ); lcl_ModifyRTLVisArea( pEditView );
if (pAccTextData) if (!maAccTextDatas.empty())
pAccTextData->StartEdit(); maAccTextDatas.back()->StartEdit();
} }
void ScTextWnd::ImplInitSettings() void ScTextWnd::ImplInitSettings()
...@@ -1343,6 +1340,22 @@ void ScTextWnd::ImplInitSettings() ...@@ -1343,6 +1340,22 @@ void ScTextWnd::ImplInitSettings()
rtl::OUString(String(ScResId(STR_ACC_EDITLINE_DESCR))), EditLine); 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 ) void ScTextWnd::DataChanged( const DataChangedEvent& rDCEvt )
......
...@@ -63,7 +63,8 @@ EXCEPTIONSFILES= \ ...@@ -63,7 +63,8 @@ EXCEPTIONSFILES= \
$(SLO)$/drwtrans.obj \ $(SLO)$/drwtrans.obj \
$(SLO)$/scmod2.obj \ $(SLO)$/scmod2.obj \
$(SLO)$/scmod.obj \ $(SLO)$/scmod.obj \
$(SLO)$/client.obj $(SLO)$/client.obj \
$(SLO)$/inputwin.obj
#LIB3TARGET=$(SLB)$/ysclib.lib #LIB3TARGET=$(SLB)$/ysclib.lib
#LIB3OBJFILES=$(SLO)$/sclib.obj #LIB3OBJFILES=$(SLO)$/sclib.obj
......
...@@ -31,15 +31,11 @@ ...@@ -31,15 +31,11 @@
#ifndef SC_INPUTWIN_HXX #ifndef SC_INPUTWIN_HXX
#define SC_INPUTWIN_HXX #define SC_INPUTWIN_HXX
#include <vector>
#ifndef _TOOLBOX_HXX //autogen
#include <vcl/toolbox.hxx> #include <vcl/toolbox.hxx>
#endif
#include <sfx2/childwin.hxx> #include <sfx2/childwin.hxx>
#include <svtools/lstner.hxx> #include <svtools/lstner.hxx>
#ifndef _COMBOBOX_HXX //autogen
#include <vcl/combobox.hxx> #include <vcl/combobox.hxx>
#endif
#include <vcl/window.hxx> #include <vcl/window.hxx>
#include <svtools/transfer.hxx> #include <svtools/transfer.hxx>
...@@ -77,7 +73,8 @@ public: ...@@ -77,7 +73,8 @@ public:
virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible(); virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
void SetAccessibleTextData(ScAccessibleEditLineTextData* pTextData) {pAccTextData = pTextData;} void InsertAccessibleTextData( ScAccessibleEditLineTextData& rTextData );
void RemoveAccessibleTextData( ScAccessibleEditLineTextData& rTextData );
DECL_LINK( NotifyHdl, EENotify* ); DECL_LINK( NotifyHdl, EENotify* );
...@@ -102,11 +99,13 @@ private: ...@@ -102,11 +99,13 @@ private:
void UpdateAutoCorrFlag(); void UpdateAutoCorrFlag();
private: private:
typedef ::std::vector< ScAccessibleEditLineTextData* > AccTextDataVector;
String aString; String aString;
Font aTextFont; Font aTextFont;
ScEditEngineDefaulter* pEditEngine; // erst bei Bedarf angelegt ScEditEngineDefaulter* pEditEngine; // erst bei Bedarf angelegt
EditView* pEditView; EditView* pEditView;
ScAccessibleEditLineTextData* pAccTextData; AccTextDataVector maAccTextDatas; // #i105267# text datas may be cloned, remember all copies
BOOL bIsRTL; BOOL bIsRTL;
BOOL bIsInsertMode; BOOL bIsInsertMode;
BOOL bFormulaMode; BOOL bFormulaMode;
......
...@@ -244,7 +244,8 @@ ScModelObj::~ScModelObj() ...@@ -244,7 +244,8 @@ ScModelObj::~ScModelObj()
uno::Reference< uno::XAggregation> ScModelObj::GetFormatter() uno::Reference< uno::XAggregation> ScModelObj::GetFormatter()
{ {
if ( !xNumberAgg.is() ) // pDocShell may be NULL if this is the base of a ScDocOptionsObj
if ( !xNumberAgg.is() && pDocShell )
{ {
// setDelegator veraendert den RefCount, darum eine Referenz selber halten // setDelegator veraendert den RefCount, darum eine Referenz selber halten
// (direkt am m_refCount, um sich beim release nicht selbst zu loeschen) // (direkt am m_refCount, um sich beim release nicht selbst zu loeschen)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment