aboutsummaryrefslogtreecommitdiff
path: root/src/libui_sdl/main.cpp
diff options
context:
space:
mode:
authorStapleButter <thetotalworm@gmail.com>2017-12-07 01:13:13 +0100
committerStapleButter <thetotalworm@gmail.com>2017-12-07 01:13:13 +0100
commita7c777991796c1fea066a3d8d6127dbe4895a058 (patch)
treeb3c545ab5579b8b8c113ab9895297e5d5f47ea5c /src/libui_sdl/main.cpp
parentb5046b97666b0c00d603b09379f6d35b6c822bb5 (diff)
ensure proper minimum window size at all times
Diffstat (limited to 'src/libui_sdl/main.cpp')
-rw-r--r--src/libui_sdl/main.cpp66
1 files changed, 32 insertions, 34 deletions
diff --git a/src/libui_sdl/main.cpp b/src/libui_sdl/main.cpp
index 34d0760..d55b864 100644
--- a/src/libui_sdl/main.cpp
+++ b/src/libui_sdl/main.cpp
@@ -838,6 +838,33 @@ void OnOpenInputConfig(uiMenuItem* item, uiWindow* window, void* blarg)
}
+void EnsureProperMinSize()
+{
+ bool isHori = (ScreenRotation == 1 || ScreenRotation == 3);
+
+ if (ScreenLayout == 0) // natural
+ {
+ if (isHori)
+ SetMinSize(384+ScreenGap, 256);
+ else
+ SetMinSize(256, 384+ScreenGap);
+ }
+ else if (ScreenLayout == 1) // vertical
+ {
+ if (isHori)
+ SetMinSize(192, 512+ScreenGap);
+ else
+ SetMinSize(256, 384+ScreenGap);
+ }
+ else // horizontal
+ {
+ if (isHori)
+ SetMinSize(384+ScreenGap, 256);
+ else
+ SetMinSize(512+ScreenGap, 192);
+ }
+}
+
void OnSetScreenRotation(uiMenuItem* item, uiWindow* window, void* param)
{
int rot = *(int*)param;
@@ -851,13 +878,10 @@ void OnSetScreenRotation(uiMenuItem* item, uiWindow* window, void* param)
bool isHori = (rot == 1 || rot == 3);
bool wasHori = (oldrot == 1 || oldrot == 3);
+ EnsureProperMinSize();
+
if (ScreenLayout == 0) // natural
{
- if (isHori)
- SetMinSize(384+ScreenGap, 256);
- else
- SetMinSize(256, 384+ScreenGap);
-
if (isHori ^ wasHori)
{
int blarg = h;
@@ -869,20 +893,6 @@ void OnSetScreenRotation(uiMenuItem* item, uiWindow* window, void* param)
Config::WindowHeight = h;
}
}
- else if (ScreenLayout == 1) // vertical
- {
- if (isHori)
- SetMinSize(192, 512+ScreenGap);
- else
- SetMinSize(256, 384+ScreenGap);
- }
- else // horizontal
- {
- if (isHori)
- SetMinSize(384+ScreenGap, 256);
- else
- SetMinSize(512+ScreenGap, 192);
- }
SetupScreenRects(w, h);
@@ -894,23 +904,10 @@ void OnSetScreenGap(uiMenuItem* item, uiWindow* window, void* param)
{
int gap = *(int*)param;
- int oldgap = ScreenGap;
+ //int oldgap = ScreenGap;
ScreenGap = gap;
- // resize window as needed
- // TODO: adapt to horizontal modes
- // TODO: always resize window? except if it's maximized
- int w, h;
- uiWindowContentSize(window, &w, &h);
- {
- h -= gap;
- if (h < 384)
- {
- h = 384 + gap;
- uiWindowSetContentSize(window, w, h);
- }
- }
-
+ EnsureProperMinSize();
SetupScreenRects(Config::WindowWidth, Config::WindowHeight);
for (int i = 0; i < 6; i++)
@@ -922,6 +919,7 @@ void OnSetScreenLayout(uiMenuItem* item, uiWindow* window, void* param)
int layout = *(int*)param;
ScreenLayout = layout;
+ EnsureProperMinSize();
SetupScreenRects(Config::WindowWidth, Config::WindowHeight);
for (int i = 0; i < 3; i++)