44 using ParentType = QWindow;
46 static const uint WINDOW_MANAGER_ID = WindowManagerId::QT_WINDOW;
52 "The DerivedRenderApp must satisfy the RenderAppConcept.");
57 const std::string& windowTitle,
63 setTitle(QString::fromStdString(windowTitle));
68 bool isMinimized()
const
70 return QWindow::visibility() == QWindow::Minimized;
73 const std::string& windowTitle()
const {
return mTitle; }
75 void setWindowTitle(
const std::string&
title)
89 void* displayId()
const
93 QNativeInterface::QX11Application*
x11AppInfo =
94 qApp->nativeInterface<QNativeInterface::QX11Application>();
99 QNativeInterface::QWaylandApplication*
wayAppInfo =
100 qApp->nativeInterface<QNativeInterface::QWaylandApplication>();
112 void* windowPtr() {
return reinterpret_cast<void*
>(winId()); }
114 void update() { QWindow::requestUpdate(); }
119 if (event->type() == QEvent::UpdateRequest) {
120 DerivedRenderApp::WM::paint(derived());
123 return QWindow::event(event);
128 DerivedRenderApp::WM::resize(
129 derived(), width() * dpiScale().x(), height() * dpiScale().y());
130 QWindow::resizeEvent(event);
137 DerivedRenderApp::WM::init(derived());
139 QWindow::exposeEvent(event);
143 void keyPressEvent(
QKeyEvent* event)
override
145 DerivedRenderApp::WM::setModifiers(
146 derived(), vcl::qt::fromQt(event->modifiers()));
148 DerivedRenderApp::WM::keyPress(
150 vcl::qt::fromQt((Qt::Key) event->key(), event->modifiers()));
151 QWindow::keyPressEvent(event);
155 void keyReleaseEvent(
QKeyEvent* event)
override
157 DerivedRenderApp::WM::setModifiers(
158 derived(), vcl::qt::fromQt(event->modifiers()));
160 DerivedRenderApp::WM::keyRelease(
162 vcl::qt::fromQt((Qt::Key) event->key(), event->modifiers()));
163 QWindow::keyReleaseEvent(event);
169 DerivedRenderApp::WM::mouseMove(
171 event->pos().x() * dpiScale().x(),
172 event->pos().y() * dpiScale().y());
173 QWindow::mouseMoveEvent(event);
179 DerivedRenderApp::WM::mousePress(
181 vcl::qt::fromQt(event->button()),
182 event->pos().x() * dpiScale().x(),
183 event->pos().y() * dpiScale().y());
184 QWindow::mousePressEvent(event);
188 void mouseReleaseEvent(
QMouseEvent* event)
override
190 DerivedRenderApp::WM::mouseRelease(
192 vcl::qt::fromQt(event->button()),
193 event->pos().x() * dpiScale().x(),
194 event->pos().y() * dpiScale().y());
195 QWindow::mouseReleaseEvent(event);
199 void mouseDoubleClickEvent(
QMouseEvent* event)
override
201 DerivedRenderApp::WM::mouseDoubleClick(
203 vcl::qt::fromQt(event->button()),
204 event->pos().x() * dpiScale().x(),
205 event->pos().y() * dpiScale().y());
206 QWindow::mouseDoubleClickEvent(event);
212 if (!event->pixelDelta().
isNull())
213 DerivedRenderApp::WM::mouseScroll(
214 derived(), event->pixelDelta().x(), event->pixelDelta().y());
216 DerivedRenderApp::WM::mouseScroll(
217 derived(), event->angleDelta().x(), event->angleDelta().y());
219 QWindow::wheelEvent(event);
226 DerivedRenderApp::WM::paint(derived());
227 QWindow::paintEvent(event);
232 const auto* derived()
const