summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormerttumer <mert.tumer@collabora.com>2021-04-15 11:25:00 +0300
committerAndras Timar <andras.timar@collabora.com>2021-06-15 09:18:14 +0200
commitaeaceb5b880f886ce01927f26b4bd9602315292c (patch)
treefbc142ca0ab248f71db1b47395c78eaf999eaa92
parentFix ESC key selects all the cells of the table object (diff)
downloadcore-aeaceb5b880f886ce01927f26b4bd9602315292c.tar.gz
core-aeaceb5b880f886ce01927f26b4bd9602315292c.zip
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@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114129 Reviewed-by: Jan Holesovsky <kendy@collabora.com> Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117189 Reviewed-by: Andras Timar <andras.timar@collabora.com>
-rw-r--r--include/svx/sdr/table/tablecontroller.hxx1
-rw-r--r--include/svx/selectioncontroller.hxx2
-rw-r--r--svx/source/svdraw/selectioncontroller.cxx4
-rw-r--r--svx/source/svdraw/svdview.cxx29
-rw-r--r--svx/source/table/tablecontroller.cxx8
5 files changed, 43 insertions, 1 deletions
diff --git a/include/svx/sdr/table/tablecontroller.hxx b/include/svx/sdr/table/tablecontroller.hxx
index cec83b996c87..9018e2587a2d 100644
--- a/include/svx/sdr/table/tablecontroller.hxx
+++ b/include/svx/sdr/table/tablecontroller.hxx
@@ -58,6 +58,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 11acdac3cd59..3ce5f7849ec3 100644
--- a/include/svx/selectioncontroller.hxx
+++ b/include/svx/selectioncontroller.hxx
@@ -51,6 +51,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 8cb678d66467..bc31a7543366 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 c68bbe443a72..ad6e4beb7cc4 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>
@@ -1359,7 +1360,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 e4183878c637..04d0d7a17bc6 100644
--- a/svx/source/table/tablecontroller.cxx
+++ b/svx/source/table/tablecontroller.cxx
@@ -410,6 +410,14 @@ void SvxTableController::onSelectionHasChanged()
destroySelectionOverlay();
}
}
+void SvxTableController::onSelectAll()
+{
+ sdr::table::SdrTableObj* pTableObj = mxTableObj.get();
+ if ( pTableObj && !pTableObj->IsTextEditActive())
+ {
+ selectAll();
+ }
+}
void SvxTableController::GetState( SfxItemSet& rSet )