Qt: Hook up mouse wheel to ImGui
This commit is contained in:
parent
9425f34ceb
commit
52c842e3b3
|
@ -177,6 +177,13 @@ bool QtDisplayWidget::event(QEvent* event)
|
|||
return true;
|
||||
}
|
||||
|
||||
case QEvent::Wheel:
|
||||
{
|
||||
const QWheelEvent* wheel_event = static_cast<QWheelEvent*>(event);
|
||||
emit windowMouseWheelEvent(wheel_event->angleDelta());
|
||||
return true;
|
||||
}
|
||||
|
||||
case QEvent::Resize:
|
||||
{
|
||||
QWidget::event(event);
|
||||
|
|
|
@ -30,6 +30,7 @@ Q_SIGNALS:
|
|||
void windowKeyEvent(int key_code, bool pressed);
|
||||
void windowMouseMoveEvent(int x, int y);
|
||||
void windowMouseButtonEvent(int button, bool pressed);
|
||||
void windowMouseWheelEvent(const QPoint& angle_delta);
|
||||
|
||||
protected:
|
||||
bool event(QEvent* event) override;
|
||||
|
|
|
@ -413,7 +413,35 @@ void QtHostInterface::onDisplayWindowMouseButtonEvent(int button, bool pressed)
|
|||
HandleHostMouseEvent(button, pressed);
|
||||
}
|
||||
|
||||
void QtHostInterface::onHostDisplayWindowResized(int width, int height)
|
||||
void QtHostInterface::onDisplayWindowMouseWheelEvent(const QPoint& delta_angle)
|
||||
{
|
||||
DebugAssert(isOnWorkerThread());
|
||||
|
||||
if (ImGui::GetCurrentContext())
|
||||
{
|
||||
ImGuiIO& io = ImGui::GetIO();
|
||||
|
||||
if (delta_angle.x() > 0)
|
||||
io.MouseWheelH += 1.0f;
|
||||
else if (delta_angle.x() < 0)
|
||||
io.MouseWheelH -= 1.0f;
|
||||
|
||||
if (delta_angle.y() > 0)
|
||||
io.MouseWheel += 1.0f;
|
||||
else if (delta_angle.y() < 0)
|
||||
io.MouseWheel -= 1.0f;
|
||||
|
||||
if (io.WantCaptureMouse)
|
||||
{
|
||||
// don't consume input events if it's hitting the UI instead
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// HandleHostMouseWheelEvent(delta_angle.x(), delta_angle.y());
|
||||
}
|
||||
|
||||
void QtHostInterface::onDisplayWindowResized(int width, int height)
|
||||
{
|
||||
Log_WarningPrintf("resize %dx%d", width, height);
|
||||
// this can be null if it was destroyed and the main thread is late catching up
|
||||
|
@ -441,7 +469,7 @@ void QtHostInterface::onHostDisplayWindowResized(int width, int height)
|
|||
}
|
||||
}
|
||||
|
||||
void QtHostInterface::onHostDisplayWindowFocused()
|
||||
void QtHostInterface::onDisplayWindowFocused()
|
||||
{
|
||||
if (!m_display || !m_lost_exclusive_fullscreen)
|
||||
return;
|
||||
|
@ -539,14 +567,15 @@ void QtHostInterface::connectDisplaySignals(QtDisplayWidget* widget)
|
|||
{
|
||||
widget->disconnect(this);
|
||||
|
||||
connect(widget, &QtDisplayWidget::windowFocusEvent, this, &QtHostInterface::onHostDisplayWindowFocused);
|
||||
connect(widget, &QtDisplayWidget::windowResizedEvent, this, &QtHostInterface::onHostDisplayWindowResized);
|
||||
connect(widget, &QtDisplayWidget::windowFocusEvent, this, &QtHostInterface::onDisplayWindowFocused);
|
||||
connect(widget, &QtDisplayWidget::windowResizedEvent, this, &QtHostInterface::onDisplayWindowResized);
|
||||
connect(widget, &QtDisplayWidget::windowRestoredEvent, this, &QtHostInterface::redrawDisplayWindow);
|
||||
connect(widget, &QtDisplayWidget::windowClosedEvent, this, &QtHostInterface::powerOffSystem,
|
||||
Qt::BlockingQueuedConnection);
|
||||
connect(widget, &QtDisplayWidget::windowKeyEvent, this, &QtHostInterface::onDisplayWindowKeyEvent);
|
||||
connect(widget, &QtDisplayWidget::windowMouseMoveEvent, this, &QtHostInterface::onDisplayWindowMouseMoveEvent);
|
||||
connect(widget, &QtDisplayWidget::windowMouseButtonEvent, this, &QtHostInterface::onDisplayWindowMouseButtonEvent);
|
||||
connect(widget, &QtDisplayWidget::windowMouseWheelEvent, this, &QtHostInterface::onDisplayWindowMouseWheelEvent);
|
||||
}
|
||||
|
||||
void QtHostInterface::updateDisplayState()
|
||||
|
|
|
@ -143,9 +143,6 @@ public Q_SLOTS:
|
|||
void applySettings(bool display_osd_messages = false);
|
||||
void updateInputMap();
|
||||
void applyInputProfile(const QString& profile_path);
|
||||
void onDisplayWindowKeyEvent(int key, bool pressed);
|
||||
void onDisplayWindowMouseMoveEvent(int x, int y);
|
||||
void onDisplayWindowMouseButtonEvent(int button, bool pressed);
|
||||
void bootSystem(std::shared_ptr<const SystemBootParameters> params);
|
||||
void resumeSystemFromState(const QString& filename, bool boot_on_failure);
|
||||
void resumeSystemFromMostRecentState();
|
||||
|
@ -179,8 +176,12 @@ public Q_SLOTS:
|
|||
|
||||
private Q_SLOTS:
|
||||
void doStopThread();
|
||||
void onHostDisplayWindowResized(int width, int height);
|
||||
void onHostDisplayWindowFocused();
|
||||
void onDisplayWindowMouseMoveEvent(int x, int y);
|
||||
void onDisplayWindowMouseButtonEvent(int button, bool pressed);
|
||||
void onDisplayWindowMouseWheelEvent(const QPoint& delta_angle);
|
||||
void onDisplayWindowResized(int width, int height);
|
||||
void onDisplayWindowFocused();
|
||||
void onDisplayWindowKeyEvent(int key, bool pressed);
|
||||
void doBackgroundControllerPoll();
|
||||
void doSaveSettings();
|
||||
|
||||
|
|
Loading…
Reference in New Issue