diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bookmarks/bookmarksmanager.cpp | 28 | ||||
-rw-r--r-- | src/bookmarks/bookmarksmanager.h | 6 |
2 files changed, 26 insertions, 8 deletions
diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 1341038c..fea23c7d 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -270,6 +270,7 @@ BookmarkProvider::BookmarkProvider(QObject *parent) , m_actionCollection(new KActionCollection(this)) , m_bookmarkMenu(0) , m_completion(0) + , _bookmarkActionMenu(0) { kDebug() << "Loading Bookmarks Manager..."; // take care of the completion object @@ -384,13 +385,26 @@ void BookmarkProvider::contextMenu(const QPoint &point) KActionMenu* BookmarkProvider::bookmarkActionMenu(QWidget *parent) { KMenu *menu = new KMenu(parent); - kDebug() << "new Bookmarks Menu..."; - m_bookmarkMenu = new BookmarkMenu(m_manager, m_owner, menu, m_actionCollection); - kDebug() << "new Bookmarks Menu...DONE"; - KActionMenu *bookmarkActionMenu = new KActionMenu(parent); - bookmarkActionMenu->setMenu(menu); - bookmarkActionMenu->setText(i18n("&Bookmarks")); - return bookmarkActionMenu; + _bookmarkActionMenu = new KActionMenu(parent); + _bookmarkActionMenu->setMenu(menu); + _bookmarkActionMenu->setText(i18n("&Bookmarks")); + connect(menu, SIGNAL(aboutToShow()), this, SLOT(triggerBookmarkMenu())); + + return _bookmarkActionMenu; +} + + +void BookmarkProvider::triggerBookmarkMenu() +{ + kDebug() << "triggering Bookmarks Menu..."; + if(!m_bookmarkMenu) + { + KMenu *menu = qobject_cast<KMenu *>(sender()); + kDebug() << "new Bookmarks Menu..."; + m_bookmarkMenu = new BookmarkMenu(m_manager, m_owner, menu, m_actionCollection); + kDebug() << "new Bookmarks Menu...DONE"; + menu->exec( QCursor::pos() ); + } } diff --git a/src/bookmarks/bookmarksmanager.h b/src/bookmarks/bookmarksmanager.h index dfebebd2..0087c600 100644 --- a/src/bookmarks/bookmarksmanager.h +++ b/src/bookmarks/bookmarksmanager.h @@ -263,7 +263,9 @@ public slots: */ void slotBookmarksChanged(const QString &group, const QString &caller); - +private slots: + void triggerBookmarkMenu(); + private: void fillBookmarkBar(KToolBar *toolBar); QString titleForBookmarkUrl(const KBookmark &bookmark, QString url); @@ -274,6 +276,8 @@ private: BookmarkMenu *m_bookmarkMenu; QList<KToolBar*> m_bookmarkToolBars; AwesomeUrlCompletion *m_completion; + + KActionMenu *_bookmarkActionMenu; }; |