[Libreoffice-commits] core.git: sc/source
Laurent Godard
lgodard.libre at laposte.net
Wed Feb 13 08:47:43 PST 2013
sc/source/ui/view/tabvwshf.cxx | 37 +++++++++++++++----------------------
1 file changed, 15 insertions(+), 22 deletions(-)
New commits:
commit 30862ca42c6b548a2dce99c0f2a0c2886f059dfa
Author: Laurent Godard <lgodard.libre at laposte.net>
Date: Fri Feb 8 18:49:05 2013 +0100
calc : multiple tabs can be hidden at once
- enables the "Format > Sheet > Hide" menu when mutiple tabs are selected
provided there remain one tab at least at the end
- loops over selected tabs to hide them
- does nothing if the command leads to no visible tabs.
Change-Id: I445eccc188f1817006cb425dc9a0e92a25350ec8
Reviewed-on: https://gerrit.libreoffice.org/2053
Reviewed-by: Kohei Yoshida <kohei.yoshida at gmail.com>
Tested-by: Kohei Yoshida <kohei.yoshida at gmail.com>
diff --git a/sc/source/ui/view/tabvwshf.cxx b/sc/source/ui/view/tabvwshf.cxx
index 89585dd..c8320ba 100644
--- a/sc/source/ui/view/tabvwshf.cxx
+++ b/sc/source/ui/view/tabvwshf.cxx
@@ -109,33 +109,26 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq )
ScMarkData& rMark = pViewData->GetMarkData();
SCTAB nTabSelCount = rMark.GetSelectCount();
sal_uInt16 nVis = 0;
- for ( SCTAB i=0; i < nTabCount && nVis<2; i++ )
+
+ // check to make sure we won't hide all sheets. we need at least one visible at all times.
+ for ( SCTAB i=0; i < nTabCount && nVis<nTabSelCount + 1; i++ )
if (pDoc->IsVisible(i))
++nVis;
- if ( nVis<2 || !pDoc->IsDocEditable() || nTabSelCount > 1 )
+ if ( nVis<=nTabSelCount || !pDoc->IsDocEditable() )
break;
-
rtl::OUString aName;
- if( pReqArgs != NULL )
- {
- const SfxPoolItem* pItem;
- if( pReqArgs->HasItem( FID_TABLE_HIDE, &pItem ) )
- aName = ((const SfxStringItem*)pItem)->GetValue();
- }
+ SCTAB nHideTab;
+ ScMarkData::MarkedTabsType::const_iterator it;
+
+ ScMarkData::MarkedTabsType selectedTabs = rMark.GetSelectedTabs();
- if (aName.isEmpty())
+ for (it=selectedTabs.begin(); it!=selectedTabs.end(); ++it)
{
- pDoc->GetName( nCurrentTab, aName ); // aktuelle Tabelle
- rReq.AppendItem( SfxStringItem( FID_TABLE_HIDE, aName ) );
+ nHideTab = *it;
+ if (pDoc->IsVisible( nHideTab ))
+ HideTable( nHideTab );
}
-
- SCTAB nHideTab;
- if (pDoc->GetTable( aName, nHideTab ))
- HideTable( nHideTab );
-
- if( ! rReq.IsAPI() )
- rReq.Done();
}
break;
@@ -841,11 +834,11 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq )
case FID_TABLE_HIDE:
{
sal_uInt16 nVis = 0;
- for ( SCTAB i=0; i < nTabCount && nVis<2; i++ )
+ // enable menu : check to make sure we won't hide all sheets. we need at least one visible at all times.
+ for ( SCTAB i=0; i < nTabCount && nVis<nTabSelCount + 1; i++ )
if (pDoc->IsVisible(i))
++nVis;
-
- if ( nVis<2 || !pDoc->IsDocEditable() || nTabSelCount > 1 )
+ if ( nVis<=nTabSelCount || !pDoc->IsDocEditable() )
rSet.DisableItem( nWhich );
}
break;
More information about the Libreoffice-commits
mailing list