diff --git a/src/cutter.pro b/src/cutter.pro
index 6da848b3..50fc62e3 100644
--- a/src/cutter.pro
+++ b/src/cutter.pro
@@ -84,7 +84,8 @@ SOURCES += \
widgets/GraphView.cpp \
dialogs/preferences/PreferencesDialog.cpp \
dialogs/preferences/GeneralOptionsWidget.cpp \
- dialogs/preferences/GraphOptionsWidget.cpp
+ dialogs/preferences/GraphOptionsWidget.cpp \
+ widgets/QuickFilterView.cpp
HEADERS += \
cutter.h \
@@ -139,7 +140,8 @@ HEADERS += \
widgets/GraphView.h \
dialogs/preferences/PreferencesDialog.h \
dialogs/preferences/GeneralOptionsWidget.h \
- dialogs/preferences/GraphOptionsWidget.h
+ dialogs/preferences/GraphOptionsWidget.h \
+ widgets/QuickFilterView.h
FORMS += \
dialogs/AboutDialog.ui \
@@ -171,7 +173,8 @@ FORMS += \
dialogs/SaveProjectDialog.ui \
dialogs/preferences/PreferencesDialog.ui \
dialogs/preferences/GeneralOptionsWidget.ui \
- dialogs/preferences/GraphOptionsWidget.ui
+ dialogs/preferences/GraphOptionsWidget.ui \
+ widgets/QuickFilterView.ui
RESOURCES += \
resources.qrc
diff --git a/src/widgets/FunctionsWidget.cpp b/src/widgets/FunctionsWidget.cpp
index 56da363a..325adcbc 100644
--- a/src/widgets/FunctionsWidget.cpp
+++ b/src/widgets/FunctionsWidget.cpp
@@ -334,12 +334,12 @@ FunctionsWidget::FunctionsWidget(MainWindow *main, QWidget *parent) :
// Ctrl-F to show/hide the filter entry
QShortcut *search_shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_F), this);
- connect(search_shortcut, SIGNAL(activated()), this, SLOT(show_filter()));
+ connect(search_shortcut, &QShortcut::activated, ui->quickFilterView, &QuickFilterView::showFilter);
search_shortcut->setContext(Qt::WidgetWithChildrenShortcut);
// Esc to clear the filter entry
QShortcut *clear_shortcut = new QShortcut(QKeySequence(Qt::Key_Escape), this);
- connect(clear_shortcut, SIGNAL(activated()), this, SLOT(clear_filter()));
+ connect(clear_shortcut, &QShortcut::activated, ui->quickFilterView, &QuickFilterView::clearFilter);
clear_shortcut->setContext(Qt::WidgetWithChildrenShortcut);
QFontInfo font_info = ui->functionsTreeView->fontInfo();
@@ -348,16 +348,21 @@ FunctionsWidget::FunctionsWidget(MainWindow *main, QWidget *parent) :
function_model = new FunctionModel(&functions, &import_addresses, false, default_font, highlight_font, this);
function_proxy_model = new FunctionSortFilterProxyModel(function_model, this);
- connect(ui->filterLineEdit, SIGNAL(textChanged(const QString &)), function_proxy_model, SLOT(setFilterWildcard(const QString &)));
ui->functionsTreeView->setModel(function_proxy_model);
ui->functionsTreeView->sortByColumn(FunctionModel::NameColumn, Qt::AscendingOrder);
nested_function_model = new FunctionModel(&functions, &import_addresses, true, default_font, highlight_font, this);
nested_function_proxy_model = new FunctionSortFilterProxyModel(nested_function_model, this);
- connect(ui->filterLineEdit, SIGNAL(textChanged(const QString &)), nested_function_proxy_model, SLOT(setFilterWildcard(const QString &)));
ui->nestedFunctionsTreeView->setModel(nested_function_proxy_model);
ui->nestedFunctionsTreeView->sortByColumn(0, Qt::AscendingOrder);
+ connect(ui->quickFilterView, SIGNAL(filterTextChanged(const QString &)), function_proxy_model, SLOT(setFilterWildcard(const QString &)));
+ connect(ui->quickFilterView, SIGNAL(filterTextChanged(const QString &)), nested_function_proxy_model, SLOT(setFilterWildcard(const QString &)));
+ connect(ui->quickFilterView, &QuickFilterView::filterClosed, this, [this]()
+ {
+ getCurrentTreeView()->setFocus();
+ });
+
setScrollMode();
// Set Functions context menu
@@ -565,32 +570,4 @@ void FunctionsWidget::resizeEvent(QResizeEvent *event)
void FunctionsWidget::setScrollMode()
{
qhelpers::setVerticalScrollMode(ui->functionsTreeView);
-}
-
-void FunctionsWidget::show_filter()
-{
- ui->filterLineEdit->setVisible(true);
- ui->closeFilterButton->setVisible(true);
- ui->filterLineEdit->setFocus();
-}
-
-void FunctionsWidget::clear_filter()
-{
- if (ui->filterLineEdit->text() == "")
- {
- ui->filterLineEdit->setVisible(false);
- ui->closeFilterButton->setVisible(false);
- ui->functionsTreeView->setFocus();
- }
- else
- {
- ui->filterLineEdit->setText("");
- }
-}
-
-void FunctionsWidget::on_closeFilterButton_clicked()
-{
- ui->filterLineEdit->setVisible(false);
- ui->closeFilterButton->setVisible(false);
- ui->functionsTreeView->setFocus();
-}
+}
\ No newline at end of file
diff --git a/src/widgets/FunctionsWidget.h b/src/widgets/FunctionsWidget.h
index af6c2f43..42187417 100644
--- a/src/widgets/FunctionsWidget.h
+++ b/src/widgets/FunctionsWidget.h
@@ -100,12 +100,6 @@ private slots:
void on_actionHorizontal_triggered();
void on_actionVertical_triggered();
- void show_filter();
-
- void clear_filter();
-
- void on_closeFilterButton_clicked();
-
void showTitleContextMenu(const QPoint &pt);
void refreshTree();
diff --git a/src/widgets/FunctionsWidget.ui b/src/widgets/FunctionsWidget.ui
index 6ad53cc9..3048b587 100644
--- a/src/widgets/FunctionsWidget.ui
+++ b/src/widgets/FunctionsWidget.ui
@@ -197,71 +197,7 @@ QToolTip {
-
-
-
- 0
-
-
- QLayout::SetNoConstraint
-
-
- 2
-
-
-
-
-
-
- 0
- 0
-
-
-
- Quick Filter
-
-
- true
-
-
-
- -
-
-
-
- 75
- false
- true
-
-
-
- QToolButton { /* all types of tool button */
- border: 2px solid #333;
- border-left: 2px solid #333;
- border-right: 2px solid #333;
- background-color: #333;
- color: rgb(255, 255, 255)
-}
-
-QToolButton:hover {
- border: 2px solid rgb(128, 128, 128);
- border-left: 2px solid rgb(128, 128, 128);
- border-right: 2px solid rgb(128, 128, 128);
- background-color: rgb(128, 128, 128);
- color: rgb(255, 255, 255)
- }
-
-QToolButton:pressed {
- border: 2px solid #2180a9;
- border-left: 2px solid #2180a9;
- border-right: 2px solid #2180a9;
- background-color: #2180a9;
-}
-
-
- X
-
-
-
-
+
@@ -305,6 +241,14 @@ QToolButton:pressed {
+
+
+ QuickFilterView
+ QWidget
+ widgets/QuickFilterView.h
+ 1
+
+
diff --git a/src/widgets/QuickFilterView.cpp b/src/widgets/QuickFilterView.cpp
new file mode 100644
index 00000000..d8284f32
--- /dev/null
+++ b/src/widgets/QuickFilterView.cpp
@@ -0,0 +1,44 @@
+
+#include "QuickFilterView.h"
+#include "ui_QuickFilterView.h"
+
+QuickFilterView::QuickFilterView(QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::QuickFilterView())
+{
+ ui->setupUi(this);
+
+ connect(ui->closeFilterButton, &QAbstractButton::clicked, this, &QuickFilterView::closeFilter);
+
+ connect(ui->filterLineEdit, &QLineEdit::textChanged, this, [this](const QString &text)
+ {
+ emit filterTextChanged(text);
+ });
+}
+
+QuickFilterView::~QuickFilterView() {}
+
+
+void QuickFilterView::showFilter()
+{
+ show();
+ ui->filterLineEdit->setFocus();
+}
+
+void QuickFilterView::clearFilter()
+{
+ if (ui->filterLineEdit->text().isEmpty())
+ {
+ closeFilter();
+ }
+ else
+ {
+ ui->filterLineEdit->setText("");
+ }
+}
+
+void QuickFilterView::closeFilter()
+{
+ hide();
+ emit filterClosed();
+}
diff --git a/src/widgets/QuickFilterView.h b/src/widgets/QuickFilterView.h
new file mode 100644
index 00000000..34d89b15
--- /dev/null
+++ b/src/widgets/QuickFilterView.h
@@ -0,0 +1,35 @@
+
+#ifndef QUICKFILTERVIEW_H
+#define QUICKFILTERVIEW_H
+
+#include
+
+#include
+
+namespace Ui
+{
+ class QuickFilterView;
+}
+
+class QuickFilterView : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit QuickFilterView(QWidget *parent = nullptr);
+ ~QuickFilterView();
+
+public slots:
+ void showFilter();
+ void closeFilter();
+ void clearFilter();
+
+signals:
+ void filterTextChanged(const QString &text);
+ void filterClosed();
+
+private:
+ std::unique_ptr ui;
+};
+
+#endif //QUICKFILTERVIEW_H
diff --git a/src/widgets/QuickFilterView.ui b/src/widgets/QuickFilterView.ui
new file mode 100644
index 00000000..65bd5f85
--- /dev/null
+++ b/src/widgets/QuickFilterView.ui
@@ -0,0 +1,90 @@
+
+
+ QuickFilterView
+
+
+
+ 0
+ 0
+ 327
+ 25
+
+
+
+ Form
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Quick Filter
+
+
+ true
+
+
+
+ -
+
+
+
+ 75
+ false
+ true
+
+
+
+ QToolButton { /* all types of tool button */
+ border: 2px solid #333;
+ border-left: 2px solid #333;
+ border-right: 2px solid #333;
+ background-color: #333;
+ color: rgb(255, 255, 255)
+}
+
+QToolButton:hover {
+ border: 2px solid rgb(128, 128, 128);
+ border-left: 2px solid rgb(128, 128, 128);
+ border-right: 2px solid rgb(128, 128, 128);
+ background-color: rgb(128, 128, 128);
+ color: rgb(255, 255, 255)
+ }
+
+QToolButton:pressed {
+ border: 2px solid #2180a9;
+ border-left: 2px solid #2180a9;
+ border-right: 2px solid #2180a9;
+ background-color: #2180a9;
+}
+
+
+ X
+
+
+
+
+
+
+
+