From a92b7b14b51befb39b003a8f69091d922f874212 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Sun, 6 Jun 2010 18:25:33 +0200 Subject: Performance improvement on startup Load bookmark menu just on first click. This is needed cause of bad startup rekonq performance with more than 1000 bookmarks as pointed out by.. (thjis?) This trick needs a workaround on first bookmarks menu showing. Do you notice it? --- src/bookmarks/bookmarksmanager.cpp | 28 +++++++++++++++++++++------- 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(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 m_bookmarkToolBars; AwesomeUrlCompletion *m_completion; + + KActionMenu *_bookmarkActionMenu; }; -- cgit v1.2.1