Provide menu shown signal from InputField.

This commit is contained in:
John Preston 2023-07-21 17:10:30 +04:00
parent 39d440f774
commit 079d966e45
2 changed files with 17 additions and 0 deletions

View file

@ -1278,6 +1278,15 @@ void InputField::scrollTo(int top) {
_inner->verticalScrollBar()->setValue(top);
}
bool InputField::menuShown() const {
return _contextMenu != nullptr;
}
rpl::producer<bool> InputField::menuShownValue() const {
return _menuShownChanges.events_starting_with(menuShown());
}
bool InputField::viewportEventInner(QEvent *e) {
if (e->type() == QEvent::TouchBegin
|| e->type() == QEvent::TouchUpdate
@ -3634,6 +3643,10 @@ void InputField::contextMenuEventInner(QContextMenuEvent *e, QMenu *m) {
if (const auto menu = m ? m : _inner->createStandardContextMenu()) {
addMarkdownActions(menu, e);
_contextMenu = base::make_unique_q<PopupMenu>(this, menu, _st.menu);
QObject::connect(_contextMenu.get(), &QObject::destroyed, [=] {
_menuShownChanges.fire(false);
});
_menuShownChanges.fire(true);
_contextMenu->popup(e->globalPos());
}
}

View file

@ -312,6 +312,9 @@ public:
return _markdownTagApplies.events();
}
[[nodiscard]] bool menuShown() const;
[[nodiscard]] rpl::producer<bool> menuShownValue() const;
~InputField();
private Q_SLOTS:
@ -543,6 +546,7 @@ private:
bool _correcting = false;
MimeDataHook _mimeDataHook;
rpl::event_stream<bool> _menuShownChanges;
base::unique_qptr<PopupMenu> _contextMenu;
QTextCharFormat _defaultCharFormat;