From 5d5311c53cb3c94cdeb57abba447969345b89ca4 Mon Sep 17 00:00:00 2001 From: StapleButter Date: Thu, 5 Oct 2017 01:03:22 +0200 Subject: [PATCH] use grids instead of nested boxes for input config dialog. (still lags, needs optimization) adjust things to make those dialogs sexier. --- src/libui_sdl/DlgInputConfig.cpp | 20 +++++++------------- src/libui_sdl/libui/windows/button.cpp | 3 +++ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/libui_sdl/DlgInputConfig.cpp b/src/libui_sdl/DlgInputConfig.cpp index 43482612..29f835f3 100644 --- a/src/libui_sdl/DlgInputConfig.cpp +++ b/src/libui_sdl/DlgInputConfig.cpp @@ -303,27 +303,24 @@ void Open() { uiBox* in_ctrl = uiNewHorizontalBox(); uiBoxAppend(top, uiControl(in_ctrl), 0); - + uiBoxSetPadded(in_ctrl, 1); uiGroup* g_key = uiNewGroup("Keyboard"); uiBoxAppend(in_ctrl, uiControl(g_key), 1); - uiBox* b_key = uiNewVerticalBox(); + uiGrid* b_key = uiNewGrid(); uiGroupSetChild(g_key, uiControl(b_key)); for (int i = 0; i < 12; i++) { int j = keyorder[i]; - uiBox* box = uiNewHorizontalBox(); - uiBoxAppend(b_key, uiControl(box), 0); - uiLabel* label = uiNewLabel(keylabels[j]); - uiBoxAppend(box, uiControl(label), 1); + uiGridAppend(b_key, uiControl(label), 0, i, 1, 1, 1, uiAlignStart, 1, uiAlignCenter); char* keyname = uiKeyName(Config::KeyMapping[j]); uiButton* btn = uiNewButton(keyname); - uiBoxAppend(box, uiControl(btn), 1); + uiGridAppend(b_key, uiControl(btn), 1, i, 1, 1, 1, uiAlignFill, 1, uiAlignCenter); uiButtonOnClicked(btn, OnKeyStartConfig, &keyorder[i]); uiFreeText(keyname); @@ -331,24 +328,21 @@ void Open() uiGroup* g_joy = uiNewGroup("Joystick"); uiBoxAppend(in_ctrl, uiControl(g_joy), 1); - uiBox* b_joy = uiNewVerticalBox(); + uiGrid* b_joy = uiNewGrid(); uiGroupSetChild(g_joy, uiControl(b_joy)); for (int i = 0; i < 12; i++) { int j = keyorder[i]; - uiBox* box = uiNewHorizontalBox(); - uiBoxAppend(b_joy, uiControl(box), 0); - uiLabel* label = uiNewLabel(keylabels[j]); - uiBoxAppend(box, uiControl(label), 1); + uiGridAppend(b_joy, uiControl(label), 0, i, 1, 1, 1, uiAlignStart, 1, uiAlignCenter); char keyname[16]; JoyMappingName(Config::JoyMapping[j], keyname); uiButton* btn = uiNewButton(keyname); - uiBoxAppend(box, uiControl(btn), 1); + uiGridAppend(b_joy, uiControl(btn), 1, i, 1, 1, 1, uiAlignFill, 1, uiAlignCenter); uiButtonOnClicked(btn, OnJoyStartConfig, &keyorder[i]); } } diff --git a/src/libui_sdl/libui/windows/button.cpp b/src/libui_sdl/libui/windows/button.cpp index 3b12e726..b83d6ec4 100644 --- a/src/libui_sdl/libui/windows/button.cpp +++ b/src/libui_sdl/libui/windows/button.cpp @@ -32,6 +32,7 @@ uiWindowsControlAllDefaultsExceptDestroy(uiButton) // from http://msdn.microsoft.com/en-us/library/windows/desktop/dn742486.aspx#sizingandspacing #define buttonHeight 14 +#define buttonMinWidth 64 static void uiButtonMinimumSize(uiWindowsControl *c, int *width, int *height) { @@ -45,6 +46,7 @@ static void uiButtonMinimumSize(uiWindowsControl *c, int *width, int *height) size.cy = 0; if (SendMessageW(b->hwnd, BCM_GETIDEALSIZE, 0, (LPARAM) (&size)) != FALSE) { *width = size.cx; + if (*width < buttonMinWidth) *width = buttonMinWidth; *height = size.cy; return; } @@ -53,6 +55,7 @@ static void uiButtonMinimumSize(uiWindowsControl *c, int *width, int *height) // Microsoft says to use a fixed width for all buttons; this isn't good enough // use the text width instead, with some edge padding *width = uiWindowsWindowTextWidth(b->hwnd) + (2 * GetSystemMetrics(SM_CXEDGE)); + if (*width < buttonMinWidth) *width = buttonMinWidth; y = buttonHeight; uiWindowsGetSizing(b->hwnd, &sizing); uiWindowsSizingDlgUnitsToPixels(&sizing, NULL, &y);