diff options
| author | StapleButter <thetotalworm@gmail.com> | 2017-12-07 01:13:13 +0100 | 
|---|---|---|
| committer | StapleButter <thetotalworm@gmail.com> | 2017-12-07 01:13:13 +0100 | 
| commit | a7c777991796c1fea066a3d8d6127dbe4895a058 (patch) | |
| tree | b3c545ab5579b8b8c113ab9895297e5d5f47ea5c /src/libui_sdl/main.cpp | |
| parent | b5046b97666b0c00d603b09379f6d35b6c822bb5 (diff) | |
ensure proper minimum window size at all times
Diffstat (limited to 'src/libui_sdl/main.cpp')
| -rw-r--r-- | src/libui_sdl/main.cpp | 66 | 
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++) |