diff options
author | gokaysatir <gokaysatir@collabora.com> | 2020-09-30 15:48:44 +0300 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2020-10-26 09:57:30 +0100 |
commit | fc56c313d19c74ed737a93fbed8eaf3d6c962e5c (patch) | |
tree | 7dc96aef5ba1a2b2c41dec6c118da640f004d177 | |
parent | 1c44b8d103dca932b893fbf1dcdff0650ea91e1b (diff) |
Online: Hide right clicked sheet.
On core side, if user clicks on a tab with right mouse button, clicked tab is selected.
So, for core side, if this feature will be desired, some more modification will be needed.
Change-Id: Ic4755b27b8ba98d3a6aa086b2e0a3566d095ba16
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103685
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104077
Reviewed-by: Andras Timar <andras.timar@collabora.com>
-rw-r--r-- | sc/sdi/scalc.sdi | 2 | ||||
-rw-r--r-- | sc/source/ui/inc/viewfunc.hxx | 2 | ||||
-rw-r--r-- | sc/source/ui/view/tabvwshf.cxx | 20 | ||||
-rw-r--r-- | sc/source/ui/view/viewfun2.cxx | 8 |
4 files changed, 28 insertions, 4 deletions
diff --git a/sc/sdi/scalc.sdi b/sc/sdi/scalc.sdi index 87ef5950d333..23b9c72fbe0f 100644 --- a/sc/sdi/scalc.sdi +++ b/sc/sdi/scalc.sdi @@ -2576,7 +2576,7 @@ SfxVoidItem GoUpToStartOfDataSel SID_CURSORBLKUP_SEL SfxVoidItem Hide FID_TABLE_HIDE -(SfxStringItem aTableName FID_TABLE_HIDE) +(SfxInt16Item nTabNumber FID_TABLE_HIDE) [ AutoUpdate = FALSE, FastCall = FALSE, diff --git a/sc/source/ui/inc/viewfunc.hxx b/sc/source/ui/inc/viewfunc.hxx index 85857d5065d7..fb64ff180989 100644 --- a/sc/source/ui/inc/viewfunc.hxx +++ b/sc/source/ui/inc/viewfunc.hxx @@ -273,7 +273,7 @@ public: const OUString& rSource ); void ShowTable( const std::vector<OUString>& rNames ); - void HideTable( const ScMarkData& rMark ); + void HideTable( const ScMarkData& rMark, SCTAB nTabToSelect = -1); void MakeScenario(const OUString& rName, const OUString& rComment, const Color& rColor, ScScenarioFlags nFlags); diff --git a/sc/source/ui/view/tabvwshf.cxx b/sc/source/ui/view/tabvwshf.cxx index e0fbd782619b..0a297c717741 100644 --- a/sc/source/ui/view/tabvwshf.cxx +++ b/sc/source/ui/view/tabvwshf.cxx @@ -109,7 +109,25 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq ) if ( pDoc->IsDocEditable() ) { ScMarkData& rMark = rViewData.GetMarkData(); - HideTable( rMark ); + SCTAB nActiveTab = -1; + // For the cases when user right clicks on a non-active tab and hides it. This case is possible for Online. + if (pReqArgs) + { + const SfxPoolItem *pItem; + if( pReqArgs->HasItem( FID_TABLE_HIDE, &pItem ) ) + { + SCTAB nTabNumber = static_cast<const SfxInt16Item*>(pItem)->GetValue(); + // Does selected sheets (tabs) list include the sheet to be hidden? + std::set<SCTAB>::iterator it = rMark.GetSelectedTabs().find(nTabNumber); + if (it == rMark.GetSelectedTabs().end()) + { + // No it doesn't, so we won't shift the selected tab. Let's remember its position. + nActiveTab = GetViewData().GetTabNo(); + } + rMark.SelectOneTable(nTabNumber); + } + } + HideTable( rMark, nActiveTab ); } } break; diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx index 1b948b916746..949abf8dbd98 100644 --- a/sc/source/ui/view/viewfun2.cxx +++ b/sc/source/ui/view/viewfun2.cxx @@ -3035,7 +3035,7 @@ void ScViewFunc::ShowTable( const std::vector<OUString>& rNames ) } } -void ScViewFunc::HideTable( const ScMarkData& rMark ) +void ScViewFunc::HideTable( const ScMarkData& rMark, SCTAB nTabToSelect ) { ScDocShell* pDocSh = GetViewData().GetDocShell(); ScDocument& rDoc = pDocSh->GetDocument(); @@ -3072,6 +3072,12 @@ void ScViewFunc::HideTable( const ScMarkData& rMark ) undoTabs.push_back(nTab); } } + + if (nTabToSelect != -1) + { + SetTabNo(nTabToSelect); + } + if (bUndo) { pDocSh->GetUndoManager()->AddUndoAction( o3tl::make_unique<ScUndoShowHideTab>( pDocSh, undoTabs, false ) ); |