diff --git a/include/eepp/window/window.hpp b/include/eepp/window/window.hpp index 1c5695bbb..251772034 100644 --- a/include/eepp/window/window.hpp +++ b/include/eepp/window/window.hpp @@ -271,6 +271,9 @@ class EE_API Window { /** Center the window to the desktop ( if windowed ) */ virtual void centerToDisplay(); + /** @return The window borders size */ + virtual Rect getBorderSize(); + /** @return If the aplication is running returns true ( If you Init correctly the window and is running ). */ bool isRunning() const; diff --git a/src/eepp/window/backend/SDL2/windowsdl2.cpp b/src/eepp/window/backend/SDL2/windowsdl2.cpp index 59a2232bf..2cc566491 100644 --- a/src/eepp/window/backend/SDL2/windowsdl2.cpp +++ b/src/eepp/window/backend/SDL2/windowsdl2.cpp @@ -585,6 +585,16 @@ const Sizei& WindowSDL::getDesktopResolution() { return Window::getDesktopResolution(); } +Rect WindowSDL::getBorderSize() { +#if SDL_VERSION_ATLEAST(2,0,5) + Rect bordersSize; + SDL_GetWindowBordersSize( mSDLWindow, &bordersSize.Top, &bordersSize.Left, &bordersSize.Bottom, &bordersSize.Right ); + return bordersSize; +#else + return Rect(); +#endif +} + SDL_Window * WindowSDL::GetSDLWindow() const { return mSDLWindow; } diff --git a/src/eepp/window/backend/SDL2/windowsdl2.hpp b/src/eepp/window/backend/SDL2/windowsdl2.hpp index d771184ff..0eeabdd04 100644 --- a/src/eepp/window/backend/SDL2/windowsdl2.hpp +++ b/src/eepp/window/backend/SDL2/windowsdl2.hpp @@ -57,6 +57,8 @@ class EE_API WindowSDL : public Window { const Sizei& getDesktopResolution(); + virtual Rect getBorderSize(); + SDL_Window * GetSDLWindow() const; void startTextInput(); diff --git a/src/eepp/window/window.cpp b/src/eepp/window/window.cpp index 08913a484..752912ac9 100644 --- a/src/eepp/window/window.cpp +++ b/src/eepp/window/window.cpp @@ -535,6 +535,10 @@ void Window::centerToDisplay() { } } +Rect Window::getBorderSize() { + return Rect(); +} + Platform::PlatformImpl * Window::getPlatform() const { return mPlatform; } diff --git a/src/tools/uieditor/uieditor.cpp b/src/tools/uieditor/uieditor.cpp index c5474e082..9c9836085 100644 --- a/src/tools/uieditor/uieditor.cpp +++ b/src/tools/uieditor/uieditor.cpp @@ -287,10 +287,13 @@ void mainLoop() { if ( NULL != uiContainer && window->getInput()->isKeyUp( KEY_F1 ) ) { Sizef size( uiContainer->getSize() ); - DisplayMode displayMode = Engine::instance()->getDisplayManager()->getDisplayIndex(0)->getCurrentMode(); + Rect borderSize( window->getBorderSize() ); + Sizei displayMode = Engine::instance()->getDisplayManager()->getDisplayIndex(0)->getUsableBounds().getSize(); + displayMode.x = displayMode.x - borderSize.Left - borderSize.Right; + displayMode.y = displayMode.y - borderSize.Top - borderSize.Bottom; - Float scaleW = size.getWidth() > displayMode.Width ? displayMode.Width / size.getWidth() : 1.f; - Float scaleH = size.getHeight() > displayMode.Height * 0.9f ? displayMode.Height * 0.9f / size.getHeight() : 1.f; + Float scaleW = size.getWidth() > displayMode.getWidth() ? displayMode.getWidth() / size.getWidth() : 1.f; + Float scaleH = size.getHeight() > displayMode.getHeight() ? displayMode.getHeight() / size.getHeight() : 1.f; Float scale = scaleW < scaleH ? scaleW : scaleH; window->setSize( (Uint32)( uiContainer->getSize().getWidth() * scale ), (Uint32)( uiContainer->getSize().getHeight() * scale ) );