[Libreoffice-commits] core.git: sc/source

Kohei Yoshida kohei.yoshida at collabora.com
Sun Nov 20 02:45:12 UTC 2016


 sc/source/ui/Accessibility/AccessibleDocument.cxx |   40 ++++++++++------------
 sc/source/ui/inc/AccessibleDocument.hxx           |    3 -
 2 files changed, 20 insertions(+), 23 deletions(-)

New commits:
commit b3d19761b4a1621e5754c758366818528a4dc774
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Sat Nov 19 21:44:42 2016 -0500

    Revert "Use rtl::Reference to wrap ScAccessibleEditObject here."
    
    This reverts commit da7aa2561297da42058da55ed2629d0df6fb03f3.

diff --git a/sc/source/ui/Accessibility/AccessibleDocument.cxx b/sc/source/ui/Accessibility/AccessibleDocument.cxx
index 8591e6a..f919af43 100644
--- a/sc/source/ui/Accessibility/AccessibleDocument.cxx
+++ b/sc/source/ui/Accessibility/AccessibleDocument.cxx
@@ -1397,6 +1397,7 @@ ScAccessibleDocument::ScAccessibleDocument(
     mpViewShell(pViewShell),
     meSplitPos(eSplitPos),
     mpChildrenShapes(nullptr),
+    mpTempAccEdit(nullptr),
     mbCompleteSheetSelected(false)
 {
     maVisArea = GetVisibleArea_Impl();
@@ -1507,8 +1508,8 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
         const ScAccGridWinFocusLostHint* pFocusLostHint = static_cast<const ScAccGridWinFocusLostHint *>(&rHint);
         if (pFocusLostHint->GetOldGridWin() == meSplitPos)
         {
-            if (mpEditObj.is())
-                mpEditObj->LostFocus();
+            if (mxTempAcc.is() && mpTempAccEdit)
+                mpTempAccEdit->LostFocus();
             else if (mpAccessibleSpreadsheet.is())
                 mpAccessibleSpreadsheet->LostFocus();
             else
@@ -1537,12 +1538,12 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
             }
             else
             {
-                if (mpEditObj.is())
-                    mpEditObj->GotFocus();
-                else if (mpAccessibleSpreadsheet.is())
-                    mpAccessibleSpreadsheet->GotFocus();
-                else
-                    CommitFocusGained();
+            if (mxTempAcc.is() && mpTempAccEdit)
+                mpTempAccEdit->GotFocus();
+            else if (mpAccessibleSpreadsheet.is())
+                mpAccessibleSpreadsheet->GotFocus();
+            else
+                CommitFocusGained();
             }
         }
     }
@@ -1586,14 +1587,11 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
                 const EditEngine* pEditEng = rViewData.GetEditView(meSplitPos)->GetEditEngine();
                 if (pEditEng && pEditEng->GetUpdateMode())
                 {
-                    if (!mpEditObj.is())
-                    {
-                        mpEditObj.set(new ScAccessibleEditObject(this, rViewData.GetEditView(meSplitPos),
-                            mpViewShell->GetWindowByPos(meSplitPos), GetCurrentCellName(),
-                            OUString(ScResId(STR_ACC_EDITLINE_DESCR)), ScAccessibleEditObject::CellInEditMode));
-                    }
+                    mpTempAccEdit = new ScAccessibleEditObject(this, rViewData.GetEditView(meSplitPos),
+                        mpViewShell->GetWindowByPos(meSplitPos), GetCurrentCellName(),
+                        OUString(ScResId(STR_ACC_EDITLINE_DESCR)), ScAccessibleEditObject::CellInEditMode);
+                    uno::Reference<XAccessible> xAcc = mpTempAccEdit;
 
-                    uno::Reference<XAccessible> xAcc = mpEditObj.get();
                     AddChild(xAcc, true);
 
                     if (mpAccessibleSpreadsheet.is())
@@ -1601,19 +1599,19 @@ void ScAccessibleDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
                     else
                         CommitFocusLost();
 
-                    mpEditObj->GotFocus();
+                    mpTempAccEdit->GotFocus();
                 }
             }
         }
         else if (rHint.GetId() == SC_HINT_ACC_LEAVEEDITMODE)
         {
-            if (mpEditObj.is())
+            if (mxTempAcc.is())
             {
-                mpEditObj->LostFocus();
-
-                uno::Reference<XAccessible> xAcc = mpEditObj.get();
-                RemoveChild(xAcc, true);
+                if (mpTempAccEdit)
+                    mpTempAccEdit->LostFocus();
 
+                mpTempAccEdit = nullptr;
+                RemoveChild(mxTempAcc, true);
                 if (mpAccessibleSpreadsheet.is() && mpViewShell && mpViewShell->IsActive())
                     mpAccessibleSpreadsheet->GotFocus();
                 else if( mpViewShell && mpViewShell->IsActive())
diff --git a/sc/source/ui/inc/AccessibleDocument.hxx b/sc/source/ui/inc/AccessibleDocument.hxx
index 0f08c4c..9a2807d 100644
--- a/sc/source/ui/inc/AccessibleDocument.hxx
+++ b/sc/source/ui/inc/AccessibleDocument.hxx
@@ -259,9 +259,8 @@ private:
     ScTabViewShell* mpViewShell;
     ScSplitPos      meSplitPos;
     rtl::Reference<ScAccessibleSpreadsheet> mpAccessibleSpreadsheet;
-    rtl::Reference<ScAccessibleEditObject> mpEditObj;
     ScChildrenShapes* mpChildrenShapes;
-
+    ScAccessibleEditObject* mpTempAccEdit;
     css::uno::Reference<css::accessibility::XAccessible> mxTempAcc;
     Rectangle maVisArea;
     bool mbCompleteSheetSelected;


More information about the Libreoffice-commits mailing list