From 787d1982dceae67b9b934a9b74e08a096c0c1830 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Wed, 3 Aug 2016 00:00:51 +0300 Subject: [PATCH] Swap fullscreen mode dimensions if the desktop is rotated --- source/graphics/window.cpp | 18 ++++++++++++++---- source/graphics/window.h | 1 + 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/source/graphics/window.cpp b/source/graphics/window.cpp index d116b69..073cd8d 100644 --- a/source/graphics/window.cpp +++ b/source/graphics/window.cpp @@ -75,18 +75,28 @@ void Window::reconfigure(const WindowOptions &opts) if(opts.x!=options.x || opts.y!=options.y) moving = true; + options = opts; + if(visible) { - if(opts.fullscreen) - display.set_mode(VideoMode(opts.width, opts.height)); + if(options.fullscreen) + set_fullscreen_mode(); else if(fullscreen_changed) display.restore_mode(); } - options = opts; platform_reconfigure(fullscreen_changed); } +void Window::set_fullscreen_mode() +{ + VideoMode mode(options.width, options.height); + mode.rotation = display.get_desktop_mode().monitor->desktop_rotation; + if(mode.rotation==ROTATE_LEFT || mode.rotation==ROTATE_RIGHT) + swap(mode.width, mode.height); + display.set_mode(mode, true); +} + void Window::set_keyboard_autorepeat(bool r) { kbd_autorepeat = r; @@ -105,7 +115,7 @@ void Window::show() if(options.fullscreen) { - display.set_mode(VideoMode(options.width, options.height), true); + set_fullscreen_mode(); warp_pointer(options.width/2, options.height/2); } } diff --git a/source/graphics/window.h b/source/graphics/window.h index 2d4376e..443cac7 100644 --- a/source/graphics/window.h +++ b/source/graphics/window.h @@ -64,6 +64,7 @@ public: void set_title(const std::string &); void reconfigure(const WindowOptions &); private: + void set_fullscreen_mode(); void platform_reconfigure(bool); public: void set_keyboard_autorepeat(bool); -- 2.43.0