diff options
author | merttumer <mert.tumer@collabora.com> | 2021-04-15 11:25:00 +0300 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2021-06-15 09:18:14 +0200 |
commit | aeaceb5b880f886ce01927f26b4bd9602315292c (patch) | |
tree | fbc142ca0ab248f71db1b47395c78eaf999eaa92 /svx | |
parent | ebe0ba78ca7f6767351023a93fd03a0f336c4189 (diff) |
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>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/svdraw/selectioncontroller.cxx | 4 | ||||
-rw-r--r-- | svx/source/svdraw/svdview.cxx | 29 | ||||
-rw-r--r-- | svx/source/table/tablecontroller.cxx | 8 |
3 files changed, 40 insertions, 1 deletions
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 ) |