diff options
author | Andrea Diamantini <adjam7@gmail.com> | 2010-05-14 20:24:06 +0200 |
---|---|---|
committer | Andrea Diamantini <adjam7@gmail.com> | 2010-05-14 20:24:06 +0200 |
commit | 6b4f4d69a3c599bc958ccddc5f7ac1c8648a7042 (patch) | |
tree | c38c780a33c8c14f471e85725633bde545586426 | |
parent | This commit reintroduces the QStackedWidget class for urlbars and let (diff) | |
download | rekonq-6b4f4d69a3c599bc958ccddc5f7ac1c8648a7042.tar.xz |
This commit should fix a lot of troubles on fast urlbar typing
so now situation is:
- first list is shown immediately
- timer decreases from 200 to 150 ms (less is pretty unuseful, I fear)
- people who fast type & returnPress have KUriFilter help
Hope this helps :)
As promised,
CCBUG:237390
-rw-r--r-- | src/urlbar/completionwidget.cpp | 21 | ||||
-rw-r--r-- | src/urlbar/completionwidget.h | 2 | ||||
-rw-r--r-- | src/urlbar/listitem.cpp | 1 | ||||
-rw-r--r-- | src/urlbar/urlbar.cpp | 2 | ||||
-rw-r--r-- | src/urlbar/urlresolver.cpp | 3 |
5 files changed, 22 insertions, 7 deletions
diff --git a/src/urlbar/completionwidget.cpp b/src/urlbar/completionwidget.cpp index 1bb01785..b19b163e 100644 --- a/src/urlbar/completionwidget.cpp +++ b/src/urlbar/completionwidget.cpp @@ -35,6 +35,7 @@ #include "application.h" #include "urlresolver.h" #include "searchengine.h" +#include "urlbar.h" // KDE Includes #include <KGlobalSettings> @@ -180,7 +181,8 @@ bool CompletionWidget::eventFilter(QObject *o, QEvent *e) if (wid && wid->isAncestorOf(_parent) && isVisible()) { ListItem *child; - + UrlBar *w; + if (type == QEvent::KeyPress) { QKeyEvent *ev = static_cast<QKeyEvent *>(e); @@ -214,12 +216,21 @@ bool CompletionWidget::eventFilter(QObject *o, QEvent *e) case Qt::Key_Enter: case Qt::Key_Return: - child = findChild<ListItem *>(QString::number(_currentIndex)); - emit chosenUrl(child->url(), Rekonq::CurrentTab); + w = qobject_cast<UrlBar *>(parent()); + if(w->text() == _typedString) + { + child = findChild<ListItem *>(QString::number(_currentIndex)); + emit chosenUrl(child->url(), Rekonq::CurrentTab); + } + else + { + // this will be used just on fast typing.. + emit chosenUrl(KUrl(w->text()), Rekonq::CurrentTab); + } ev->accept(); hide(); return true; - + case Qt::Key_Escape: hide(); return true; @@ -259,6 +270,8 @@ void CompletionWidget::itemChosen(ListItem *item, Qt::MouseButton button) void CompletionWidget::suggestUrls(const QString &text) { + _typedString = text; + QWidget *w = qobject_cast<QWidget *>(parent()); if (!w->hasFocus()) return; diff --git a/src/urlbar/completionwidget.h b/src/urlbar/completionwidget.h index 4ce8248d..2d33b59f 100644 --- a/src/urlbar/completionwidget.h +++ b/src/urlbar/completionwidget.h @@ -85,6 +85,8 @@ private: int _currentIndex; KService::Ptr _searchEngine; + + QString _typedString; }; #endif // COMPLETION_WIDGET_H diff --git a/src/urlbar/listitem.cpp b/src/urlbar/listitem.cpp index c6f75348..f91840d2 100644 --- a/src/urlbar/listitem.cpp +++ b/src/urlbar/listitem.cpp @@ -296,6 +296,7 @@ QString SearchListItem::searchItemTitle(QString engine, QString text) return QString(i18nc("%1=search engine, e.g. Google, Wikipedia %2=text to search for", "Search %1 for <b>%2</b>", engine, text)); } + void SearchListItem::changeSearchEngine(KService::Ptr engine) { m_titleLabel->setText(searchItemTitle(engine->name(), m_text)); diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp index fb98076a..d2992c4d 100644 --- a/src/urlbar/urlbar.cpp +++ b/src/urlbar/urlbar.cpp @@ -402,7 +402,7 @@ void UrlBar::detectTypedString(const QString &typed) if(_suggestionTimer->isActive()) _suggestionTimer->stop(); - _suggestionTimer->start(200); + _suggestionTimer->start(150); } diff --git a/src/urlbar/urlresolver.cpp b/src/urlbar/urlresolver.cpp index 12e2f762..840fd78f 100644 --- a/src/urlbar/urlresolver.cpp +++ b/src/urlbar/urlresolver.cpp @@ -222,7 +222,7 @@ UrlSearchList UrlResolver::bookmarksResolution() UrlSearchList UrlResolver::placeTypedDomaineNameOnTop(UrlSearchList list) { - int i=0; + int i = 0; bool found = false; while(i<list.count() && !found) @@ -239,4 +239,3 @@ UrlSearchList UrlResolver::placeTypedDomaineNameOnTop(UrlSearchList list) return list; } - |