diff options
-rw-r--r-- | include/svx/sdr/table/tablecontroller.hxx | 1 | ||||
-rw-r--r-- | include/svx/selectioncontroller.hxx | 2 | ||||
-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 |
5 files changed, 43 insertions, 1 deletions
diff --git a/include/svx/sdr/table/tablecontroller.hxx b/include/svx/sdr/table/tablecontroller.hxx index 6b505ae4dfd3..e4b406b1f77a 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; virtual void Execute( SfxRequest& rReq ) override; diff --git a/include/svx/selectioncontroller.hxx b/include/svx/selectioncontroller.hxx index c9e12c322a5d..57dec07b9fd6 100644 --- a/include/svx/selectioncontroller.hxx +++ b/include/svx/selectioncontroller.hxx @@ -49,6 +49,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 2cbed57bb1c2..f819deba699f 100644 --- a/svx/source/svdraw/svdview.cxx +++ b/svx/source/svdraw/svdview.cxx @@ -30,6 +30,7 @@ #include <svx/svdomedia.hxx> #include <svx/svdetc.hxx> +#include <svx/sdr/table/tablecontroller.hxx> #include <svx/svdoutl.hxx> #include <svx/svdview.hxx> #include <editeng/flditem.hxx> @@ -1338,7 +1339,33 @@ void SdrView::MarkAll() GetTextEditOutlinerView()->SetSelection(ESelection(0,0,EE_PARA_ALL,EE_TEXTPOS_ALL)); } 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 = 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 438ffbcb9392..a81756c0ffdc 100644 --- a/svx/source/table/tablecontroller.cxx +++ b/svx/source/table/tablecontroller.cxx @@ -418,6 +418,14 @@ void SvxTableController::onSelectionHasChanged() destroySelectionOverlay(); } } +void SvxTableController::onSelectAll() +{ + sdr::table::SdrTableObj* pTableObj = mxTableObj.get(); + if ( pTableObj && !pTableObj->IsTextEditActive()) + { + selectAll(); + } +} void SvxTableController::GetState( SfxItemSet& rSet ) |