You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/kde-apps/konsole/files/konsole-19.12.3-kf5bookmark...

118 lines
4.3 KiB

From e56c31a961b182663decd44bc57729576446315b Mon Sep 17 00:00:00 2001
From: Ahmad Samir <a.samirh78@gmail.com>
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 <KActionCollection>
+#include <kbookmarks_version.h>
+#include <KBookmarkManager>
+#include <KBookmark>
// Qt
#include <QAction>
-#include <KBookmarkManager>
-#include <KBookmark>
+#include <QMenu>
#include <algorithm> // 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