Qt: Cancel search when pressing Esc (#3767)

Add a new SearchBox component to encapsulate the common logic and
reduce duplication.
pull/3769/head
Davide Pesavento 3 months ago committed by GitHub
parent 2cf04c92a6
commit 982a35e6e3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -160,6 +160,8 @@ set(SRCS
qtwindowinfo.cpp
qtwindowinfo.h
resource.h
searchbox.cpp
searchbox.h
selectdiscdialog.cpp
selectdiscdialog.h
selectdiscdialog.ui

@ -54,6 +54,7 @@
<ClCompile Include="qtprogresscallback.cpp" />
<ClCompile Include="qtutils.cpp" />
<ClCompile Include="qtwindowinfo.cpp" />
<ClCompile Include="searchbox.cpp" />
<ClCompile Include="selectdiscdialog.cpp" />
<ClCompile Include="settingswindow.cpp" />
<ClCompile Include="setupwizarddialog.cpp" />
@ -111,6 +112,7 @@
<ClInclude Include="pch.h" />
<ClInclude Include="qtwindowinfo.h" />
<ClInclude Include="resource.h" />
<QtMoc Include="searchbox.h" />
<QtMoc Include="selectdiscdialog.h" />
<ClInclude Include="settingwidgetbinder.h" />
<QtMoc Include="cardradiobutton.h" />

@ -58,6 +58,7 @@
<ClCompile Include="asynchttprequest.cpp" />
<ClCompile Include="svgiconengine.cpp" />
<ClCompile Include="svgwidget.cpp" />
<ClCompile Include="searchbox.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="qtutils.h" />
@ -128,6 +129,7 @@
<QtMoc Include="svgwidget.h" />
<QtMoc Include="cardradiobutton.h" />
<QtMoc Include="animatedstackedwidget.h" />
<QtMoc Include="searchbox.h" />
</ItemGroup>
<ItemGroup>
<QtUi Include="consolesettingswidget.ui" />

@ -37,28 +37,16 @@
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLineEdit" name="search">
<widget class="SearchBox" name="search">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="placeholderText">
<string>Search...</string>
</property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
@ -214,6 +202,13 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>SearchBox</class>
<extends>QLineEdit</extends>
<header>searchbox.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="resources/duckstation-qt.qrc"/>
</resources>

@ -225,19 +225,13 @@
</widget>
</item>
<item>
<widget class="QLineEdit" name="searchText">
<widget class="SearchBox" name="searchText">
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="placeholderText">
<string>Search...</string>
</property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
@ -247,6 +241,13 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>SearchBox</class>
<extends>QLineEdit</extends>
<header>searchbox.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="resources/duckstation-qt.qrc"/>
</resources>

@ -6,6 +6,7 @@
#include "inputbindingwidgets.h"
#include "mainwindow.h"
#include "qtutils.h"
#include "searchbox.h"
#include "settingswindow.h"
#include "settingwidgetbinder.h"
@ -14,7 +15,6 @@
#include <QtGui/QResizeEvent>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QScrollArea>
#include "moc_hotkeysettingswidget.cpp"
@ -30,9 +30,7 @@ HotkeySettingsWidget::~HotkeySettingsWidget() = default;
HotkeySettingsWidget::Container::Container(QWidget* parent) : QWidget(parent)
{
m_search = new QLineEdit(this);
m_search->setPlaceholderText(tr("Search..."));
m_search->setClearButtonEnabled(true);
m_search = new SearchBox(this);
}
HotkeySettingsWidget::Container::~Container() = default;

@ -27,11 +27,7 @@
</widget>
</item>
<item>
<widget class="QLineEdit" name="search">
<property name="placeholderText">
<string>Search...</string>
</property>
</widget>
<widget class="SearchBox" name="search"/>
</item>
</layout>
</item>
@ -106,6 +102,13 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>SearchBox</class>
<extends>QLineEdit</extends>
<header>searchbox.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections>
<connection>

@ -0,0 +1,24 @@
// SPDX-FileCopyrightText: 2019-2026 Connor McLaughlin <stenzek@gmail.com> and contributors.
// SPDX-License-Identifier: CC-BY-NC-ND-4.0
#include "searchbox.h"
#include <QtGui/QKeyEvent>
#include "moc_searchbox.cpp"
SearchBox::SearchBox(QWidget* parent) : QLineEdit(parent)
{
setClearButtonEnabled(true);
setPlaceholderText(tr("Search..."));
}
SearchBox::~SearchBox() = default;
void SearchBox::keyPressEvent(QKeyEvent* event)
{
if (event->key() == Qt::Key_Escape && !text().isEmpty())
clear();
else
QLineEdit::keyPressEvent(event);
}

@ -0,0 +1,18 @@
// SPDX-FileCopyrightText: 2019-2026 Connor McLaughlin <stenzek@gmail.com> and contributors.
// SPDX-License-Identifier: CC-BY-NC-ND-4.0
#pragma once
#include <QtWidgets/QLineEdit>
class SearchBox final : public QLineEdit
{
Q_OBJECT
public:
explicit SearchBox(QWidget* parent = nullptr);
~SearchBox() override;
protected:
void keyPressEvent(QKeyEvent* event) override;
};
Loading…
Cancel
Save