aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStapleButter <thetotalworm@gmail.com>2017-10-05 01:03:22 +0200
committerStapleButter <thetotalworm@gmail.com>2017-10-05 01:03:22 +0200
commit5d5311c53cb3c94cdeb57abba447969345b89ca4 (patch)
tree0894c160ce4e669b4fa689a2665098fa1b540f65
parent9d3f13b6891eafc4b12d62259ad0b6876952eccd (diff)
use grids instead of nested boxes for input config dialog. (still lags, needs optimization)
adjust things to make those dialogs sexier.
-rw-r--r--src/libui_sdl/DlgInputConfig.cpp20
-rw-r--r--src/libui_sdl/libui/windows/button.cpp3
2 files changed, 10 insertions, 13 deletions
diff --git a/src/libui_sdl/DlgInputConfig.cpp b/src/libui_sdl/DlgInputConfig.cpp
index 4348261..29f835f 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 3b12e72..b83d6ec 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);