diff --git a/oui.h b/oui.h index d69b31c..13164d3 100644 --- a/oui.h +++ b/oui.h @@ -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; }