diff --git a/es-core/src/guis/GuiDetectDevice.cpp b/es-core/src/guis/GuiDetectDevice.cpp index 022cfd918..78dc50cd3 100644 --- a/es-core/src/guis/GuiDetectDevice.cpp +++ b/es-core/src/guis/GuiDetectDevice.cpp @@ -77,7 +77,12 @@ GuiDetectDevice::GuiDetectDevice( Font::get(FONT_SIZE_MEDIUM), 0xFFFFFFFF, ALIGN_CENTER); mGrid.setEntry(mDeviceHeld, Vector2i(0, 4), false, true); - setSize(Renderer::getScreenWidth() * 0.6f, Renderer::getScreenHeight() * 0.5f); + // For narrower displays (e.g. in 4:3 ratio), allow the window to fill 80% of the screen + // width rather than the 60% allowed for wider displays. + float width = Renderer::getScreenWidth() * + ((Renderer::getScreenAspectRatio() < 1.4f) ? 0.8f : 0.6f); + + setSize(width, Renderer::getScreenHeight() * 0.5f); setPosition((Renderer::getScreenWidth() - mSize.x()) / 2, (Renderer::getScreenHeight() - mSize.y()) / 2); } diff --git a/es-core/src/guis/GuiInputConfig.cpp b/es-core/src/guis/GuiInputConfig.cpp index 444f25a38..308b79d5a 100644 --- a/es-core/src/guis/GuiInputConfig.cpp +++ b/es-core/src/guis/GuiInputConfig.cpp @@ -251,7 +251,12 @@ GuiInputConfig::GuiInputConfig( mButtonGrid = makeButtonGrid(mWindow, buttons); mGrid.setEntry(mButtonGrid, Vector2i(0, 6), true, false); - setSize(Renderer::getScreenWidth() * 0.6f, Renderer::getScreenHeight() * 0.75f); + // For narrower displays (e.g. in 4:3 ratio), allow the window to fill 80% of the screen + // width rather than the 60% allowed for wider displays. + float width = Renderer::getScreenWidth() * + ((Renderer::getScreenAspectRatio() < 1.4f) ? 0.8f : 0.6f); + + setSize(width, Renderer::getScreenHeight() * 0.75f); setPosition((Renderer::getScreenWidth() - mSize.x()) / 2, (Renderer::getScreenHeight() - mSize.y()) / 2); } diff --git a/es-core/src/guis/GuiTextEditPopup.cpp b/es-core/src/guis/GuiTextEditPopup.cpp index bb7ec7f00..1aa6fa1f9 100644 --- a/es-core/src/guis/GuiTextEditPopup.cpp +++ b/es-core/src/guis/GuiTextEditPopup.cpp @@ -62,7 +62,12 @@ GuiTextEditPopup::GuiTextEditPopup( textHeight *= 6; mText->setSize(0, textHeight); - setSize(Renderer::getScreenWidth() * 0.5f, mTitle->getFont()->getHeight() + + // For narrower displays (e.g. in 4:3 ratio), allow the window to fill 70% of the screen + // width rather than the 50% allowed for wider displays. + float width = Renderer::getScreenWidth() * + ((Renderer::getScreenAspectRatio() < 1.4f) ? 0.7f : 0.5f); + + setSize(width, mTitle->getFont()->getHeight() + textHeight + mButtonGrid->getSize().y() + mButtonGrid->getSize().y() / 2); setPosition((Renderer::getScreenWidth() - mSize.x()) / 2, (Renderer::getScreenHeight() - mSize.y()) / 2); diff --git a/es-core/src/renderers/Renderer.cpp b/es-core/src/renderers/Renderer.cpp index 44c777ce1..c21e0686f 100644 --- a/es-core/src/renderers/Renderer.cpp +++ b/es-core/src/renderers/Renderer.cpp @@ -38,6 +38,7 @@ namespace Renderer // Screen resolution modifiers relative to the 1920x1080 reference. static float screenHeightModifier; static float screenWidthModifier; + static float screenAspectRatio; static void setIcon() { @@ -140,6 +141,7 @@ namespace Renderer screenHeightModifier = static_cast(screenHeight) / 1080.0f; screenWidthModifier = static_cast(screenWidth) / 1920.0f; + screenAspectRatio = static_cast(screenWidth) / static_cast(screenHeight); // Prevent the application window from minimizing when switching windows (when launching // games or when manually switching windows using the task switcher). @@ -506,5 +508,6 @@ namespace Renderer int getScreenRotate() { return screenRotate; } float getScreenWidthModifier() { return screenWidthModifier; } float getScreenHeightModifier() { return screenHeightModifier; } + float getScreenAspectRatio() { return screenAspectRatio; } } // Renderer:: diff --git a/es-core/src/renderers/Renderer.h b/es-core/src/renderers/Renderer.h index 10bb80802..56f7fe04b 100644 --- a/es-core/src/renderers/Renderer.h +++ b/es-core/src/renderers/Renderer.h @@ -158,6 +158,7 @@ namespace Renderer int getScreenRotate(); float getScreenWidthModifier(); float getScreenHeightModifier(); + float getScreenAspectRatio(); unsigned int convertRGBAToABGR(unsigned int color); unsigned int convertABGRToRGBA(unsigned int color);