Bug 450001

Summary: Spectacle closes when a notification generated by it disappears
Product: [Applications] Spectacle Reporter: Patrick Silva <bugseforuns>
Component: GeneralAssignee: Boudhayan Gupta <me>
Status: RESOLVED FIXED    
Severity: normal CC: kde, nate
Priority: NOR    
Version: 22.12.1   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed In: 23.04

Description Patrick Silva 2022-02-11 11:29:57 UTC
SUMMARY
Can reproduce on both X11 and Wayland sessions.

STEPS TO REPRODUCE
1. open Spectacle by pressing printscreen key
2. make sure 'Quit after manual Save or Copy' option is checked
3. save the screenshot (Spectacle closes and Plasma shows a notification)
4. open Spectacle again while the notification is visible
5. wait for the notification to disappear

OBSERVED RESULT
Spectacle closes when the notification disappears

EXPECTED RESULT
Spectacle remains open when the notification disappears

SOFTWARE/OS VERSIONS
Operating System: KDE neon Unstable Edition
KDE Plasma Version: 5.24.80
KDE Frameworks Version: 5.91.0
Qt Version: 5.15.3
Graphics Platform: Wayland
Comment 1 Bug Janitor Service 2023-03-03 09:09:27 UTC
A possibly relevant merge request was started @ https://invent.kde.org/graphics/spectacle/-/merge_requests/210
Comment 2 Noah Davis 2023-03-05 01:19:01 UTC
Git commit fc2d625144536b53e5f3e671341b4a5651857cf2 by Noah Davis.
Committed on 04/03/2023 at 18:24.
Pushed by ndavis into branch 'master'.

Use QEventLoopLocker to keep Spectacle alive for notifications

Stopped using setQuitOnLastWindowClosed(false) because setting it true
or false depending on the situation was too complex. Now we just create
a QEventLoopLocker when we make a notification and destroy the event
loop locker, which also automatically quits the application, when the
notification is destroyed. To close the windows, we use
SpectacleWindow::closeAll() instead of making them hidden. This
automatically closes Spectacle when the QEventLoopLocker has not been
created.
Related: bug 466143

M  +12   -8    src/Gui/SpectacleWindow.cpp
M  +5    -0    src/Gui/SpectacleWindow.h
M  +6    -17   src/SpectacleCore.cpp
M  +1    -0    src/SpectacleCore.h

https://invent.kde.org/graphics/spectacle/commit/fc2d625144536b53e5f3e671341b4a5651857cf2