From e56c31a961b182663decd44bc57729576446315b Mon Sep 17 00:00:00 2001 From: Ahmad Samir Date: Mon, 13 Apr 2020 11:30:47 +0200 Subject: [PATCH] [BookmarkMenu] Adapt the code to KBookmarks 5.69 changes Starting from KBookmarks 5.69 the ctor that took a KActionCollection parameter has been deprecated, and we need to manually add the various bookmark actions to the actionCollection so that they show up in the shortcusts editor. Move the code that overrides the add bookmark shortcut, Ctrl+B, to the BookmarkMenu class, so that all the relevant code is in one place. BUG: 419981 (cherry picked from commit 6db7f8d2593ccb0238b2b547ed6eaf7da6a26c4c) (cherry picked from commit dcf8cf3f2255293da170648f633873aa7c4afcf1) --- src/BookmarkMenu.cpp | 34 +++++++++++++++++++++++++++++----- src/BookmarkMenu.h | 2 +- src/MainWindow.cpp | 10 ---------- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/src/BookmarkMenu.cpp b/src/BookmarkMenu.cpp index 77344ad1..5b83ece9 100644 --- a/src/BookmarkMenu.cpp +++ b/src/BookmarkMenu.cpp @@ -21,24 +21,48 @@ // Own #include "BookmarkMenu.h" +#include "Shortcut_p.h" // KDE #include +#include +#include +#include // Qt #include -#include -#include +#include #include // std::any_of -BookmarkMenu::BookmarkMenu (KBookmarkManager *mgr, KBookmarkOwner *owner, QMenu *parentMenu, KActionCollection *collec) : - KBookmarkMenu (mgr, owner, parentMenu, collec) +BookmarkMenu::BookmarkMenu (KBookmarkManager *mgr, KBookmarkOwner *owner, QMenu *parentMenu, KActionCollection *collection) : +#if KBOOKMARKS_VERSION < QT_VERSION_CHECK(5, 69, 0) + KBookmarkMenu (mgr, owner, parentMenu, collection) +#else + KBookmarkMenu (mgr, owner, parentMenu) +#endif { + QAction *bookmarkAction; +#if KBOOKMARKS_VERSION < QT_VERSION_CHECK(5, 69, 0) + bookmarkAction = collection->action(QStringLiteral("add_bookmark")); +#else + collection->addActions(parentMenu->actions()); + + bookmarkAction = addBookmarkAction(); +#endif + + Q_ASSERT(bookmarkAction); + // We need to hijack the action - note this only hijacks top-level action - QAction *bookmarkAction = collec->action(QStringLiteral("add_bookmark")); disconnect(bookmarkAction, nullptr, this, nullptr); connect(bookmarkAction, &QAction::triggered, this, &BookmarkMenu::maybeAddBookmark); + + // replace Ctrl+B shortcut for bookmarks only if user hasn't already + // changed the shortcut; however, if the user changed it to Ctrl+B + // this will still get changed to Ctrl+Shift+B + if (bookmarkAction->shortcut() == QKeySequence(Konsole::ACCEL + Qt::Key_B)) { + collection->setDefaultShortcut(bookmarkAction, Konsole::ACCEL + Qt::SHIFT + Qt::Key_B); + } } void BookmarkMenu::maybeAddBookmark() diff --git a/src/BookmarkMenu.h b/src/BookmarkMenu.h index a42eab23..fde893c0 100644 --- a/src/BookmarkMenu.h +++ b/src/BookmarkMenu.h @@ -39,7 +39,7 @@ class KONSOLEPRIVATE_EXPORT BookmarkMenu : public KBookmarkMenu Q_OBJECT public: - BookmarkMenu (KBookmarkManager *mgr, KBookmarkOwner *owner, QMenu *parentMenu, KActionCollection *collec); + BookmarkMenu (KBookmarkManager *mgr, KBookmarkOwner *owner, QMenu *parentMenu, KActionCollection *collection); private Q_SLOTS: void maybeAddBookmark(); diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 461b9e54..90bbf5ed 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -190,16 +190,6 @@ void MainWindow::correctStandardShortcuts() if (helpAction != nullptr) { actionCollection()->setDefaultShortcut(helpAction, QKeySequence()); } - - // replace Ctrl+B shortcut for bookmarks only if user hasn't already - // changed the shortcut; however, if the user changed it to Ctrl+B - // this will still get changed to Ctrl+Shift+B - QAction *bookmarkAction = actionCollection()->action(QStringLiteral("add_bookmark")); - if ((bookmarkAction != nullptr) - && bookmarkAction->shortcut() == QKeySequence(Konsole::ACCEL + Qt::Key_B)) { - actionCollection()->setDefaultShortcut(bookmarkAction, - Konsole::ACCEL + Qt::SHIFT + Qt::Key_B); - } } ViewManager *MainWindow::viewManager() const -- 2.26.1