| @@ -244,33 +244,35 @@ typedef enum UIlayoutFlags { | |||
| // event flags | |||
| typedef enum UIevent { | |||
| // on button 0 down | |||
| UI_BUTTON0_DOWN = 0x01, | |||
| UI_BUTTON0_DOWN = 0x0001, | |||
| // on button 0 up | |||
| // when this event has a handler, uiGetState() will return UI_ACTIVE as | |||
| // long as button 0 is down. | |||
| UI_BUTTON0_UP = 0x02, | |||
| UI_BUTTON0_UP = 0x0002, | |||
| // on button 0 up while item is hovered | |||
| // when this event has a handler, uiGetState() will return UI_ACTIVE | |||
| // when the cursor is hovering the items rectangle; this is the | |||
| // behavior expected for buttons. | |||
| UI_BUTTON0_HOT_UP = 0x04, | |||
| UI_BUTTON0_HOT_UP = 0x0004, | |||
| // item is being captured (button 0 constantly pressed); | |||
| // when this event has a handler, uiGetState() will return UI_ACTIVE as | |||
| // long as button 0 is down. | |||
| UI_BUTTON0_CAPTURE = 0x08, | |||
| UI_BUTTON0_CAPTURE = 0x0008, | |||
| // on button 2 down (right mouse button, usually triggers context menu) | |||
| UI_BUTTON2_DOWN = 0x0010, | |||
| // item has received a new child | |||
| // this can be used to allow container items to configure child items | |||
| // as they appear. | |||
| UI_APPEND = 0x10, | |||
| UI_APPEND = 0x0100, | |||
| // item is focused and has received a key-down event | |||
| // the respective key can be queried using uiGetActiveKey() | |||
| UI_KEY_DOWN = 0x20, | |||
| UI_KEY_DOWN = 0x0200, | |||
| // item is focused and has received a key-up event | |||
| // the respective key can be queried using uiGetActiveKey() | |||
| UI_KEY_UP = 0x40, | |||
| UI_KEY_UP = 0x0400, | |||
| // item is focused and has received a character event | |||
| // the respective character can be queried using uiGetActiveKey() | |||
| UI_CHAR = 0x80, | |||
| UI_CHAR = 0x0800, | |||
| } UIevent; | |||
| @@ -595,6 +597,7 @@ int uiGetRelToDown(int item); | |||
| |UI_BUTTON0_UP \ | |||
| |UI_BUTTON0_HOT_UP \ | |||
| |UI_BUTTON0_CAPTURE \ | |||
| |UI_BUTTON2_DOWN \ | |||
| |UI_KEY_DOWN \ | |||
| |UI_KEY_UP \ | |||
| |UI_CHAR) | |||
| @@ -1413,8 +1416,8 @@ void uiProcess() { | |||
| ui_context->start_cursor = ui_context->cursor; | |||
| if (uiGetButton(0)) { | |||
| hot_item = -1; | |||
| ui_context->active_rect = ui_context->hot_rect; | |||
| active_item = hot; | |||
| ui_context->active_rect = ui_context->hot_rect; | |||
| if (active_item != focus_item) { | |||
| focus_item = -1; | |||
| @@ -1425,6 +1428,10 @@ void uiProcess() { | |||
| uiNotifyItem(active_item, UI_BUTTON0_DOWN); | |||
| } | |||
| ui_context->state = UI_STATE_CAPTURE; | |||
| } else if (uiGetButton(2) && !uiGetLastButton(2) && (hot >= 0)) { | |||
| hot_item = -1; | |||
| ui_context->active_rect = ui_context->hot_rect; | |||
| uiNotifyItem(hot, UI_BUTTON2_DOWN); | |||
| } else { | |||
| hot_item = hot; | |||
| } | |||