diff options
Diffstat (limited to 'src/urlbar')
| -rw-r--r-- | src/urlbar/completionwidget.h | 3 | ||||
| -rw-r--r-- | src/urlbar/urlbar.cpp | 24 | ||||
| -rw-r--r-- | src/urlbar/urlbar.h | 6 | 
3 files changed, 31 insertions, 2 deletions
| diff --git a/src/urlbar/completionwidget.h b/src/urlbar/completionwidget.h index fc0798e7..4ce8248d 100644 --- a/src/urlbar/completionwidget.h +++ b/src/urlbar/completionwidget.h @@ -61,9 +61,10 @@ public:          _searchEngine = engine;      }; +    void suggestUrls(const QString &text); +  private slots:      void itemChosen(ListItem *item, Qt::MouseButton = Qt::LeftButton); -    void suggestUrls(const QString &text);  signals:      void chosenUrl(const KUrl &, Rekonq::OpenType); diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp index ad0f34a1..e1e542b7 100644 --- a/src/urlbar/urlbar.cpp +++ b/src/urlbar/urlbar.cpp @@ -75,6 +75,7 @@ UrlBar::UrlBar(QWidget *parent)          , _tab(0)          , _privateMode(false)          , _icon(new IconButton(this)) +        , _suggestionTimer(new QTimer(this))  {      // initial style      setStyleSheet(QString("UrlBar { padding: 0 0 0 %1px;} ").arg(_icon->sizeHint().width())); @@ -108,6 +109,9 @@ UrlBar::UrlBar(QWidget *parent)      // load typed urls      connect(this, SIGNAL(returnPressed(const QString &)), this, SLOT(loadTyped(const QString &))); +    _suggestionTimer->setSingleShot(true); +    connect(_suggestionTimer, SIGNAL(timeout()), this, SLOT(suggest())); +          activateSuggestions(true);  } @@ -316,11 +320,12 @@ void UrlBar::activateSuggestions(bool b)              connect(_box.data(), SIGNAL(chosenUrl(const KUrl &, Rekonq::OpenType)), this, SLOT(activated(const KUrl &, Rekonq::OpenType)));              // activate suggestions on edit text -            connect(this, SIGNAL(textChanged(const QString &)), _box.data(), SLOT(suggestUrls(const QString &))); +            connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(detectTypedString(const QString &)));          }      }      else      { +        disconnect(this, SIGNAL(textChanged(const QString &)), this, SLOT(detectTypedString(const QString &)));          removeEventFilter(_box.data());          _box.data()->deleteLater();      } @@ -389,3 +394,20 @@ void UrlBar::resizeEvent(QResizeEvent *event)      KLineEdit::resizeEvent(event);  } + + +void UrlBar::detectTypedString(const QString &typed) +{ +    Q_UNUSED(typed); +     +    if(_suggestionTimer->isActive()) +        _suggestionTimer->stop(); +    _suggestionTimer->start(200); +} + + +void UrlBar::suggest() +{ +    if(!_box.isNull()) +        _box.data()->suggestUrls( text() ); +}
\ No newline at end of file diff --git a/src/urlbar/urlbar.h b/src/urlbar/urlbar.h index b644f84f..cda8a2e1 100644 --- a/src/urlbar/urlbar.h +++ b/src/urlbar/urlbar.h @@ -46,6 +46,7 @@ class QLinearGradient;  class QWidget;  class CompletionWidget;  class WebTab; +class QTimer;  class IconButton : public QToolButton @@ -97,6 +98,9 @@ private slots:      void loadTyped(const QString &);      void clearRightIcons(); +     +    void detectTypedString(const QString &); +    void suggest();  protected:      void paintEvent(QPaintEvent *event); @@ -116,6 +120,8 @@ private:      IconButton *_icon;      IconButtonPointerList _rightIconsList; + +    QTimer *_suggestionTimer;  }; | 
