Replaced Qt slots in InputField and removed Q_OBJECT macro.
This commit is contained in:
parent
dfbf009904
commit
9d2f648a11
2 changed files with 50 additions and 40 deletions
|
|
@ -14,6 +14,7 @@
|
|||
#include "base/invoke_queued.h"
|
||||
#include "base/random.h"
|
||||
#include "base/platform/base_platform_info.h"
|
||||
#include "base/qt_signal_producer.h"
|
||||
#include "emoji_suggestions_helper.h"
|
||||
#include "base/qthelp_regex.h"
|
||||
#include "base/qt/qt_common_adapters.h"
|
||||
|
|
@ -1210,13 +1211,42 @@ InputField::InputField(
|
|||
|
||||
_touchTimer.setCallback([=] { _touchRightButton = true; });
|
||||
|
||||
connect(_inner->document(), SIGNAL(contentsChange(int,int,int)), this, SLOT(onDocumentContentsChange(int,int,int)));
|
||||
connect(_inner.get(), SIGNAL(undoAvailable(bool)), this, SLOT(onUndoAvailable(bool)));
|
||||
connect(_inner.get(), SIGNAL(redoAvailable(bool)), this, SLOT(onRedoAvailable(bool)));
|
||||
connect(_inner.get(), SIGNAL(cursorPositionChanged()), this, SLOT(onCursorPositionChanged()));
|
||||
connect(_inner.get(), &Inner::selectionChanged, [] {
|
||||
base::qt_signal_producer(
|
||||
_inner->document(),
|
||||
&QTextDocument::contentsChange
|
||||
) | rpl::start_with_next([=](int position, int removed, int added) {
|
||||
documentContentsChanged(position, removed, added);
|
||||
}, lifetime());
|
||||
base::qt_signal_producer(
|
||||
_inner.get(),
|
||||
&QTextEdit::undoAvailable
|
||||
) | rpl::start_with_next([=](bool undoAvailable) {
|
||||
_undoAvailable = undoAvailable;
|
||||
Integration::Instance().textActionsUpdated();
|
||||
});
|
||||
}, lifetime());
|
||||
base::qt_signal_producer(
|
||||
_inner.get(),
|
||||
&QTextEdit::redoAvailable
|
||||
) | rpl::start_with_next([=](bool redoAvailable) {
|
||||
_redoAvailable = redoAvailable;
|
||||
Integration::Instance().textActionsUpdated();
|
||||
}, lifetime());
|
||||
base::qt_signal_producer(
|
||||
_inner.get(),
|
||||
&QTextEdit::cursorPositionChanged
|
||||
) | rpl::start_with_next([=] {
|
||||
auto cursor = textCursor();
|
||||
if (!cursor.hasSelection() && !cursor.position()) {
|
||||
cursor.setCharFormat(_defaultCharFormat);
|
||||
setTextCursor(cursor);
|
||||
}
|
||||
}, lifetime());
|
||||
base::qt_signal_producer(
|
||||
_inner.get(),
|
||||
&Inner::selectionChanged
|
||||
) | rpl::start_with_next([] {
|
||||
Integration::Instance().textActionsUpdated();
|
||||
}, lifetime());
|
||||
|
||||
const auto bar = _inner->verticalScrollBar();
|
||||
_scrollTop = bar->value();
|
||||
|
|
@ -1757,12 +1787,16 @@ void InputField::focusInEvent(QFocusEvent *e) {
|
|||
_borderAnimationStart = (e->reason() == Qt::MouseFocusReason)
|
||||
? mapFromGlobal(QCursor::pos()).x()
|
||||
: (width() / 2);
|
||||
InvokeQueued(this, [=] { if (hasFocus()) onFocusInner(); });
|
||||
InvokeQueued(this, [=] {
|
||||
if (hasFocus()) {
|
||||
focusInner();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void InputField::mousePressEvent(QMouseEvent *e) {
|
||||
_borderAnimationStart = e->pos().x();
|
||||
InvokeQueued(this, [=] { onFocusInner(); });
|
||||
InvokeQueued(this, [=] { focusInner(); });
|
||||
}
|
||||
|
||||
void InputField::mousePressEventInner(QMouseEvent *e) {
|
||||
|
|
@ -1788,7 +1822,7 @@ void InputField::mouseMoveEventInner(QMouseEvent *e) {
|
|||
_inner->QTextEdit::mouseMoveEvent(e);
|
||||
}
|
||||
|
||||
void InputField::onFocusInner() {
|
||||
void InputField::focusInner() {
|
||||
auto borderStart = _borderAnimationStart;
|
||||
_inner->setFocus();
|
||||
_borderAnimationStart = borderStart;
|
||||
|
|
@ -2271,7 +2305,7 @@ void InputField::processFormatting(int insertPosition, int insertEnd) {
|
|||
}
|
||||
}
|
||||
|
||||
void InputField::onDocumentContentsChange(
|
||||
void InputField::documentContentsChanged(
|
||||
int position,
|
||||
int charsRemoved,
|
||||
int charsAdded) {
|
||||
|
|
@ -2339,14 +2373,6 @@ void InputField::onDocumentContentsChange(
|
|||
}
|
||||
}
|
||||
|
||||
void InputField::onCursorPositionChanged() {
|
||||
auto cursor = textCursor();
|
||||
if (!cursor.hasSelection() && !cursor.position()) {
|
||||
cursor.setCharFormat(_defaultCharFormat);
|
||||
setTextCursor(cursor);
|
||||
}
|
||||
}
|
||||
|
||||
void InputField::chopByMaxLength(int insertPosition, int insertLength) {
|
||||
Expects(_correcting);
|
||||
|
||||
|
|
@ -2445,16 +2471,6 @@ void InputField::highlightMarkdown() {
|
|||
}
|
||||
}
|
||||
|
||||
void InputField::onUndoAvailable(bool avail) {
|
||||
_undoAvailable = avail;
|
||||
Integration::Instance().textActionsUpdated();
|
||||
}
|
||||
|
||||
void InputField::onRedoAvailable(bool avail) {
|
||||
_redoAvailable = avail;
|
||||
Integration::Instance().textActionsUpdated();
|
||||
}
|
||||
|
||||
void InputField::setDisplayFocused(bool focused) {
|
||||
setFocused(focused);
|
||||
finishAnimating();
|
||||
|
|
|
|||
|
|
@ -103,8 +103,6 @@ private:
|
|||
};
|
||||
|
||||
class InputField : public RpWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum class Mode {
|
||||
SingleLine,
|
||||
|
|
@ -324,16 +322,6 @@ public:
|
|||
|
||||
~InputField();
|
||||
|
||||
private Q_SLOTS:
|
||||
|
||||
void onDocumentContentsChange(int position, int charsRemoved, int charsAdded);
|
||||
void onCursorPositionChanged();
|
||||
|
||||
void onUndoAvailable(bool avail);
|
||||
void onRedoAvailable(bool avail);
|
||||
|
||||
void onFocusInner();
|
||||
|
||||
protected:
|
||||
void startPlaceholderAnimation();
|
||||
void startBorderAnimation();
|
||||
|
|
@ -378,6 +366,12 @@ private:
|
|||
void insertFromMimeDataInner(const QMimeData *source);
|
||||
TextWithTags getTextWithTagsSelected() const;
|
||||
|
||||
void documentContentsChanged(
|
||||
int position,
|
||||
int charsRemoved,
|
||||
int charsAdded);
|
||||
void focusInner();
|
||||
|
||||
// "start" and "end" are in coordinates of text where emoji are replaced
|
||||
// by ObjectReplacementCharacter. If "end" = -1 means get text till the end.
|
||||
QString getTextPart(
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue