aboutsummaryrefslogtreecommitdiff
path: root/src/libui_sdl/libui/test/page6.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libui_sdl/libui/test/page6.c')
-rw-r--r--src/libui_sdl/libui/test/page6.c126
1 files changed, 126 insertions, 0 deletions
diff --git a/src/libui_sdl/libui/test/page6.c b/src/libui_sdl/libui/test/page6.c
new file mode 100644
index 0000000..896b3d5
--- /dev/null
+++ b/src/libui_sdl/libui/test/page6.c
@@ -0,0 +1,126 @@
+// 8 october 2015
+#include <inttypes.h>
+#include "test.h"
+
+static uiArea *area;
+static uiCombobox *which;
+static uiCheckbox *swallowKeys;
+
+struct handler {
+ uiAreaHandler ah;
+};
+
+static struct handler handler;
+
+static void handlerDraw(uiAreaHandler *a, uiArea *area, uiAreaDrawParams *p)
+{
+ runDrawTest(uiComboboxSelected(which), p);
+}
+
+static void handlerMouseEvent(uiAreaHandler *a, uiArea *area, uiAreaMouseEvent *e)
+{
+ printf("mouse (%g,%g):(%g,%g) down:%d up:%d count:%d mods:%x held:0x%" PRIX64 "\n",
+ e->X,
+ e->Y,
+ e->AreaWidth,
+ e->AreaHeight,
+ (int) e->Down,
+ (int) e->Up,
+ (int) e->Count,
+ (uint32_t) e->Modifiers,
+ e->Held1To64);
+}
+
+static void handlerMouseCrossed(uiAreaHandler *ah, uiArea *a, int left)
+{
+ printf("mouse crossed %d\n", left);
+}
+
+static void handlerDragBroken(uiAreaHandler *ah, uiArea *a)
+{
+ printf("drag broken\n");
+}
+
+static int handlerKeyEvent(uiAreaHandler *ah, uiArea *a, uiAreaKeyEvent *e)
+{
+ char k[4];
+
+ k[0] = '\'';
+ k[1] = e->Key;
+ k[2] = '\'';
+ k[3] = '\0';
+ if (e->Key == 0) {
+ k[0] = '0';
+ k[1] = '\0';
+ }
+ printf("key key:%s extkey:%d mod:%d mods:%d up:%d\n",
+ k,
+ (int) e->ExtKey,
+ (int) e->Modifier,
+ (int) e->Modifiers,
+ e->Up);
+ return uiCheckboxChecked(swallowKeys);
+}
+
+static void shouldntHappen(uiCombobox *c, void *data)
+{
+ fprintf(stderr, "YOU SHOULD NOT SEE THIS. If you do, uiComboboxSetSelected() is triggering uiComboboxOnSelected(), which it should not.\n");
+}
+
+static void redraw(uiCombobox *c, void *data)
+{
+ uiAreaQueueRedrawAll(area);
+}
+
+static void enableArea(uiButton *b, void *data)
+{
+ if (data != NULL)
+ uiControlEnable(uiControl(area));
+ else
+ uiControlDisable(uiControl(area));
+}
+
+uiBox *makePage6(void)
+{
+ uiBox *page6;
+ uiBox *hbox;
+ uiButton *button;
+
+ handler.ah.Draw = handlerDraw;
+ handler.ah.MouseEvent = handlerMouseEvent;
+ handler.ah.MouseCrossed = handlerMouseCrossed;
+ handler.ah.DragBroken = handlerDragBroken;
+ handler.ah.KeyEvent = handlerKeyEvent;
+
+ page6 = newVerticalBox();
+
+ hbox = newHorizontalBox();
+ uiBoxAppend(page6, uiControl(hbox), 0);
+
+ which = uiNewCombobox();
+ populateComboboxWithTests(which);
+ // this is to make sure that uiComboboxOnSelected() doesn't trigger with uiComboboxSetSelected()
+ uiComboboxOnSelected(which, shouldntHappen, NULL);
+ uiComboboxSetSelected(which, 0);
+ uiComboboxOnSelected(which, redraw, NULL);
+ uiBoxAppend(hbox, uiControl(which), 0);
+
+ area = uiNewArea((uiAreaHandler *) (&handler));
+ uiBoxAppend(page6, uiControl(area), 1);
+
+ hbox = newHorizontalBox();
+ uiBoxAppend(page6, uiControl(hbox), 0);
+
+ swallowKeys = uiNewCheckbox("Consider key events handled");
+ uiBoxAppend(hbox, uiControl(swallowKeys), 1);
+
+ button = uiNewButton("Enable");
+ uiButtonOnClicked(button, enableArea, button);
+ uiBoxAppend(hbox, uiControl(button), 0);
+
+ button = uiNewButton("Disable");
+ uiButtonOnClicked(button, enableArea, NULL);
+ uiBoxAppend(hbox, uiControl(button), 0);
+
+ return page6;
+}