From 983f2f1af4afeaa0539ffe533626233becf28a75 Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Fri, 19 Feb 2010 15:10:40 +0100 Subject: Workaround the bug of qtwebkit in the function findText(). An empty string doesn't clear the selection. --- src/mainwindow.cpp | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) (limited to 'src/mainwindow.cpp') 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); } -- cgit v1.2.1 From cbf12dbaa27add9bfdfda728d7c952429262ca99 Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Fri, 19 Feb 2010 15:42:22 +0100 Subject: Fix a small regression : the color of the lineEdit of the findBar is not correctly updated when it's empty --- src/mainwindow.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'src/mainwindow.cpp') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index f9f211ca..22cf8c6c 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -774,11 +774,6 @@ void MainWindow::find(const QString & search) return; m_lastSearch = search; - if(m_lastSearch.isEmpty()) - { - currentTab()->view()->page()->focusNextPrevChild(true); - return; - } findNext(); } @@ -788,7 +783,7 @@ void MainWindow::findNext() if (!currentTab()) return; - if(m_lastSearch.isEmpty() || m_findBar->isHidden()) + if(m_findBar->isHidden()) { currentTab()->view()->page()->focusNextPrevChild(true); return; @@ -810,7 +805,7 @@ void MainWindow::findPrevious() if (!currentTab()) return; - if(m_lastSearch.isEmpty() || m_findBar->isHidden()) + if(m_findBar->isHidden()) { currentTab()->view()->page()->focusNextPrevChild(true); return; -- cgit v1.2.1 From 8f9db7ef7ce4116c3ea7a34a49d5db04602b4c06 Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Fri, 19 Feb 2010 22:27:05 +0100 Subject: Get rid of the selection of the next found expression when the checkbox matchCase is toggled --- src/mainwindow.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/mainwindow.cpp') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 22cf8c6c..d61b56f9 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -777,7 +777,22 @@ void MainWindow::find(const QString & search) findNext(); } - +void MainWindow::matchCaseUpdate() +{ + if (!currentTab()) + return; + + QWebPage::FindFlags options = QWebPage::FindWrapsAroundDocument; + + if (m_findBar->matchCase()) + options |= QWebPage::FindCaseSensitively; + + currentTab()->view()->findText(m_lastSearch, QWebPage::FindBackward | QWebPage::FindWrapsAroundDocument); + bool found = currentTab()->view()->findText(m_lastSearch, options); + m_findBar->notifyMatch(found); + if(!found) + currentTab()->view()->page()->focusNextPrevChild(true); +} void MainWindow::findNext() { if (!currentTab()) -- cgit v1.2.1