diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-04-17 16:37:25 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-04-17 16:37:25 +0200 |
commit | 5152fc15d128821b842ade2c8fa7e2fcb16c0e94 (patch) | |
tree | 446658345a873ede716006bfe10d0470b8181aa8 /src/mainwindow/widgets | |
parent | Clear navigation bar and address bar when last subwindow is closed (diff) | |
download | smolbote-5152fc15d128821b842ade2c8fa7e2fcb16c0e94.tar.xz |
Search box works again
Diffstat (limited to 'src/mainwindow/widgets')
-rw-r--r-- | src/mainwindow/widgets/searchform.cpp | 55 | ||||
-rw-r--r-- | src/mainwindow/widgets/searchform.h | 16 | ||||
-rw-r--r-- | src/mainwindow/widgets/searchform.ui | 20 |
3 files changed, 60 insertions, 31 deletions
diff --git a/src/mainwindow/widgets/searchform.cpp b/src/mainwindow/widgets/searchform.cpp index 07b8426..80e3848 100644 --- a/src/mainwindow/widgets/searchform.cpp +++ b/src/mainwindow/widgets/searchform.cpp @@ -7,45 +7,30 @@ */ #include "searchform.h" -#include "configuration/configuration.h" -#include "mainwindow/mainwindow.h" #include "ui_searchform.h" -#include "webengine/webview.h" -#include <QAction> +#include <QWebEngineView> +#include <QFocusEvent> -SearchForm::SearchForm(MainWindow *parentWindow, QWidget *parent) +SearchForm::SearchForm(QWidget *parent) : QWidget(parent) , ui(new Ui::SearchForm) { - Q_CHECK_PTR(parentWindow); - ui->setupUi(this); ui->lineEdit->setPlaceholderText(tr("Search")); ui->lineEdit->setClearButtonEnabled(true); ui->result_label->setVisible(false); - // show/hide action - auto *toggleSearchBox = new QAction(this); - toggleSearchBox->setShortcut(QKeySequence(QString::fromStdString(parentWindow->m_config->value<std::string>("browser.shortcuts.toggleSearchBox").value()))); - connect(toggleSearchBox, &QAction::triggered, this, [this, parentWindow]() { - if(isVisible()) { - setVisible(false); - // remove highlighting by passing an empty string - parentWindow->m_currentView->findText(""); - } else { - setVisible(true); - setFocus(); - } - }); - parentWindow->addAction(toggleSearchBox); + connect(ui->lineEdit, &QLineEdit::returnPressed, this, [this]() { + Q_ASSERT_X(view != nullptr, "SearchForm::returnPressed::lambda", "No view set"); - connect(ui->lineEdit, &QLineEdit::returnPressed, this, [this, parentWindow]() { + if(view) { QWebEnginePage::FindFlags searchFlags; searchFlags.setFlag(QWebEnginePage::FindCaseSensitively, ui->caseSensitivity_checkBox->isChecked()); searchFlags.setFlag(QWebEnginePage::FindBackward, ui->reverseSearch_checkBox->isChecked()); - parentWindow->m_currentView->findText(ui->lineEdit->text(), searchFlags, [this](bool found) { + view->findText(ui->lineEdit->text(), searchFlags, [this](bool found) { ui->result_label->setVisible(!found); }); + } }); } @@ -54,8 +39,30 @@ SearchForm::~SearchForm() delete ui; } +void SearchForm::setView(QWebEngineView* view) +{ + qDebug("setting view: %s", view == nullptr ? "nullptr" : "valid"); + this->view = view; +} + +void SearchForm::showEvent(QShowEvent* e) +{ + e->accept(); + ui->lineEdit->setFocus(); + ui->lineEdit->selectAll(); +} + +void SearchForm::hideEvent(QHideEvent* e) +{ + e->accept(); + // clear highlighted text when hiding + if(view) { + view->findText(""); + } +} + void SearchForm::focusInEvent(QFocusEvent *e) { ui->lineEdit->setFocus(); - QWidget::focusInEvent(e); + e->accept(); } diff --git a/src/mainwindow/widgets/searchform.h b/src/mainwindow/widgets/searchform.h index 94cc2a9..59c4ef5 100644 --- a/src/mainwindow/widgets/searchform.h +++ b/src/mainwindow/widgets/searchform.h @@ -6,8 +6,8 @@ * SPDX-License-Identifier: GPL-3.0 */ -#ifndef SEARCHFORM_H -#define SEARCHFORM_H +#ifndef SMOLBOTE_SEARCHFORM_H +#define SMOLBOTE_SEARCHFORM_H #include <QWidget> @@ -16,20 +16,26 @@ namespace Ui class SearchForm; } -class MainWindow; +class QWebEngineView; class SearchForm : public QWidget { Q_OBJECT public: - explicit SearchForm(MainWindow *parentWindow, QWidget *parent = nullptr); + explicit SearchForm(QWidget *parent = nullptr); ~SearchForm() override; +public slots: + void setView(QWebEngineView *view); + protected: + void showEvent(QShowEvent *e) override; + void hideEvent(QHideEvent *e) override; void focusInEvent(QFocusEvent *e) override; private: Ui::SearchForm *ui; + QWebEngineView *view = nullptr; }; -#endif // SEARCHFORM_H +#endif // SMOLBOTE_SEARCHFORM_H diff --git a/src/mainwindow/widgets/searchform.ui b/src/mainwindow/widgets/searchform.ui index 9d1d108..5ad2009 100644 --- a/src/mainwindow/widgets/searchform.ui +++ b/src/mainwindow/widgets/searchform.ui @@ -7,21 +7,37 @@ <x>0</x> <y>0</y> <width>600</width> - <height>32</height> + <height>22</height> </rect> </property> <property name="windowTitle"> <string>Form</string> </property> <layout class="QHBoxLayout" name="horizontalLayout"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> <property name="topMargin"> <number>0</number> </property> + <property name="rightMargin"> + <number>0</number> + </property> <property name="bottomMargin"> <number>0</number> </property> <item> - <widget class="QLineEdit" name="lineEdit"/> + <widget class="QLineEdit" name="lineEdit"> + <property name="maximumSize"> + <size> + <width>16777215</width> + <height>20</height> + </size> + </property> + </widget> </item> <item> <widget class="QCheckBox" name="caseSensitivity_checkBox"> |