summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYoann Laissus <yoann.laissus@gmail.com>2010-02-19 15:10:40 +0100
committerYoann Laissus <yoann.laissus@gmail.com>2010-02-19 15:10:40 +0100
commit983f2f1af4afeaa0539ffe533626233becf28a75 (patch)
treec80131c23cdd291ace91ccc61b54b223bd8bcee8 /src
parent.. and check that the changes you do are right. (diff)
downloadrekonq-983f2f1af4afeaa0539ffe533626233becf28a75.tar.xz
Workaround the bug of qtwebkit in the function findText(). An empty string doesn't clear the selection.
Diffstat (limited to 'src')
-rw-r--r--src/findbar.cpp6
-rw-r--r--src/mainwindow.cpp32
2 files changed, 34 insertions, 4 deletions
diff --git a/src/findbar.cpp b/src/findbar.cpp
index 1cb16e3f..d8ae08cc 100644
--- a/src/findbar.cpp
+++ b/src/findbar.cpp
@@ -64,6 +64,7 @@ FindBar::FindBar(KMainWindow *mainwindow)
hideButton->setAutoRaise(true);
hideButton->setIcon(KIcon("dialog-close"));
connect(hideButton, SIGNAL(clicked()), this, SLOT(hide()));
+ connect(hideButton, SIGNAL(clicked()), this, SLOT(findNext()));
layout->addWidget(hideButton);
layout->setAlignment(hideButton, Qt::AlignLeft | Qt::AlignTop);
@@ -138,6 +139,11 @@ void FindBar::show()
QWidget::show();
m_hideTimer->start(60000);
+
+ // emit a new find signal with the current text
+ QString temp = m_lineEdit->text();
+ m_lineEdit->setText("");
+ m_lineEdit->setText(m_lineEdit->text());
}
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index e3beb60a..f9f211ca 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -773,33 +773,57 @@ void MainWindow::find(const QString & search)
if (!currentTab())
return;
m_lastSearch = search;
+
+ if(m_lastSearch.isEmpty())
+ {
+ currentTab()->view()->page()->focusNextPrevChild(true);
+ return;
+ }
findNext();
}
void MainWindow::findNext()
{
- if (!currentTab() && m_lastSearch.isEmpty())
+ if (!currentTab())
return;
+ if(m_lastSearch.isEmpty() || m_findBar->isHidden())
+ {
+ currentTab()->view()->page()->focusNextPrevChild(true);
+ return;
+ }
+
QWebPage::FindFlags options = QWebPage::FindWrapsAroundDocument;
if (m_findBar->matchCase())
options |= QWebPage::FindCaseSensitively;
- m_findBar->notifyMatch(currentTab()->view()->findText(m_lastSearch, options));
+ bool found = currentTab()->view()->findText(m_lastSearch, options);
+ m_findBar->notifyMatch(found);
+ if(!found)
+ currentTab()->view()->page()->focusNextPrevChild(true);
}
void MainWindow::findPrevious()
{
- if (!currentTab() && m_lastSearch.isEmpty())
+ if (!currentTab())
return;
+ if(m_lastSearch.isEmpty() || m_findBar->isHidden())
+ {
+ currentTab()->view()->page()->focusNextPrevChild(true);
+ return;
+ }
+
QWebPage::FindFlags options = QWebPage::FindBackward | QWebPage::FindWrapsAroundDocument;
if (m_findBar->matchCase())
options |= QWebPage::FindCaseSensitively;
- m_findBar->notifyMatch(currentTab()->view()->findText(m_lastSearch, options));
+ bool found = currentTab()->view()->findText(m_lastSearch, options);
+ m_findBar->notifyMatch(found);
+ if(!found)
+ currentTab()->view()->page()->focusNextPrevChild(true);
}