[plasma/plasma-workspace/Plasma/6.7] components/calendar/qml: InfiniteList: fix calendar changing views when dragging it between displays
Nate Graham <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit 41b84a1be8503f73ebdb017e49137f924abebe3c by Nate Graham. Committed on 17/08/2026 at 21:17. Pushed by ngraham into branch 'Plasma/6.7'. InfiniteList: fix calendar changing views when dragging it between displays When dragging the calendar between displays, the view jumps one month and 11 years. This is because during the reparenting of the widget the width and height briefly goes to 0. The widget interprets this as the view having reached the edge on the month, year, and decade views, resulting in said time jump. Might be possible to fix the root cause within the shell in the future. Previously the code ate one event at startup to prevent it from jumping when dragging the widget to desktop. BUG: 472360 (cherry picked from commit d610eac44f25b7208aae743043a4cdf56fec4310) Co-authored-by: Antti Savolainen <[email protected]> M +5 -10 components/calendar/qml/InfiniteList.qml https://invent.kde.org/plasma/plasma-workspace/-/commit/41b84a1be8503f73ebdb017e49137f924abebe3c diff --git a/components/calendar/qml/InfiniteList.qml b/components/calendar/qml/InfiniteList.qml index df8e809b2b..0da650a1b1 100644 --- a/components/calendar/qml/InfiniteList.qml +++ b/components/calendar/qml/InfiniteList.qml @@ -51,7 +51,6 @@ ListView { DecadeView } - property bool changeDate: false // To control whether to animate or animate + date change after start up complete. Should always be false on start up. property bool dragHandled: false highlightRangeMode: ListView.StrictlyEnforceRange @@ -96,27 +95,23 @@ ListView { if (handleDrag()) { return; } - if (changeDate) { - if (direction < 0) { - previousView(); - } else { - nextView(); - } + if (direction < 0) { + previousView(); } else { - changeDate = true; + nextView(); } resetViewPosition(); } // These signal handlers animate the view. They are the only ones through which date (and should as well) changes. onAtYEndChanged: { - if (atYEnd) { + if (atYEnd && width > 0 && height > 0) { handleDateChange(1); } } onAtYBeginningChanged: { - if (atYBeginning) { + if (atYBeginning && width > 0 && height > 0) { handleDateChange(-1); } }