diff options
Diffstat (limited to 'src/widget/widget.c')
| -rw-r--r-- | src/widget/widget.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/widget/widget.c b/src/widget/widget.c index ef79ac4..ebcaf10 100644 --- a/src/widget/widget.c +++ b/src/widget/widget.c | |||
| @@ -63,11 +63,28 @@ uiPtr uiMakeTablePtr(uiTable* table) { | |||
| 63 | return (uiPtr){.type = uiTypeTable, .table = table}; | 63 | return (uiPtr){.type = uiTypeTable, .table = table}; |
| 64 | } | 64 | } |
| 65 | 65 | ||
| 66 | static uiPtr uiMakeWidgetPtr(uiWidget* widget) { | 66 | uiPtr uiMakeWidgetPtr(uiWidget* widget) { |
| 67 | assert(widget); | 67 | assert(widget); |
| 68 | return (uiPtr){.type = widget->type, .widget = widget}; | 68 | switch (widget->type) { |
| 69 | case uiTypeButton: | ||
| 70 | return uiMakeButtonPtr((uiButton*)widget); | ||
| 71 | case uiTypeFrame: | ||
| 72 | return uiMakeFramePtr((uiFrame*)widget); | ||
| 73 | case uiTypeLabel: | ||
| 74 | return uiMakeLabelPtr((uiLabel*)widget); | ||
| 75 | case uiTypeTable: | ||
| 76 | return uiMakeTablePtr((uiTable*)widget); | ||
| 77 | default: | ||
| 78 | ASSERT(false); | ||
| 79 | break; | ||
| 80 | } | ||
| 81 | return (uiPtr){0}; | ||
| 69 | } | 82 | } |
| 70 | 83 | ||
| 84 | uiPtr uiNullptr(void) { return (uiPtr){0}; } | ||
| 85 | |||
| 86 | bool uiIsNullptr(uiPtr ptr) { return ptr.widget == 0; } | ||
| 87 | |||
| 71 | uiButton* uiGetButtonPtr(uiPtr ptr) { | 88 | uiButton* uiGetButtonPtr(uiPtr ptr) { |
| 72 | assert(ptr.type == uiTypeButton); | 89 | assert(ptr.type == uiTypeButton); |
| 73 | assert(ptr.button); | 90 | assert(ptr.button); |
