diff options
Diffstat (limited to 'eventsview-plugins/eventsview-plugin-mastodon/MastodonFeedItem.qml')
| -rw-r--r-- | eventsview-plugins/eventsview-plugin-mastodon/MastodonFeedItem.qml | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/eventsview-plugins/eventsview-plugin-mastodon/MastodonFeedItem.qml b/eventsview-plugins/eventsview-plugin-mastodon/MastodonFeedItem.qml index b9eb3ce..c003950 100644 --- a/eventsview-plugins/eventsview-plugin-mastodon/MastodonFeedItem.qml +++ b/eventsview-plugins/eventsview-plugin-mastodon/MastodonFeedItem.qml @@ -30,6 +30,7 @@ SocialMediaFeedItem { property bool isReblogged: _rebloggedOverride >= 0 ? _rebloggedOverride === 1 : reblogged readonly property bool housekeeping: Lipstick.compositor.eventsLayer.housekeeping readonly property bool lockScreenActive: Lipstick.compositor.lockScreenLayer.deviceIsLocked + property bool _pendingOpenActionMenu: false property bool _contextMenuOpen: false property var _actionMenu property real _contextMenuHeight: (_contextMenuOpen && _actionMenu) ? _actionMenu.height : 0 @@ -50,10 +51,15 @@ SocialMediaFeedItem { if (mouse) { mouse.accepted = true } - Lipstick.compositor.eventsLayer.setHousekeeping(false) - if (!housekeeping && !lockScreenActive) { - _contextMenuOpen = false - openActionMenu() + _pendingOpenActionMenu = !lockScreenActive + && postActions + && actionPostId().length > 0 + && actionAccountId() >= 0 + openActionMenuTimer.restart() + } + onHousekeepingChanged: { + if (housekeeping && _pendingOpenActionMenu) { + Lipstick.compositor.eventsLayer.setHousekeeping(false) } } Component.onDestruction: { @@ -421,4 +427,23 @@ SocialMediaFeedItem { } } } + + Timer { + id: openActionMenuTimer + + interval: 0 + repeat: false + onTriggered: { + if (item.lockScreenActive) { + item._pendingOpenActionMenu = false + return + } + Lipstick.compositor.eventsLayer.setHousekeeping(false) + if (item._pendingOpenActionMenu) { + item._contextMenuOpen = false + item.openActionMenu() + } + item._pendingOpenActionMenu = false + } + } } |
