|
|
@@ -92,9 +92,9 @@ struct Widget { |
|
|
|
void addChild(Widget *widget); |
|
|
|
/** Removes widget from list of children if it exists. |
|
|
|
Does not delete widget but transfers ownership to caller |
|
|
|
Silently fails if widget is not a child |
|
|
|
*/ |
|
|
|
void removeChild(Widget *widget); |
|
|
|
/** Removes and deletes all children */ |
|
|
|
void clearChildren(); |
|
|
|
/** Recursively finalizes event start/end pairs as needed */ |
|
|
|
void finalizeEvents(); |
|
|
@@ -106,24 +106,28 @@ struct Widget { |
|
|
|
|
|
|
|
// Events |
|
|
|
|
|
|
|
/** Called when a mouse button is pressed over this widget |
|
|
|
0 for left, 1 for right, 2 for middle. |
|
|
|
Return `this` to accept the event. |
|
|
|
Return NULL to reject the event and pass it to the widget behind this one. |
|
|
|
*/ |
|
|
|
/** Called when a mouse button is pressed over this widget */ |
|
|
|
virtual void onMouseDown(EventMouseDown &e); |
|
|
|
/** Called when a mouse button is released over this widget */ |
|
|
|
virtual void onMouseUp(EventMouseUp &e); |
|
|
|
/** Called on every frame, even if mouseRel = Vec(0, 0) */ |
|
|
|
/** Called when the mouse moves over this widget. |
|
|
|
Called on every frame, even if `mouseRel = Vec(0, 0)`. |
|
|
|
*/ |
|
|
|
virtual void onMouseMove(EventMouseMove &e); |
|
|
|
/** Called when a key is pressed while hovering over this widget */ |
|
|
|
virtual void onHoverKey(EventHoverKey &e); |
|
|
|
/** Called when this widget begins responding to `onMouseMove` events */ |
|
|
|
virtual void onMouseEnter(EventMouseEnter &e) {} |
|
|
|
/** Called when another widget begins responding to `onMouseMove` events */ |
|
|
|
/** Called when this widget no longer responds to `onMouseMove` events */ |
|
|
|
virtual void onMouseLeave(EventMouseLeave &e) {} |
|
|
|
/** Called when this widget gains focus by responding to the `onMouseDown` event */ |
|
|
|
virtual void onFocus(EventFocus &e) {} |
|
|
|
virtual void onDefocus(EventDefocus &e) {} |
|
|
|
/** Called when a printable character is received while this widget is focused */ |
|
|
|
virtual void onText(EventText &e) {} |
|
|
|
/** Called when a key is pressed while this widget is focused */ |
|
|
|
virtual void onKey(EventKey &e) {} |
|
|
|
/** Called when the scroll wheel is moved while the mouse is hovering over this widget */ |
|
|
|
virtual void onScroll(EventScroll &e); |
|
|
|
|
|
|
|
/** Called when a widget responds to `onMouseDown` for a left button press */ |
|
|
@@ -135,11 +139,16 @@ struct Widget { |
|
|
|
/** Called when a widget responds to `onMouseUp` for a left button release and a widget is being dragged */ |
|
|
|
virtual void onDragEnter(EventDragEnter &e) {} |
|
|
|
virtual void onDragLeave(EventDragEnter &e) {} |
|
|
|
/** Called when a drag action ends while hovering this widget */ |
|
|
|
virtual void onDragDrop(EventDragDrop &e) {} |
|
|
|
/** Called when an OS selection of files is dragged-and-dropped on this widget */ |
|
|
|
virtual void onPathDrop(EventPathDrop &e); |
|
|
|
|
|
|
|
/** Called when an event triggers an action */ |
|
|
|
virtual void onAction(EventAction &e) {} |
|
|
|
/** For widgets with some concept of values, called when the value is changed */ |
|
|
|
virtual void onChange(EventChange &e) {} |
|
|
|
/** Called when the zoom level is changed of this widget */ |
|
|
|
virtual void onZoom(EventZoom &e); |
|
|
|
|
|
|
|
/** Helper function for creating and initializing a Widget with certain arguments (in this case just the position). |
|
|
|