Browse Source

added UI_ADJUST_HEIGHT to support multiline text boxes

pull/1/head
Leonard Ritter 10 years ago
parent
commit
1bf721fbcd
1 changed files with 29 additions and 11 deletions
  1. +29
    -11
      oui.h

+ 29
- 11
oui.h View File

@@ -234,25 +234,25 @@ typedef enum UIitemState {
// layout flags
typedef enum UIlayoutFlags {
// anchor to left item or left side of parent
UI_LEFT = 1,
UI_LEFT = 0x01,
// anchor to top item or top side of parent
UI_TOP = 2,
UI_TOP = 0x02,
// anchor to right item or right side of parent
UI_RIGHT = 4,
UI_RIGHT = 0x04,
// anchor to bottom item or bottom side of parent
UI_DOWN = 8,
UI_DOWN = 0x08,
// anchor to both left and right item or parent borders
UI_HFILL = 5,
UI_HFILL = 0x05,
// anchor to both top and bottom item or parent borders
UI_VFILL = 10,
UI_VFILL = 0x0A,
// center horizontally, with left margin as offset
UI_HCENTER = 0,
UI_HCENTER = 0x00,
// center vertically, with top margin as offset
UI_VCENTER = 0,
UI_VCENTER = 0x00,
// center in both directions, with left/top margin as offset
UI_CENTER = 0,
UI_CENTER = 0x00,
// anchor to all four directions
UI_FILL = 15,
UI_FILL = 0x0F,
} UIlayoutFlags;

// event flags
@@ -286,10 +286,15 @@ typedef enum UIevent {
// item is focused and has received a character event
// the respective character can be queried using uiGetKey()
UI_CHAR = 0x0100,
// if this flag is true, all events will propagate to the parent;
// if this flag is set, all events will propagate to the parent;
// the original item firing this event can be retrieved using
// uiGetEventItem()
UI_PROPAGATE = 0x0200,
// after computing the horizontal size of the element, the vertical
// size needs adjustment.
// the handler is called after the horizontal layout step, and can make
// modifications to the items height using uiSetSize()
UI_ADJUST_HEIGHT = 0x0400,
} UIevent;

// handler callback; event is one of UI_EVENT_*
@@ -1032,6 +1037,16 @@ int uiItem() {
return idx;
}

void uiNotifyAllItems(UIevent event) {
assert(ui_context);
for (int i = 0; i < ui_context->count; ++i) {
UIitem *pitem = ui_context->items + i;
if (pitem->handler && (pitem->event_flags & event)) {
pitem->handler(i, event);
}
}
}

void uiNotifyItem(int item, UIevent event) {
assert(ui_context);
ui_context->event_item = item;
@@ -1472,6 +1487,9 @@ void uiLayout() {
uiItemPtr(0)->rect.x = uiItemPtr(0)->margins[0];
uiLayoutItem(0,0);
// give items a chance to adjust their height
uiNotifyAllItems(UI_ADJUST_HEIGHT);

// compute heights
uiComputeBestSize(0,1);
// position root element rect


Loading…
Cancel
Save