annotate libmlk-ui/mlk/ui/button.c @ 507:d49a05e7a5b5

ui: separate delegate/style Now UI elements do have different styling properties: - _delegate: functions used to update, draw or perform specific actions on the UI element. - _style: basic properties that the delegate should support if possible.
author David Demelier <markand@malikania.fr>
date Thu, 02 Mar 2023 21:36:43 +0100
parents 6100c643dba0
children 7e7c6786d21e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * button.c -- GUI button
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
445
773a082f0b91 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 433
diff changeset
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr>
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <assert.h>
152
1008a796a9e7 ui: make UI widgets usable as actions
David Demelier <markand@malikania.fr>
parents: 151
diff changeset
20 #include <string.h>
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
431
8f59201dc76b core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
22 #include <mlk/core/event.h>
8f59201dc76b core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
23 #include <mlk/core/maths.h>
8f59201dc76b core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
24 #include <mlk/core/painter.h>
8f59201dc76b core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
25 #include <mlk/core/trace.h>
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
26
152
1008a796a9e7 ui: make UI widgets usable as actions
David Demelier <markand@malikania.fr>
parents: 151
diff changeset
27 #include "align.h"
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 #include "button.h"
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
29 #include "ui.h"
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
30 #include "ui_p.h"
151
b19d076856d2 ui: cleanup theme module, closes #2498
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
31
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
32 static inline int
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
33 is_boxed(const struct mlk_button *button, const struct mlk_event_click *click)
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
34 {
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
35 assert(button);
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
36 assert(click);
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
37 assert(click->type == MLK_EVENT_CLICKDOWN || click->type == MLK_EVENT_CLICKUP);
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
38
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
39 return mlk_maths_is_boxed(button->x, button->y, button->w, button->h,
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
40 click->x, click->y);
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
41 }
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
42
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
43 static inline struct mlk_font *
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
44 style_font(const struct mlk_button *button)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
45 {
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
46 const struct mlk_button_style *style = MLK__STYLE(button, mlk_button_style);
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
47
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
48 if (style->text_font)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
49 return style->text_font;
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
50
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
51 return mlk_ui_fonts[MLK_UI_FONT_INTERFACE];
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
52 }
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
53
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
54 static void
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
55 delegate_draw_frame(struct mlk_button_delegate *delegate, const struct mlk_button *button)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
56 {
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
57 (void)delegate;
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
58
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
59 const struct mlk_button_style *style = MLK__STYLE(button, mlk_button_style);
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
60
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
61 mlk_painter_set_color(style->border_color);
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
62 mlk_painter_draw_rectangle(button->x, button->y, button->w, button->h);
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
63 mlk_painter_set_color(style->bg_color);
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
64 mlk_painter_draw_rectangle(
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
65 button->x + style->border_size,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
66 button->y + style->border_size,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
67 button->w - (style->border_size * 2),
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
68 button->h - (style->border_size * 2)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
69 );
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
70 }
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
71
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
72 static void
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
73 delegate_draw_text(struct mlk_button_delegate *delegate, const struct mlk_button *button)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
74 {
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
75 (void)delegate;
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
76
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
77 const struct mlk_button_style *style = MLK__STYLE(button, mlk_button_style);
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
78
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
79 mlk_ui_draw_text(
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
80 MLK_ALIGN_CENTER,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
81 style_font(button),
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
82 style->text_color,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
83 button->text,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
84 button->x,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
85 button->y,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
86 button->w,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
87 button->h
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
88 );
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
89 }
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
90
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
91 struct mlk_button_style mlk_button_style = {
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
92 .bg_color = MLK_UI_COLOR_BG,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
93 .text_color = MLK_UI_COLOR_TEXT,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
94 .border_color = MLK_UI_COLOR_BORDER,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
95 .border_size = 1
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
96 };
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
97
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
98 struct mlk_button_delegate mlk_button_delegate = {
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
99 .draw_frame = delegate_draw_frame,
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
100 .draw_text = delegate_draw_text
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
101 };
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
102
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
103 int
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
104 mlk_button_ok(const struct mlk_button *button)
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
105 {
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
106 if (!button)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
107 return 0;
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
108 if (button->text && strlen(button->text) == 0)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
109 return 0;
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
110
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
111 return 1;
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
112 }
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
113
409
6011ad866e99 ui: delete action functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
114 int
488
441c37e7474f ui: button -> mlk_button
David Demelier <markand@malikania.fr>
parents: 487
diff changeset
115 mlk_button_handle(struct mlk_button *button, const union mlk_event *ev)
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 assert(button);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 assert(ev);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
119
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
120 int active = 0;
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
121
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 switch (ev->type) {
450
b26dd49f69ff core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents: 445
diff changeset
123 case MLK_EVENT_CLICKDOWN:
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 if (is_boxed(button, &ev->click))
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
125 button->pressed = 1;
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 break;
450
b26dd49f69ff core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents: 445
diff changeset
127 case MLK_EVENT_CLICKUP:
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 /*
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 * If the button was pressed, indicate that the button is
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 * finally activated. This let the user to move the cursor
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 * outside the button to "forget" the press.
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 */
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
133 button->pressed = 0;
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
134
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
135 if (is_boxed(button, &ev->click))
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
136 active = 1;
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 break;
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 default:
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 break;
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 }
409
6011ad866e99 ui: delete action functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
141
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
142 return active;
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
144
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 void
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
146 mlk_button_update(struct mlk_button *button, unsigned int ticks)
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 assert(button);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
149
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
150 MLK__DELEGATE_INVOKE(button->delegate, mlk_button_delegate, update, button, ticks);
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 }
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
152
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 void
488
441c37e7474f ui: button -> mlk_button
David Demelier <markand@malikania.fr>
parents: 487
diff changeset
154 mlk_button_draw(const struct mlk_button *button)
99
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 {
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 assert(button);
4ac71ac10c9f core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
diff changeset
157
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
158 MLK__DELEGATE_INVOKE(button->delegate, mlk_button_delegate, draw_frame, button);
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
159
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
160 if (button->text)
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
161 MLK__DELEGATE_INVOKE(button->delegate, mlk_button_delegate, draw_text, button);
502
ab2816f9551c ui: start reworking on styles
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
162 }