diff --git a/src/lib/app/browserwindow.cpp b/src/lib/app/browserwindow.cpp --- a/src/lib/app/browserwindow.cpp +++ b/src/lib/app/browserwindow.cpp @@ -1148,7 +1148,12 @@ void BrowserWindow::searchOnPage() { if (weView() && weView()->webTab()) { - weView()->webTab()->showSearchToolBar(); + const QString searchText = weView()->page()->selectedText(); + if (!searchText.contains('\n')) { + weView()->webTab()->showSearchToolBar(searchText); + } else { + weView()->webTab()->showSearchToolBar(); + } } } diff --git a/src/lib/webtab/searchtoolbar.h b/src/lib/webtab/searchtoolbar.h --- a/src/lib/webtab/searchtoolbar.h +++ b/src/lib/webtab/searchtoolbar.h @@ -45,6 +45,7 @@ bool eventFilter(QObject* obj, QEvent* event); public Q_SLOTS: + void setText(const QString &text); void searchText(const QString &text); void updateFindFlags(); void caseSensitivityChanged(); diff --git a/src/lib/webtab/searchtoolbar.cpp b/src/lib/webtab/searchtoolbar.cpp --- a/src/lib/webtab/searchtoolbar.cpp +++ b/src/lib/webtab/searchtoolbar.cpp @@ -41,7 +41,7 @@ ui->previous->setShortcut(QKeySequence("Ctrl+Shift+G")); connect(ui->closeButton, SIGNAL(clicked()), this, SLOT(close())); - connect(ui->lineEdit, SIGNAL(textChanged(QString)), this, SLOT(findNext())); + connect(ui->lineEdit, SIGNAL(textEdited(QString)), this, SLOT(findNext())); connect(ui->lineEdit, SIGNAL(returnPressed()), this, SLOT(findNext())); connect(ui->next, SIGNAL(clicked()), this, SLOT(findNext())); connect(ui->previous, SIGNAL(clicked()), this, SLOT(findPrevious())); @@ -113,6 +113,11 @@ searchText(ui->lineEdit->text()); } +void SearchToolBar::setText(const QString &text) +{ + ui->lineEdit->setText(text); +} + void SearchToolBar::searchText(const QString &text) { QPointer guard = this; diff --git a/src/lib/webtab/webtab.h b/src/lib/webtab/webtab.h --- a/src/lib/webtab/webtab.h +++ b/src/lib/webtab/webtab.h @@ -121,7 +121,7 @@ void showWebInspector(bool inspectElement = false); void toggleWebInspector(); - void showSearchToolBar(); + void showSearchToolBar(const QString &searchText = QString()); bool isRestored() const; void restoreTab(const SavedTab &tab); diff --git a/src/lib/webtab/webtab.cpp b/src/lib/webtab/webtab.cpp --- a/src/lib/webtab/webtab.cpp +++ b/src/lib/webtab/webtab.cpp @@ -237,7 +237,7 @@ delete m_splitter->widget(1); } -void WebTab::showSearchToolBar() +void WebTab::showSearchToolBar(const QString &searchText) { const int index = 1; @@ -252,6 +252,9 @@ } Q_ASSERT(toolBar); + if (!searchText.isEmpty()) { + toolBar->setText(searchText); + } toolBar->focusSearchLine(); }