kdeui: disable auto-restart when the application is about to quit

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-12-09 10:19:13 +02:00
parent 717fd59dc8
commit 32dbecf2c6
2 changed files with 14 additions and 5 deletions

View file

@ -150,7 +150,8 @@ public:
void _k_x11FilterDestroyed(); void _k_x11FilterDestroyed();
void _k_checkAppStartedSlot(); void _k_checkAppStartedSlot();
void _k_slot_KToolInvocation_hook(QStringList&, QByteArray&); void _k_KToolInvocation_hook(QStringList&, QByteArray&);
void _k_disableAutorestartSlot();
QString sessionConfigName() const; QString sessionConfigName() const;
void init(); void init();
@ -455,9 +456,11 @@ void KApplicationPrivate::init()
KCheckAccelerators::initiateIfNeeded(q); KCheckAccelerators::initiateIfNeeded(q);
q->connect(KToolInvocation::self(), SIGNAL(kapplication_hook(QStringList&,QByteArray&)), q->connect(KToolInvocation::self(), SIGNAL(kapplication_hook(QStringList&,QByteArray&)),
q, SLOT(_k_slot_KToolInvocation_hook(QStringList&,QByteArray&))); q, SLOT(_k_KToolInvocation_hook(QStringList&,QByteArray&)));
} }
// too late to restart if the application is about to quit (e.g. if QApplication::quit() was
// called or SIGTERM was received)
q->connect(q, SIGNAL(aboutToQuit()), SLOT(_k_disableAutorestartSlot()));
qRegisterMetaType<KUrl>(); qRegisterMetaType<KUrl>();
qRegisterMetaType<KUrl::List>(); qRegisterMetaType<KUrl::List>();
@ -880,7 +883,7 @@ void KApplicationPrivate::read_app_startup_id()
} }
// Hook called by KToolInvocation // Hook called by KToolInvocation
void KApplicationPrivate::_k_slot_KToolInvocation_hook(QStringList& envs,QByteArray& startup_id) void KApplicationPrivate::_k_KToolInvocation_hook(QStringList& envs,QByteArray& startup_id)
{ {
#ifdef Q_WS_X11 #ifdef Q_WS_X11
if (QX11Info::display()) { if (QX11Info::display()) {
@ -900,6 +903,11 @@ void KApplicationPrivate::_k_slot_KToolInvocation_hook(QStringList& envs,QByteAr
#endif #endif
} }
void KApplicationPrivate::_k_disableAutorestartSlot()
{
KCrash::setFlags(KCrash::flags() & ~KCrash::AutoRestart);
}
void KApplication::setSynchronizeClipboard(bool synchronize) void KApplication::setSynchronizeClipboard(bool synchronize)
{ {
KClipboardSynchronizer::self()->setSynchronizing(synchronize); KClipboardSynchronizer::self()->setSynchronizing(synchronize);

View file

@ -336,7 +336,8 @@ private:
Q_PRIVATE_SLOT(d, void _k_x11FilterDestroyed()) Q_PRIVATE_SLOT(d, void _k_x11FilterDestroyed())
Q_PRIVATE_SLOT(d, void _k_checkAppStartedSlot()) Q_PRIVATE_SLOT(d, void _k_checkAppStartedSlot())
Q_PRIVATE_SLOT(d, void _k_slot_KToolInvocation_hook(QStringList&, QByteArray&)) Q_PRIVATE_SLOT(d, void _k_KToolInvocation_hook(QStringList&, QByteArray&))
Q_PRIVATE_SLOT(d, void _k_disableAutorestartSlot())
}; };
#endif #endif