From 6a7718ae9637ffa817bc4e6d89295a5b2503b047 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Thu, 31 Aug 2023 14:54:14 +0300 Subject: [PATCH] Replaced Qt signals in InputField with rpl. --- ui/widgets/fields/input_field.cpp | 38 +++++++++++++++++++++++++------ ui/widgets/fields/input_field.h | 23 +++++++++++-------- 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/ui/widgets/fields/input_field.cpp b/ui/widgets/fields/input_field.cpp index fbf209b..a23060b 100644 --- a/ui/widgets/fields/input_field.cpp +++ b/ui/widgets/fields/input_field.cpp @@ -1538,7 +1538,7 @@ bool InputField::heightAutoupdated() { void InputField::checkContentHeight() { if (heightAutoupdated()) { - resized(); + _heightChanges.fire({}); } } @@ -1812,13 +1812,13 @@ void InputField::focusInEventInner(QFocusEvent *e) { : (width() / 2); setFocused(true); _inner->QTextEdit::focusInEvent(e); - focused(); + _focusedChanges.fire(true); } void InputField::focusOutEventInner(QFocusEvent *e) { setFocused(false); _inner->QTextEdit::focusOutEvent(e); - blurred(); + _focusedChanges.fire(false); } void InputField::setFocused(bool focused) { @@ -2401,7 +2401,7 @@ void InputField::handleContentsChanged() { if (tagsChanged || (_lastTextWithTags.text != currentText)) { _lastTextWithTags.text = currentText; const auto weak = MakeWeak(this); - changed(); + _changes.fire({}); if (!weak) { return; } @@ -2765,15 +2765,15 @@ void InputField::keyPressEventInner(QKeyEvent *e) { && revertFormatReplace()) { e->accept(); } else if (enter && enterSubmit) { - submitted(e->modifiers()); + _submits.fire(e->modifiers()); } else if (e->key() == Qt::Key_Escape) { e->ignore(); - cancelled(); + _cancelled.fire({}); } else if (e->key() == Qt::Key_Tab || e->key() == Qt::Key_Backtab) { if (alt || ctrl) { e->ignore(); } else if (_customTab) { - tabbed(); + _tabbed.fire({}); } else if (!focusNextPrevChild(e->key() == Qt::Key_Tab && !shift)) { e->ignore(); } @@ -3843,6 +3843,30 @@ void InputField::setErrorShown(bool error) { } } +rpl::producer<> InputField::heightChanges() const { + return _heightChanges.events(); +} + +rpl::producer InputField::focusedChanges() const { + return _focusedChanges.events(); +} + +rpl::producer<> InputField::tabbed() const { + return _tabbed.events(); +} + +rpl::producer<> InputField::cancelled() const { + return _cancelled.events(); +} + +rpl::producer<> InputField::changes() const { + return _changes.events(); +} + +rpl::producer InputField::submits() const { + return _submits.events(); +} + InputField::~InputField() = default; } // namespace Ui diff --git a/ui/widgets/fields/input_field.h b/ui/widgets/fields/input_field.h index f371454..b1a5aa7 100644 --- a/ui/widgets/fields/input_field.h +++ b/ui/widgets/fields/input_field.h @@ -315,6 +315,13 @@ public: [[nodiscard]] bool menuShown() const; [[nodiscard]] rpl::producer menuShownValue() const; + [[nodiscard]] rpl::producer<> heightChanges() const; + [[nodiscard]] rpl::producer focusedChanges() const; + [[nodiscard]] rpl::producer<> tabbed() const; + [[nodiscard]] rpl::producer<> cancelled() const; + [[nodiscard]] rpl::producer<> changes() const; + [[nodiscard]] rpl::producer submits() const; + ~InputField(); private Q_SLOTS: @@ -328,15 +335,6 @@ private Q_SLOTS: void onFocusInner(); -Q_SIGNALS: - void changed(); - void submitted(Qt::KeyboardModifiers); - void cancelled(); - void tabbed(); - void focused(); - void blurred(); - void resized(); - protected: void startPlaceholderAnimation(); void startBorderAnimation(); @@ -561,6 +559,13 @@ private: rpl::event_stream _documentContentsChanges; rpl::event_stream _markdownTagApplies; + rpl::event_stream _focusedChanges; + rpl::event_stream<> _heightChanges; + rpl::event_stream<> _tabbed; + rpl::event_stream<> _cancelled; + rpl::event_stream<> _changes; + rpl::event_stream _submits; + }; } // namespace Ui