tdf#160580: make cycling from first to last tab configurable
This introduces Office/Calc/Input/CycleNextPrevSheetTab
boolean property, that controls the behavior implemented
in commit 552170c9c8
(tdf#156311 Cycling through tabs in Calc, 2023-08-16).
Change-Id: I0510743b4ab6d92488ba73a7b8d5b83be9586b2f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174745
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
This commit is contained in:
parent
963255acd4
commit
5daac16a03
2 changed files with 21 additions and 4 deletions
|
@ -721,6 +721,13 @@
|
||||||
</info>
|
</info>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
</prop>
|
</prop>
|
||||||
|
<prop oor:name="WrapNextPrevSheetTab" oor:type="xs:boolean" oor:nillable="false">
|
||||||
|
<info>
|
||||||
|
<desc>When switching to next / previous sheet, wrap from last to first tab (and vice versa)</desc>
|
||||||
|
<label>When switching to next / previous sheet, wrap from last to first tab (and vice versa)</label>
|
||||||
|
</info>
|
||||||
|
<value>true</value>
|
||||||
|
</prop>
|
||||||
<prop oor:name="LastFunctions" oor:type="oor:int-list" oor:nillable="false">
|
<prop oor:name="LastFunctions" oor:type="oor:int-list" oor:nillable="false">
|
||||||
<info>
|
<info>
|
||||||
<desc>Specifies the functions last used.</desc>
|
<desc>Specifies the functions last used.</desc>
|
||||||
|
|
|
@ -1834,25 +1834,35 @@ void ScTabView::SelectNextTab( short nDir, bool bExtendSelection )
|
||||||
ScDocument& rDoc = aViewData.GetDocument();
|
ScDocument& rDoc = aViewData.GetDocument();
|
||||||
SCTAB nTab = aViewData.GetTabNo();
|
SCTAB nTab = aViewData.GetTabNo();
|
||||||
SCTAB nNextTab = nTab;
|
SCTAB nNextTab = nTab;
|
||||||
|
SCTAB nCount = rDoc.GetTableCount();
|
||||||
if (nDir < 0)
|
if (nDir < 0)
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
--nNextTab;
|
--nNextTab;
|
||||||
if (nNextTab < 0)
|
if (nNextTab < 0)
|
||||||
nNextTab = rDoc.GetTableCount();
|
{
|
||||||
|
if (officecfg::Office::Calc::Input::WrapNextPrevSheetTab::get())
|
||||||
|
nNextTab = nCount;
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (rDoc.IsVisible(nNextTab))
|
if (rDoc.IsVisible(nNextTab))
|
||||||
break;
|
break;
|
||||||
} while (nNextTab != nTab);
|
} while (nNextTab != nTab);
|
||||||
}
|
}
|
||||||
if (nDir > 0)
|
else // nDir > 0
|
||||||
{
|
{
|
||||||
SCTAB nCount = rDoc.GetTableCount();
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
++nNextTab;
|
++nNextTab;
|
||||||
if (nNextTab >= nCount)
|
if (nNextTab >= nCount)
|
||||||
nNextTab = 0;
|
{
|
||||||
|
if (officecfg::Office::Calc::Input::WrapNextPrevSheetTab::get())
|
||||||
|
nNextTab = 0;
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (rDoc.IsVisible(nNextTab))
|
if (rDoc.IsVisible(nNextTab))
|
||||||
break;
|
break;
|
||||||
} while (nNextTab != nTab);
|
} while (nNextTab != nTab);
|
||||||
|
|
Loading…
Reference in a new issue