fix: Add mouse propogation to qml chat in qquickwidget

This commit is contained in:
Petr Mironychev
2026-05-28 11:17:38 +02:00
parent 282f48d9fb
commit 0774084ad9
2 changed files with 12 additions and 0 deletions

View File

@@ -4,6 +4,7 @@
#include "ChatWidget.hpp" #include "ChatWidget.hpp"
#include <QApplication> #include <QApplication>
#include <QMouseEvent>
#include <QQmlContext> #include <QQmlContext>
#include <QQmlEngine> #include <QQmlEngine>
#include <QQuickItem> #include <QQuickItem>
@@ -38,6 +39,8 @@ ChatWidget::ChatWidget(
setResizeMode(QQuickWidget::SizeRootObjectToView); setResizeMode(QQuickWidget::SizeRootObjectToView);
setFocusPolicy(Qt::StrongFocus); setFocusPolicy(Qt::StrongFocus);
setAttribute(Qt::WA_NoMousePropagation, true);
if (registerOwnContext) { if (registerOwnContext) {
auto ideContext = new Core::IContext{this}; auto ideContext = new Core::IContext{this};
ideContext->setWidget(this); ideContext->setWidget(this);
@@ -53,6 +56,14 @@ void ChatWidget::focusInEvent(QFocusEvent *event)
QMetaObject::invokeMethod(rootObject(), "focusInput"); QMetaObject::invokeMethod(rootObject(), "focusInput");
} }
void ChatWidget::mousePressEvent(QMouseEvent *event)
{
if (!hasFocus())
setFocus(Qt::MouseFocusReason);
QQuickWidget::mousePressEvent(event);
}
void ChatWidget::clear() void ChatWidget::clear()
{ {
QMetaObject::invokeMethod(rootObject(), "clearChat"); QMetaObject::invokeMethod(rootObject(), "clearChat");

View File

@@ -42,6 +42,7 @@ signals:
protected: protected:
void focusInEvent(QFocusEvent *event) override; void focusInEvent(QFocusEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
}; };
} // namespace QodeAssist::Chat } // namespace QodeAssist::Chat