mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-26 14:23:09 +00:00
homescreens/folio: Delete empty page at end if last delegate is deleted
This commit is contained in:
parent
a748ecda5b
commit
a4d0894933
4 changed files with 24 additions and 6 deletions
|
|
@ -528,9 +528,7 @@ void DragState::onDelegateDropped()
|
|||
|
||||
// delete empty pages at the end if they exist
|
||||
// (it can be created if user drags app to new page, but doesn't place it there)
|
||||
while (PageListModel::self()->isLastPageEmpty() && PageListModel::self()->rowCount() > 1) {
|
||||
PageListModel::self()->removePage(PageListModel::self()->rowCount() - 1);
|
||||
}
|
||||
PageListModel::self()->deleteEmptyPagesAtEnd();
|
||||
|
||||
// clear ghost position if there is one
|
||||
FavouritesModel::self()->deleteGhostEntry();
|
||||
|
|
|
|||
|
|
@ -114,6 +114,16 @@ Item {
|
|||
visible: row >= 0 && row < Folio.HomeScreenState.pageRows &&
|
||||
column >= 0 && column < Folio.HomeScreenState.pageColumns
|
||||
|
||||
// called when we want to delete this delegate
|
||||
function removeSelf() {
|
||||
// remove from model
|
||||
root.pageModel.removeDelegate(delegate.row, delegate.column);
|
||||
|
||||
// delete empty pages at the end, and snap position to page that exists
|
||||
Folio.PageListModel.deleteEmptyPagesAtEnd();
|
||||
Folio.HomeScreenState.snapPage();
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: loader
|
||||
anchors.top: parent.top
|
||||
|
|
@ -203,7 +213,7 @@ Item {
|
|||
Kirigami.Action {
|
||||
icon.name: "emblem-favorite"
|
||||
text: i18n("Remove")
|
||||
onTriggered: root.pageModel.removeDelegate(delegate.row, delegate.column)
|
||||
onTriggered: delegate.removeSelf()
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -283,7 +293,7 @@ Item {
|
|||
Kirigami.Action {
|
||||
icon.name: "emblem-favorite"
|
||||
text: i18n("Remove")
|
||||
onTriggered: root.pageModel.removeDelegate(delegate.row, delegate.column)
|
||||
onTriggered: delegate.removeSelf()
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -364,7 +374,7 @@ Item {
|
|||
if (widget.applet) {
|
||||
widget.destroyApplet();
|
||||
}
|
||||
root.pageModel.removeDelegate(delegate.row, delegate.column);
|
||||
delegate.removeSelf();
|
||||
}
|
||||
|
||||
onClosed: widgetDelegate.editMode = false
|
||||
|
|
|
|||
|
|
@ -94,6 +94,14 @@ bool PageListModel::isLastPageEmpty()
|
|||
return m_pages.size() == 0 ? true : m_pages[m_pages.size() - 1]->isPageEmpty();
|
||||
}
|
||||
|
||||
void PageListModel::deleteEmptyPagesAtEnd()
|
||||
{
|
||||
// delete empty pages at the end if they exist
|
||||
while (PageListModel::self()->isLastPageEmpty() && PageListModel::self()->rowCount() > 1) {
|
||||
PageListModel::self()->removePage(PageListModel::self()->rowCount() - 1);
|
||||
}
|
||||
}
|
||||
|
||||
QJsonArray PageListModel::exportToJson()
|
||||
{
|
||||
QJsonArray arr;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,9 @@ public:
|
|||
|
||||
PageModel *getPage(int index);
|
||||
void removePage(int index);
|
||||
|
||||
Q_INVOKABLE void addPageAtEnd();
|
||||
Q_INVOKABLE void deleteEmptyPagesAtEnd();
|
||||
bool isLastPageEmpty();
|
||||
|
||||
QJsonArray exportToJson();
|
||||
|
|
|
|||
Loading…
Reference in a new issue