diff --git a/applets/pager/package/contents/config/main.xml b/applets/pager/package/contents/config/main.xml --- a/applets/pager/package/contents/config/main.xml +++ b/applets/pager/package/contents/config/main.xml @@ -23,6 +23,10 @@ false + + + false + diff --git a/applets/pager/package/contents/ui/configGeneral.qml b/applets/pager/package/contents/ui/configGeneral.qml --- a/applets/pager/package/contents/ui/configGeneral.qml +++ b/applets/pager/package/contents/ui/configGeneral.qml @@ -40,6 +40,7 @@ property int cfg_currentDesktopSelected property alias cfg_pagerLayout: pagerLayout.currentIndex property alias cfg_showOnlyCurrentScreen: showOnlyCurrentScreen.checked + property alias cfg_wrapPage: wrapPage.checked onCfg_displayedTextChanged: { switch (cfg_displayedText) { @@ -132,6 +133,16 @@ text: i18n("Only the current screen") } + Item { + width: 2 + height: 2 + } //spacer + + QtControls.CheckBox { + id: wrapPage + text: i18n("Page navigation wraps around") + } + QtControls.Label { text: i18n("Layout:") Layouts.Layout.alignment: Qt.AlignVCenter|Qt.AlignRight diff --git a/applets/pager/package/contents/ui/main.qml b/applets/pager/package/contents/ui/main.qml --- a/applets/pager/package/contents/ui/main.qml +++ b/applets/pager/package/contents/ui/main.qml @@ -125,9 +125,15 @@ while (increment != 0) { if (increment < 0) { - pagerModel.changePage((pagerModel.currentPage + 1) % repeater.count); + var nextPage = plasmoid.configuration.wrapPage? + (pagerModel.currentPage + 1) % repeater.count : + Math.min(pagerModel.currentPage + 1, repeater.count - 1); + pagerModel.changePage(nextPage); } else { - pagerModel.changePage((repeater.count + pagerModel.currentPage - 1) % repeater.count); + var previousPage = plasmoid.configuration.wrapPage ? + (repeater.count + pagerModel.currentPage - 1) % repeater.count : + Math.max(pagerModel.currentPage - 1, 0); + pagerModel.changePage(previousPage); } increment += (increment < 0) ? 1 : -1;