diff options
author | Benjamin Poulain <benjamin.poulain@nokia.com> | 2010-08-22 04:06:54 +0200 |
---|---|---|
committer | Benjamin Poulain <benjamin.poulain@nokia.com> | 2010-08-22 04:18:37 +0200 |
commit | 67138dcf8e3a1788928fd31256b29a257dae5eee (patch) | |
tree | 5acfb521de78d5a09ec475b4e7baa288c1967041 | |
parent | Change the Find action to show() instead of toggle() (diff) | |
download | rekonq-67138dcf8e3a1788928fd31256b29a257dae5eee.tar.xz |
Use the selected text as the default search string of the FindBar
The common behavior of the Find action is to start a search with the
current selected text if any.
This patch implement this behavior for Rekonq.
-rw-r--r-- | src/findbar.cpp | 14 | ||||
-rw-r--r-- | src/findbar.h | 5 | ||||
-rw-r--r-- | src/mainwindow.cpp | 9 | ||||
-rw-r--r-- | src/mainwindow.h | 2 |
4 files changed, 23 insertions, 7 deletions
diff --git a/src/findbar.cpp b/src/findbar.cpp index bad3bf50..0e3f7385 100644 --- a/src/findbar.cpp +++ b/src/findbar.cpp @@ -49,16 +49,14 @@ #include <QtCore/QTimer> -FindBar::FindBar(QWidget *parent) - : QWidget(parent) +FindBar::FindBar(MainWindow *window) + : QWidget(window) + , m_mainWindow(window) , m_lineEdit(new KLineEdit(this)) , m_hideTimer(new QTimer(this)) , m_matchCase(new QCheckBox(i18n("&Match case"), this)) , m_highlightAll(new QCheckBox(i18n("&Highlight all"), this)) { - // mainwindow pointer - MainWindow *window = qobject_cast<MainWindow *>(parent); - QHBoxLayout *layout = new QHBoxLayout; // cosmetic @@ -146,6 +144,12 @@ void FindBar::setVisible(bool visible) emit visibilityChanged(visible); if (visible) { + if (!hasFocus()) { + const QString selectedText = m_mainWindow->selectedText(); + if (!selectedText.isEmpty()) + m_lineEdit->setText(selectedText); + } + // show findbar if not visible emit searchString(m_lineEdit->text()); diff --git a/src/findbar.h b/src/findbar.h index d82e9722..6451aac8 100644 --- a/src/findbar.h +++ b/src/findbar.h @@ -41,14 +41,14 @@ // Forward Declarations class QString; - +class MainWindow; class REKONQ_TESTS_EXPORT FindBar : public QWidget { Q_OBJECT public: - FindBar(QWidget *parent); + FindBar(MainWindow *parent); ~FindBar(); bool matchCase() const; @@ -62,6 +62,7 @@ signals: void visibilityChanged(bool); private: + MainWindow *m_mainWindow; KLineEdit *m_lineEdit; QTimer *m_hideTimer; QCheckBox *m_matchCase; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 5eb43aa0..44cc6d59 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -907,6 +907,15 @@ void MainWindow::setWidgetsVisible(bool makeVisible) } +QString MainWindow::selectedText() const +{ + if (!currentTab()) + return QString(); + + return currentTab()->view()->selectedText(); +} + + void MainWindow::viewPageSource() { if (!currentTab()) diff --git a/src/mainwindow.h b/src/mainwindow.h index 3aa57f5c..cd55faa5 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -80,6 +80,8 @@ public: virtual QSize sizeHint() const; void setWidgetsVisible(bool makeFullScreen); + QString selectedText() const; + private: void setupBookmarksAndToolsShortcuts(); void setupActions(); |