[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.4' - 2 commits - include/svx svx/source

merttumer (via logerrit) logerrit at kemper.freedesktop.org
Mon Apr 19 05:52:46 UTC 2021


 include/svx/sdr/table/tablecontroller.hxx |    1 +
 include/svx/selectioncontroller.hxx       |    2 ++
 svx/source/svdraw/selectioncontroller.cxx |    4 ++++
 svx/source/svdraw/svdview.cxx             |   29 ++++++++++++++++++++++++++++-
 svx/source/table/tablecontroller.cxx      |   15 ++++++++-------
 5 files changed, 43 insertions(+), 8 deletions(-)

New commits:
commit 4d0fb81ce3381011f7c9baf9cd6c416bd4c294a4
Author:     merttumer <mert.tumer at collabora.com>
AuthorDate: Thu Apr 15 11:25:00 2021 +0300
Commit:     Mert Tumer <mert.tumer at collabora.com>
CommitDate: Mon Apr 19 07:52:22 2021 +0200

    Implemented CTRL + A selects all the cells
    
    When the table is selected, ctrl + a should select
    all the cells unless text editing is enabled.
    The previous behavior was deselecting the table and
    marking all the objects. However, for table it should
    select all the cells instead.
    
    Change-Id: I9fb512618a61a96ff21daa74c5a4ae9b31e3906e
    Signed-off-by: merttumer <mert.tumer at collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114129
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>

diff --git a/include/svx/sdr/table/tablecontroller.hxx b/include/svx/sdr/table/tablecontroller.hxx
index 7e438015e907..5edb3666dcbf 100644
--- a/include/svx/sdr/table/tablecontroller.hxx
+++ b/include/svx/sdr/table/tablecontroller.hxx
@@ -57,6 +57,7 @@ public:
     SVX_DLLPRIVATE virtual bool DeleteMarked() override;
 
     SVX_DLLPRIVATE virtual void onSelectionHasChanged() override;
+    SVX_DLLPRIVATE virtual void onSelectAll() override;
 
     SVX_DLLPRIVATE virtual void GetState( SfxItemSet& rSet ) override;
     SVX_DLLPRIVATE virtual void Execute( SfxRequest& rReq ) override;
diff --git a/include/svx/selectioncontroller.hxx b/include/svx/selectioncontroller.hxx
index 79c19f60dc61..bc4fbbf5098c 100644
--- a/include/svx/selectioncontroller.hxx
+++ b/include/svx/selectioncontroller.hxx
@@ -50,6 +50,8 @@ public:
 
     virtual void onSelectionHasChanged();
 
+    virtual void onSelectAll();
+
     virtual void GetState( SfxItemSet& rSet );
     virtual void Execute( SfxRequest& rReq );
 
diff --git a/svx/source/svdraw/selectioncontroller.cxx b/svx/source/svdraw/selectioncontroller.cxx
index 28dda4ed27a2..5f6f51312f4e 100644
--- a/svx/source/svdraw/selectioncontroller.cxx
+++ b/svx/source/svdraw/selectioncontroller.cxx
@@ -47,6 +47,10 @@ void SelectionController::onSelectionHasChanged()
 {
 }
 
+void SelectionController::onSelectAll()
+{
+}
+
 void SelectionController::GetState( SfxItemSet& /*rSet*/ )
 {
 }
diff --git a/svx/source/svdraw/svdview.cxx b/svx/source/svdraw/svdview.cxx
index 36fd070e1205..bb677b7707e6 100644
--- a/svx/source/svdraw/svdview.cxx
+++ b/svx/source/svdraw/svdview.cxx
@@ -35,6 +35,7 @@
 #include <svdibrow.hxx>
 #endif
 
+#include <svx/sdr/table/tablecontroller.hxx>
 #include <svx/svdoutl.hxx>
 #include <svx/svdview.hxx>
 #include <editeng/editview.hxx>
@@ -1354,7 +1355,33 @@ void SdrView::MarkAll()
 #endif
     } else if (IsGluePointEditMode()) MarkAllGluePoints();
     else if (HasMarkablePoints()) MarkAllPoints();
