mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-07-25 06:54:43 +00:00
Ignore system-synthesized mouse events in widgets accepting touch
This commit is contained in:
@@ -729,6 +729,28 @@ bool Application::eventFilter(QObject *object, QEvent *e) {
|
||||
} break;
|
||||
}
|
||||
|
||||
const auto widget = static_cast<QWidget*>(object);
|
||||
if (!object->isWidgetType()
|
||||
|| !widget->testAttribute(Qt::WA_AcceptTouchEvents)) {
|
||||
return QObject::eventFilter(object, e);
|
||||
}
|
||||
|
||||
switch (e->type()) {
|
||||
case QEvent::MouseButtonPress:
|
||||
case QEvent::MouseButtonRelease:
|
||||
case QEvent::MouseButtonDblClick:
|
||||
case QEvent::MouseMove: {
|
||||
const auto ev = static_cast<QMouseEvent*>(e);
|
||||
_lastMouseEventSource = ev->source();
|
||||
return _lastMouseEventSource == Qt::MouseEventSynthesizedBySystem;
|
||||
} break;
|
||||
case QEvent::ContextMenu: {
|
||||
const auto ev = static_cast<QContextMenuEvent*>(e);
|
||||
return ev->reason() == QContextMenuEvent::Mouse
|
||||
&& _lastMouseEventSource == Qt::MouseEventSynthesizedBySystem;
|
||||
} break;
|
||||
}
|
||||
|
||||
return QObject::eventFilter(object, e);
|
||||
}
|
||||
|
||||
|
||||
@@ -433,6 +433,7 @@ private:
|
||||
Window::Controller *_lastActiveWindow = nullptr;
|
||||
Window::Controller *_lastActivePrimaryWindow = nullptr;
|
||||
Window::Controller *_windowInSettings = nullptr;
|
||||
Qt::MouseEventSource _lastMouseEventSource = Qt::MouseEventNotSynthesized;
|
||||
|
||||
std::unique_ptr<Media::View::OverlayWidget> _mediaView;
|
||||
const std::unique_ptr<Lang::Instance> _langpack;
|
||||
|
||||
Reference in New Issue
Block a user