Kaydet (Commit) f9fe7235 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Hold ScAccessibleDocument::mpAccessibleSpreadsheet by rtl::Reference

Change-Id: If5b0c7603bb69697a53954b6adfd5ff91d196503
üst 89d39bc1
...@@ -1404,7 +1404,6 @@ ScAccessibleDocument::ScAccessibleDocument( ...@@ -1404,7 +1404,6 @@ ScAccessibleDocument::ScAccessibleDocument(
: ScAccessibleDocumentBase(rxParent), : ScAccessibleDocumentBase(rxParent),
mpViewShell(pViewShell), mpViewShell(pViewShell),
meSplitPos(eSplitPos), meSplitPos(eSplitPos),
mpAccessibleSpreadsheet(NULL),
mpChildrenShapes(NULL), mpChildrenShapes(NULL),
mpTempAccEdit(NULL), mpTempAccEdit(NULL),
mbCompleteSheetSelected(false) mbCompleteSheetSelected(false)
...@@ -1519,7 +1518,7 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) ...@@ -1519,7 +1518,7 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
{ {
if (mxTempAcc.is() && mpTempAccEdit) if (mxTempAcc.is() && mpTempAccEdit)
mpTempAccEdit->LostFocus(); mpTempAccEdit->LostFocus();
else if (mpAccessibleSpreadsheet) else if (mpAccessibleSpreadsheet.is())
mpAccessibleSpreadsheet->LostFocus(); mpAccessibleSpreadsheet->LostFocus();
else else
CommitFocusLost(); CommitFocusLost();
...@@ -1549,7 +1548,7 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) ...@@ -1549,7 +1548,7 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
{ {
if (mxTempAcc.is() && mpTempAccEdit) if (mxTempAcc.is() && mpTempAccEdit)
mpTempAccEdit->GotFocus(); mpTempAccEdit->GotFocus();
else if (mpAccessibleSpreadsheet) else if (mpAccessibleSpreadsheet.is())
mpAccessibleSpreadsheet->GotFocus(); mpAccessibleSpreadsheet->GotFocus();
else else
CommitFocusGained(); CommitFocusGained();
...@@ -1561,7 +1560,7 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) ...@@ -1561,7 +1560,7 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
const SfxSimpleHint* pSimpleHint = static_cast<const SfxSimpleHint*>(&rHint); const SfxSimpleHint* pSimpleHint = static_cast<const SfxSimpleHint*>(&rHint);
// only notify if child exist, otherwise it is not necessary // only notify if child exist, otherwise it is not necessary
if ((pSimpleHint->GetId() == SC_HINT_ACC_TABLECHANGED) && if ((pSimpleHint->GetId() == SC_HINT_ACC_TABLECHANGED) &&
mpAccessibleSpreadsheet) mpAccessibleSpreadsheet.is())
{ {
FreeAccessibleSpreadsheet(); FreeAccessibleSpreadsheet();
if (mpChildrenShapes) if (mpChildrenShapes)
...@@ -1581,7 +1580,7 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) ...@@ -1581,7 +1580,7 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
aEvent.Source = uno::Reference< XAccessibleContext >(this); aEvent.Source = uno::Reference< XAccessibleContext >(this);
CommitChange(aEvent); // all children changed CommitChange(aEvent); // all children changed
if (mpAccessibleSpreadsheet) if (mpAccessibleSpreadsheet.is())
mpAccessibleSpreadsheet->FireFirstCellFocus(); mpAccessibleSpreadsheet->FireFirstCellFocus();
} }
else if (pSimpleHint->GetId() == SC_HINT_ACC_MAKEDRAWLAYER) else if (pSimpleHint->GetId() == SC_HINT_ACC_MAKEDRAWLAYER)
...@@ -1604,7 +1603,7 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) ...@@ -1604,7 +1603,7 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
AddChild(xAcc, true); AddChild(xAcc, true);
if (mpAccessibleSpreadsheet) if (mpAccessibleSpreadsheet.is())
mpAccessibleSpreadsheet->LostFocus(); mpAccessibleSpreadsheet->LostFocus();
else else
CommitFocusLost(); CommitFocusLost();
...@@ -1622,7 +1621,7 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) ...@@ -1622,7 +1621,7 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
mpTempAccEdit = NULL; mpTempAccEdit = NULL;
RemoveChild(mxTempAcc, true); RemoveChild(mxTempAcc, true);
if (mpAccessibleSpreadsheet && mpViewShell && mpViewShell->IsActive()) if (mpAccessibleSpreadsheet.is() && mpViewShell && mpViewShell->IsActive())
mpAccessibleSpreadsheet->GotFocus(); mpAccessibleSpreadsheet->GotFocus();
else if( mpViewShell && mpViewShell->IsActive()) else if( mpViewShell && mpViewShell->IsActive())
CommitFocusGained(); CommitFocusGained();
...@@ -1643,12 +1642,12 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) ...@@ -1643,12 +1642,12 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
CommitChange(aEvent); CommitChange(aEvent);
if (mpAccessibleSpreadsheet) if (mpAccessibleSpreadsheet.is())
mpAccessibleSpreadsheet->BoundingBoxChanged(); mpAccessibleSpreadsheet->BoundingBoxChanged();
if (mpAccessibleSpreadsheet && mpViewShell && mpViewShell->IsActive()) if (mpAccessibleSpreadsheet.is() && mpViewShell && mpViewShell->IsActive())
mpAccessibleSpreadsheet->FireFirstCellFocus(); mpAccessibleSpreadsheet->FireFirstCellFocus();
} }
else if (mpAccessibleSpreadsheet) else if (mpAccessibleSpreadsheet.is())
{ {
mpAccessibleSpreadsheet->VisAreaChanged(); mpAccessibleSpreadsheet->VisAreaChanged();
} }
...@@ -1665,7 +1664,7 @@ void SAL_CALL ScAccessibleDocument::selectionChanged( const lang::EventObject& / ...@@ -1665,7 +1664,7 @@ void SAL_CALL ScAccessibleDocument::selectionChanged( const lang::EventObject& /
throw (uno::RuntimeException, std::exception) throw (uno::RuntimeException, std::exception)
{ {
bool bSelectionChanged(false); bool bSelectionChanged(false);
if (mpAccessibleSpreadsheet) if (mpAccessibleSpreadsheet.is())
{ {
bool bOldSelected(mbCompleteSheetSelected); bool bOldSelected(mbCompleteSheetSelected);
mbCompleteSheetSelected = IsTableSelected(); mbCompleteSheetSelected = IsTableSelected();
...@@ -2218,23 +2217,21 @@ SCTAB ScAccessibleDocument::getVisibleTable() const ...@@ -2218,23 +2217,21 @@ SCTAB ScAccessibleDocument::getVisibleTable() const
uno::Reference < XAccessible > uno::Reference < XAccessible >
ScAccessibleDocument::GetAccessibleSpreadsheet() ScAccessibleDocument::GetAccessibleSpreadsheet()
{ {
if (!mpAccessibleSpreadsheet && mpViewShell) if (!mpAccessibleSpreadsheet.is() && mpViewShell)
{ {
mpAccessibleSpreadsheet = new ScAccessibleSpreadsheet(this, mpViewShell, getVisibleTable(), meSplitPos); mpAccessibleSpreadsheet = new ScAccessibleSpreadsheet(this, mpViewShell, getVisibleTable(), meSplitPos);
mpAccessibleSpreadsheet->acquire();
mpAccessibleSpreadsheet->Init(); mpAccessibleSpreadsheet->Init();
mbCompleteSheetSelected = IsTableSelected(); mbCompleteSheetSelected = IsTableSelected();
} }
return mpAccessibleSpreadsheet; return mpAccessibleSpreadsheet.get();
} }
void ScAccessibleDocument::FreeAccessibleSpreadsheet() void ScAccessibleDocument::FreeAccessibleSpreadsheet()
{ {
if (mpAccessibleSpreadsheet) if (mpAccessibleSpreadsheet.is())
{ {
mpAccessibleSpreadsheet->dispose(); mpAccessibleSpreadsheet->dispose();
mpAccessibleSpreadsheet->release(); mpAccessibleSpreadsheet.clear();
mpAccessibleSpreadsheet = NULL;
} }
} }
...@@ -2481,7 +2478,7 @@ com::sun::star::uno::Sequence< com::sun::star::uno::Any > ScAccessibleDocument:: ...@@ -2481,7 +2478,7 @@ com::sun::star::uno::Sequence< com::sun::star::uno::Any > ScAccessibleDocument::
{ {
return aSeq; return aSeq;
} }
else if( mpAccessibleSpreadsheet ) else if( mpAccessibleSpreadsheet.is() )
{ {
uno::Reference < XAccessible > xFindCellAcc = mpAccessibleSpreadsheet->GetActiveCell(); uno::Reference < XAccessible > xFindCellAcc = mpAccessibleSpreadsheet->GetActiveCell();
// add xFindCellAcc to the return the Sequence // add xFindCellAcc to the return the Sequence
......
...@@ -260,7 +260,7 @@ protected: ...@@ -260,7 +260,7 @@ protected:
private: private:
ScTabViewShell* mpViewShell; ScTabViewShell* mpViewShell;
ScSplitPos meSplitPos; ScSplitPos meSplitPos;
ScAccessibleSpreadsheet* mpAccessibleSpreadsheet; rtl::Reference<ScAccessibleSpreadsheet> mpAccessibleSpreadsheet;
ScChildrenShapes* mpChildrenShapes; ScChildrenShapes* mpChildrenShapes;
ScAccessibleEditObject* mpTempAccEdit; ScAccessibleEditObject* mpTempAccEdit;
com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessible> mxTempAcc; com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessible> mxTempAcc;
......
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