diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/frontend/StarInterfaceLuaBindings.cpp | 4 | ||||
-rw-r--r-- | source/frontend/StarMainInterface.cpp | 14 | ||||
-rw-r--r-- | source/frontend/StarMainInterface.hpp | 2 | ||||
-rw-r--r-- | source/windowing/StarCanvasWidget.cpp | 4 | ||||
-rw-r--r-- | source/windowing/StarCanvasWidget.hpp | 1 |
5 files changed, 18 insertions, 7 deletions
diff --git a/source/frontend/StarInterfaceLuaBindings.cpp b/source/frontend/StarInterfaceLuaBindings.cpp index 65bcd68..14b2e7c 100644 --- a/source/frontend/StarInterfaceLuaBindings.cpp +++ b/source/frontend/StarInterfaceLuaBindings.cpp @@ -10,8 +10,8 @@ namespace Star { LuaCallbacks LuaBindings::makeInterfaceCallbacks(MainInterface* mainInterface) { LuaCallbacks callbacks; - callbacks.registerCallback("bindCanvas", [mainInterface](String const& canvasName) -> Maybe<CanvasWidgetPtr> { - if (auto canvas = mainInterface->fetchCanvas(canvasName)) + callbacks.registerCallback("bindCanvas", [mainInterface](String const& canvasName, Maybe<bool> ignoreInterfaceScale) -> Maybe<CanvasWidgetPtr> { + if (auto canvas = mainInterface->fetchCanvas(canvasName, ignoreInterfaceScale.value(false))) return canvas; return {}; }); diff --git a/source/frontend/StarMainInterface.cpp b/source/frontend/StarMainInterface.cpp index 592bc6e..9a47835 100644 --- a/source/frontend/StarMainInterface.cpp +++ b/source/frontend/StarMainInterface.cpp @@ -796,7 +796,10 @@ void MainInterface::update() { for (auto& pair : m_canvases) { pair.second->setPosition(Vec2I()); - pair.second->setSize(Vec2I(m_guiContext->windowSize())); + if (pair.second->ignoreInterfaceScale()) + pair.second->setSize(Vec2I(m_guiContext->windowSize())); + else + pair.second->setSize(Vec2I(m_guiContext->windowInterfaceSize())); pair.second->update(); } } @@ -923,14 +926,17 @@ void MainInterface::warpTo(WarpAction const& warpAction) { } } -CanvasWidgetPtr MainInterface::fetchCanvas(String const& canvasName) { +CanvasWidgetPtr MainInterface::fetchCanvas(String const& canvasName, bool ignoreInterfaceScale) { if (auto canvasPtr = m_canvases.ptr(canvasName)) return *canvasPtr; else { CanvasWidgetPtr canvas = m_canvases.emplace(canvasName, make_shared<CanvasWidget>()).first->second; canvas->setPosition(Vec2I()); - canvas->setSize(Vec2I(m_guiContext->windowSize())); - canvas->setIgnoreInterfaceScale(true); + if (ignoreInterfaceScale) + canvas->setSize(Vec2I(m_guiContext->windowSize())); + else + canvas->setSize(Vec2I(m_guiContext->windowInterfaceSize())); + canvas->setIgnoreInterfaceScale(ignoreInterfaceScale); return canvas; } } diff --git a/source/frontend/StarMainInterface.hpp b/source/frontend/StarMainInterface.hpp index 3e05b9b..d96779d 100644 --- a/source/frontend/StarMainInterface.hpp +++ b/source/frontend/StarMainInterface.hpp @@ -115,7 +115,7 @@ public: void warpToOwnShip(); void warpTo(WarpAction const& warpAction); - CanvasWidgetPtr fetchCanvas(String const& canvasName); + CanvasWidgetPtr fetchCanvas(String const& canvasName, bool ignoreInterfaceScale = false); private: PanePtr createEscapeDialog(); diff --git a/source/windowing/StarCanvasWidget.cpp b/source/windowing/StarCanvasWidget.cpp index 7bff638..ed2e30f 100644 --- a/source/windowing/StarCanvasWidget.cpp +++ b/source/windowing/StarCanvasWidget.cpp @@ -18,6 +18,10 @@ void CanvasWidget::setIgnoreInterfaceScale(bool ignoreInterfaceScale) { m_ignoreInterfaceScale = ignoreInterfaceScale; } +bool CanvasWidget::ignoreInterfaceScale() const { + return m_ignoreInterfaceScale; +} + void CanvasWidget::clear() { m_renderOps.clear(); } diff --git a/source/windowing/StarCanvasWidget.hpp b/source/windowing/StarCanvasWidget.hpp index 3006852..295f877 100644 --- a/source/windowing/StarCanvasWidget.hpp +++ b/source/windowing/StarCanvasWidget.hpp @@ -32,6 +32,7 @@ public: void setCaptureMouseEvents(bool captureMouse); void setCaptureKeyboardEvents(bool captureKeyboard); void setIgnoreInterfaceScale(bool ignoreInterfaceScale); + bool ignoreInterfaceScale() const; // Returns mouse position relative to the lower left of the drawing region. Vec2I mousePosition() const; |