diff --git a/test/page1.c b/test/page1.c index f91dcd8e..69b59251 100644 --- a/test/page1.c +++ b/test/page1.c @@ -24,6 +24,24 @@ TEXT(Button, uiButton, uiButtonText, uiButtonSetText) TEXT(Checkbox, uiCheckbox, uiCheckboxText, uiCheckboxSetText) TEXT(Label, uiLabel, uiLabelText, uiLabelSetText) +static void toggleSpaced(uiCheckbox *c, void *data) +{ + setSpaced(uiCheckboxChecked(spaced)); +} + +static void forceSpaced(uiButton *b, void *data) +{ + uiCheckboxSetChecked(spaced, data != NULL); +} + +static void showSpaced(uiButton *b, void *data) +{ + char s[12]; + + querySpaced(s); + uiEntrySetText(entry, s); +} + uiBox *makePage1(uiWindow *w) { uiBox *page1; @@ -38,6 +56,7 @@ uiBox *makePage1(uiWindow *w) uiBoxAppend(page1, uiControl(entry), 0); spaced = uiNewCheckbox("Spaced"); + uiCheckboxOnToggled(spaced, toggleSpaced, NULL); label = uiNewLabel("Label"); hbox = newHorizontalBox(); @@ -79,10 +98,13 @@ uiBox *makePage1(uiWindow *w) hbox = newHorizontalBox(); uiBoxAppend(hbox, uiControl(spaced), 1); getButton = uiNewButton("On"); + uiButtonOnClicked(getButton, forceSpaced, getButton); uiBoxAppend(hbox, uiControl(getButton), 0); getButton = uiNewButton("Off"); + uiButtonOnClicked(getButton, forceSpaced, NULL); uiBoxAppend(hbox, uiControl(getButton), 0); getButton = uiNewButton("Show"); + uiButtonOnClicked(getButton, showSpaced, NULL); uiBoxAppend(hbox, uiControl(getButton), 0); uiBoxAppend(page1, uiControl(hbox), 0); diff --git a/test/spaced.c b/test/spaced.c index a5932eed..6d080b0e 100644 --- a/test/spaced.c +++ b/test/spaced.c @@ -53,6 +53,41 @@ void setSpaced(int spaced) } } +void querySpaced(char out[12]) // more than enough +{ + int m = 0; + int p = 0; + uintmax_t i; + void *pp; + + for (i = 0; i < len; i++) { + pp = things[i].ptr; + switch (things[i].type) { + case window: + m = uiWindowMargined(uiWindow(pp)); + break; + case box: + p = uiBoxPadded(uiBox(pp)); + break; + } + if (m && p) // cheap attempt at breaking early + break; + } + + out[0] = 'm'; + out[1] = ' '; + out[2] = '0'; + if (m) + out[2] = '1'; + out[3] = ' '; + out[4] = 'p'; + out[5] = ' '; + out[6] = '0'; + if (p) + out[6] = '1'; + out[7] = '\0'; +} + uiWindow *newWindow(const char *title, int width, int height, int hasMenubar) { uiWindow *w; diff --git a/test/test.h b/test/test.h index 5626f38b..748b6f45 100644 --- a/test/test.h +++ b/test/test.h @@ -11,6 +11,7 @@ extern void die(const char *, ...); // spaced.c extern void setSpaced(int); +extern void querySpaced(char[12]); extern uiWindow *newWindow(const char *title, int width, int height, int hasMenubar); extern uiBox *newHorizontalBox(void); extern uiBox *newVerticalBox(void);