Qt: Fix handling of display window size in hidpi
This commit is contained in:
@ -1,12 +1,14 @@
|
||||
#include "qtdisplaywindow.h"
|
||||
#include "imgui.h"
|
||||
#include "qtutils.h"
|
||||
#include "qthostinterface.h"
|
||||
#include "qtutils.h"
|
||||
#include <QtGui/QKeyEvent>
|
||||
|
||||
QtDisplayWindow::QtDisplayWindow(QtHostInterface* host_interface, QWindow* parent)
|
||||
: QWindow(parent), m_host_interface(host_interface)
|
||||
{
|
||||
m_window_width = static_cast<int>(static_cast<qreal>(width()) * devicePixelRatio());
|
||||
m_window_height = static_cast<int>(static_cast<qreal>(height()) * devicePixelRatio());
|
||||
}
|
||||
|
||||
QtDisplayWindow::~QtDisplayWindow() = default;
|
||||
@ -40,8 +42,8 @@ bool QtDisplayWindow::createImGuiContext()
|
||||
ImGui::CreateContext();
|
||||
|
||||
auto& io = ImGui::GetIO();
|
||||
io.DisplaySize.x = static_cast<float>(width());
|
||||
io.DisplaySize.y = static_cast<float>(height());
|
||||
io.DisplaySize.x = static_cast<float>(m_window_width);
|
||||
io.DisplaySize.y = static_cast<float>(m_window_height);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -62,6 +64,9 @@ void QtDisplayWindow::Render() {}
|
||||
|
||||
void QtDisplayWindow::onWindowResized(int width, int height)
|
||||
{
|
||||
m_window_width = width;
|
||||
m_window_height = height;
|
||||
|
||||
// imgui may not have been initialized yet
|
||||
if (!ImGui::GetCurrentContext())
|
||||
return;
|
||||
@ -90,5 +95,8 @@ void QtDisplayWindow::keyReleaseEvent(QKeyEvent* event)
|
||||
void QtDisplayWindow::resizeEvent(QResizeEvent* event)
|
||||
{
|
||||
QWindow::resizeEvent(event);
|
||||
emit windowResizedEvent(event->size().width(), event->size().height());
|
||||
|
||||
const int width = static_cast<int>(static_cast<qreal>(event->size().width()) * devicePixelRatio());
|
||||
const int height = static_cast<int>(static_cast<qreal>(event->size().height()) * devicePixelRatio());
|
||||
emit windowResizedEvent(width, height);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user