-    else MarkAllObj();
+    else {
+        // check for table
+        bool bMarkAll = true;
+        const SdrMarkList& rMarkList = GetMarkedObjectList();
+        if (rMarkList.GetMarkCount() == 1)
+        {
+            const SdrObject* pObj(rMarkList.GetMark(0)->GetMarkedSdrObj());
+            SdrView* pView(dynamic_cast<SdrView*>(this));
+            if (pObj && pView && (pObj->GetObjInventor() == SdrInventor::Default)
+                && (pObj->GetObjIdentifier() == OBJ_TABLE))
+            {
+                mxSelectionController.clear();
+                mxSelectionController = sdr::table::CreateTableController(
+                    *pView, static_cast<const sdr::table::SdrTableObj&>(*pObj),
+                    mxLastSelectionController);
+
+                if (mxSelectionController.is())
+                {
+                    mxLastSelectionController.clear();
+                    mxSelectionController->onSelectAll();
+                    bMarkAll = false;
+                }
+            }
+        }
+        if ( bMarkAll )
+            MarkAllObj();
+    }
 }
 
 void SdrView::UnmarkAll()
diff --git a/svx/source/table/tablecontroller.cxx b/svx/source/table/tablecontroller.cxx
index 21d7809b3d03..464d8290e572 100644
--- a/svx/source/table/tablecontroller.cxx
+++ b/svx/source/table/tablecontroller.cxx
@@ -413,6 +413,14 @@ void SvxTableController::onSelectionHasChanged()
         destroySelectionOverlay();
     }
 }
+void SvxTableController::onSelectAll()
+{
+    sdr::table::SdrTableObj* pTableObj = mxTableObj.get();
+    if ( pTableObj && !pTableObj->IsTextEditActive())
+    {
+        selectAll();
+    }
+}
 
 
 void SvxTableController::GetState( SfxItemSet& rSet )
commit d7981dde529810c4e8f548f7bf2be7c3b005ce99
Author:     merttumer <mert.tumer at collabora.com>
AuthorDate: Thu Apr 15 11:21:01 2021 +0300
Commit:     Mert Tumer <mert.tumer at collabora.com>
CommitDate: Mon Apr 19 07:52:10 2021 +0200

    Fix ESC key selects all the cells of the table object
    
    Selecting the table should not necessarily mean
    selecting all the cells. If all the cells are selected
    which ESC key does the same thing, it is impossible to
    delete the table with the delete key,
    only after an input following by an ESC
    deleselects them and deleting becomes possible.
    
    Change-Id: I33f182d330f1cbc411d47b86098a4aea544a90ae
    Signed-off-by: merttumer <mert.tumer at collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114128
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/svx/source/table/tablecontroller.cxx b/svx/source/table/tablecontroller.cxx
index 2badfa5a5ef0..21d7809b3d03 100644
--- a/svx/source/table/tablecontroller.cxx
+++ b/svx/source/table/tablecontroller.cxx
@@ -402,13 +402,6 @@ void SvxTableController::onSelectionHasChanged()
         const SdrMarkList& rMarkList= mrView.GetMarkedObjectList();
         if( rMarkList.GetMarkCount() == 1 )
             bSelected = mxTableObj.get() == rMarkList.GetMark(0)->GetMarkedSdrObj();
-        /* fdo#46186 Selecting the table means selecting the entire cells */
-        if (!hasSelectedCells() && pTableObj)
-        {
-            maCursorFirstPos = SdrTableObj::getFirstCell();
-            maCursorLastPos = pTableObj->getLastCell();
-            mbCellSelectionMode=true;
-        }
     }
 
     if( bSelected )


More information about the Libreoffice-commits mailing list