diff --git a/src/kbookmarkmanager.h b/src/kbookmarkmanager.h --- a/src/kbookmarkmanager.h +++ b/src/kbookmarkmanager.h @@ -333,6 +333,8 @@ void parse() const; void init(const QString &dbusPath); + void startKEditBookmarks(const QStringList &args); + KBookmarkManagerPrivate *const d; friend class KBookmarkGroup; diff --git a/src/kbookmarkmanager.cpp b/src/kbookmarkmanager.cpp --- a/src/kbookmarkmanager.cpp +++ b/src/kbookmarkmanager.cpp @@ -325,6 +325,23 @@ } } +void KBookmarkManager::startKEditBookmarks(const QStringList &args) +{ + bool success = QProcess::startDetached(QStringLiteral("keditbookmarks"), args); + + if (!success) { + QString err = tr("Cannot launch keditbookmarks.\n\n" + "Most likely you do not have keditbookmarks currently installed"); + + if (d->m_dialogAllowed && qobject_cast(qApp) && QThread::currentThread() == qApp->thread()) { + QMessageBox::warning(QApplication::activeWindow(), QApplication::applicationName(), err); + } + + qWarning() << QStringLiteral("Failed to start keditbookmarks"); + emit this->error(err); + } +} + void KBookmarkManager::slotFileChanged(const QString &path) { if (path == d->m_bookmarksFile) { @@ -642,7 +659,7 @@ args << QStringLiteral("--dbusObjectName") << d->m_dbusObjectName; } args << d->m_bookmarksFile; - QProcess::startDetached(QStringLiteral("keditbookmarks"), args); + startKEditBookmarks(args); } void KBookmarkManager::slotEditBookmarksAtAddress(const QString &address) @@ -659,7 +676,7 @@ } args << QStringLiteral("--address") << address << d->m_bookmarksFile; - QProcess::startDetached(QStringLiteral("keditbookmarks"), args); + startKEditBookmarks(args); } ///////