summaryrefslogtreecommitdiff
path: root/sc/source/ui/Accessibility/AccessibleDocument.cxx
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2016-11-19 14:47:48 -0500
committerKohei Yoshida <libreoffice@kohei.us>2016-11-19 22:02:24 +0000
commitda7aa2561297da42058da55ed2629d0df6fb03f3 (patch)
tree391419d238e37dafbe3afd4bee2245afc23e9dc0 /sc/source/ui/Accessibility/AccessibleDocument.cxx
parent4d73205ae4227a90d2087153c6fc82a51ea513ae (diff)
Use rtl::Reference to wrap ScAccessibleEditObject here.
And avoid ScAccessibleEditObject from getting instantiated every time cell edit mode is triggered. Change-Id: Id214248c7b6fcc28ab33777e1c44cdfc07276620 Reviewed-on: https://gerrit.libreoffice.org/30991 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Kohei Yoshida <libreoffice@kohei.us>
Diffstat (limited to 'sc/source/ui/Accessibility/AccessibleDocument.cxx')
-rw-r--r--sc/source/ui/Accessibility/AccessibleDocument.cxx40
1 files changed, 21 insertions, 19 deletions
diff --git a/sc/source/ui/Accessibility/AccessibleDocument.cxx b/sc/source/ui/Accessibility/AccessibleDocument.cxx
index f919af438e80..8591e6acd502 100644
--- a/sc/source/ui/Accessibility/AccessibleDocument.cxx
+++ b/sc/source/ui/Accessibility/AccessibleDocument.cxx
@@ -1397,7 +1397,6 @@ ScAccessibleDocument::ScAccessibleDocument(
mpViewShell(pViewShell),
meSplitPos(eSplitPos),
mpChildrenShapes(nullptr),
- mpTempAccEdit(nullptr),
mbCompleteSheetSelected(false)
{
maVisArea = GetVisibleArea_Impl();
@@ -1508,8 +1507,8 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
const ScAccGridWinFocusLostHint* pFocusLostHint = static_cast<const ScAccGridWinFocusLostHint *>(&rHint);
if (pFocusLostHint->GetOldGridWin() == meSplitPos)
{
- if (mxTempAcc.is() && mpTempAccEdit)
- mpTempAccEdit->LostFocus();
+ if (mpEditObj.is())
+ mpEditObj->LostFocus();
else if (mpAccessibleSpreadsheet.is())
mpAccessibleSpreadsheet->LostFocus();
else
@@ -1538,12 +1537,12 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
}
else
{
- if (mxTempAcc.is() && mpTempAccEdit)
- mpTempAccEdit->GotFocus();
- else if (mpAccessibleSpreadsheet.is())
- mpAccessibleSpreadsheet->GotFocus();
- else
- CommitFocusGained();
+ if (mpEditObj.is())
+ mpEditObj->GotFocus();
+ else if (mpAccessibleSpreadsheet.is())
+ mpAccessibleSpreadsheet->GotFocus();
+ else
+ CommitFocusGained();
}
}
}
@@ -1587,11 +1586,14 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
const EditEngine* pEditEng = rViewData.GetEditView(meSplitPos)->GetEditEngine();
if (pEditEng && pEditEng->GetUpdateMode())
{
- mpTempAccEdit = new ScAccessibleEditObject(this, rViewData.GetEditView(meSplitPos),
- mpViewShell->GetWindowByPos(meSplitPos), GetCurrentCellName(),
- OUString(ScResId(STR_ACC_EDITLINE_DESCR)), ScAccessibleEditObject::CellInEditMode);
- uno::Reference<XAccessible> xAcc = mpTempAccEdit;
+ if (!mpEditObj.is())
+ {
+ mpEditObj.set(new ScAccessibleEditObject(this, rViewData.GetEditView(meSplitPos),
+ mpViewShell->GetWindowByPos(meSplitPos), GetCurrentCellName(),
+ OUString(ScResId(STR_ACC_EDITLINE_DESCR)), ScAccessibleEditObject::CellInEditMode));
+ }
+ uno::Reference<XAccessible> xAcc = mpEditObj.get();
AddChild(xAcc, true);
if (mpAccessibleSpreadsheet.is())
@@ -1599,19 +1601,19 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
else
CommitFocusLost();
- mpTempAccEdit->GotFocus();
+ mpEditObj->GotFocus();
}
}
}
else if (rHint.GetId() == SC_HINT_ACC_LEAVEEDITMODE)
{
- if (mxTempAcc.is())
+ if (mpEditObj.is())
{
- if (mpTempAccEdit)
- mpTempAccEdit->LostFocus();
+ mpEditObj->LostFocus();
+
+ uno::Reference<XAccessible> xAcc = mpEditObj.get();
+ RemoveChild(xAcc, true);
- mpTempAccEdit = nullptr;
- RemoveChild(mxTempAcc, true);
if (mpAccessibleSpreadsheet.is() && mpViewShell && mpViewShell->IsActive())
mpAccessibleSpreadsheet->GotFocus();
else if( mpViewShell && mpViewShell->IsActive())