diff options
author | Andrea Diamantini <adjam7@gmail.com> | 2010-06-06 18:25:33 +0200 |
---|---|---|
committer | Andrea Diamantini <adjam7@gmail.com> | 2010-06-06 18:25:33 +0200 |
commit | a92b7b14b51befb39b003a8f69091d922f874212 (patch) | |
tree | b1f4740b73bbcf3ba165c891a34f994a5ccc6bb3 | |
parent | This should fix bug 240432 (diff) | |
download | rekonq-a92b7b14b51befb39b003a8f69091d922f874212.tar.xz |
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?
-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; }; |