C2: dismiss state machine, animation guard prevents double-dismiss

This commit is contained in:
Damocles 2026-04-13 16:57:38 +02:00
parent 88d8842064
commit 176f8a1871
2 changed files with 10 additions and 0 deletions

View file

@ -168,10 +168,16 @@ M.PopupPanel {
property bool _skipDismiss: false property bool _skipDismiss: false
function dismiss() { function dismiss() {
if (notifItem.modelData.state === "dismissing")
return;
notifItem.modelData.beginDismiss();
_dismissAnim.start(); _dismissAnim.start();
} }
function dismissVisualOnly() { function dismissVisualOnly() {
if (notifItem.modelData.state === "dismissing")
return;
notifItem.modelData.beginDismiss();
_skipDismiss = true; _skipDismiss = true;
_dismissAnim.start(); _dismissAnim.start();
} }

View file

@ -242,7 +242,11 @@ PanelWindow {
property bool _fullDismiss: false property bool _fullDismiss: false
function animateDismiss(full) { function animateDismiss(full) {
if (popupItem.modelData.state === "dismissing")
return;
popupItem.modelData.beginDismiss();
_fullDismiss = !!full; _fullDismiss = !!full;
slideIn.stop();
slideOut.start(); slideOut.start();
} }