sc/sdi/scalc.sdi               |    2 +-
 sc/source/ui/inc/viewfunc.hxx  |    2 +-
 sc/source/ui/view/tabvwshf.cxx |   20 +++++++++++++++++++-
 sc/source/ui/view/viewfun2.cxx |    6 +++++-
 4 files changed, 26 insertions(+), 4 deletions(-)

New commits:
commit 53bd76e8f193baf667077eb52d06e3c244964819
Author:     gokaysatir <gokaysa...@collabora.com>
AuthorDate: Wed Sep 30 15:48:44 2020 +0300
Commit:     Szymon Kłos <szymon.k...@collabora.com>
CommitDate: Mon Oct 12 09:12:49 2020 +0200

    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.k...@collabora.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104078
    Tested-by: Jenkins

diff --git a/sc/sdi/scalc.sdi b/sc/sdi/scalc.sdi
index 93a6b67be6e5..86ae80497a77 100644
--- a/sc/sdi/scalc.sdi
+++ b/sc/sdi/scalc.sdi
@@ -2593,7 +2593,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 7780e74bc790..5a7ad681c628 100644
--- a/sc/source/ui/inc/viewfunc.hxx
+++ b/sc/source/ui/inc/viewfunc.hxx
@@ -285,7 +285,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 95e566267ae1..98ce2db58fa7 100644
--- a/sc/source/ui/view/tabvwshf.cxx
+++ b/sc/source/ui/view/tabvwshf.cxx
@@ -107,7 +107,25 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq )
                 if ( rDoc.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 90ddff57df08..572b62cf4036 100644
--- a/sc/source/ui/view/viewfun2.cxx
+++ b/sc/source/ui/view/viewfun2.cxx
@@ -3146,7 +3146,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();
@@ -3181,6 +3181,10 @@ void ScViewFunc::HideTable( const ScMarkData& rMark )
                 undoTabs.push_back(nTab);
         }
     }
+
+    if (nTabToSelect != -1)
+        SetTabNo(nTabToSelect);
+
     if (bUndo)
     {
         pDocSh->GetUndoManager()->AddUndoAction( 
std::make_unique<ScUndoShowHideTab>( pDocSh, undoTabs, false ) );
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to