begin prototype, transcript browser
This commit is contained in:
17
src/ui/ui.c
17
src/ui/ui.c
@@ -1,4 +1,5 @@
|
||||
#include "ui.gen.c"
|
||||
#include "buffer16.c"
|
||||
|
||||
fn ui_caret_t ui_caret_clamp(ui_caret_t c, i32 min, i32 max) {
|
||||
return (ui_caret_t){CLAMP(c.e[0],min,max), CLAMP(c.e[1],min,max), c.ifront};
|
||||
@@ -517,15 +518,15 @@ fn_test void ui_test_text_replace(void) {
|
||||
assert(s8_are_equal(ti.string, s8("qaer")));
|
||||
}
|
||||
|
||||
#define ui_text_input(...) ui__text_input(UILOC, __VA_ARGS__)
|
||||
fn ui_signal_t ui__text_input(ui_code_loc_t loc, ui_text_input_t *ti, b32 sim_even_if_no_focus) {
|
||||
ui_box_t *box = ui_box(.loc = loc, .string = s8("text_input"), .flags = { .draw_border = true, .draw_rect = true, .draw_text = true, .keyboard_nav = true });
|
||||
#define ui_text_input(ti, ...) ui__text_input(UILOC, ti, (ui_box_flags_t){ .draw_border = true, .draw_rect = true, .draw_text = true, .keyboard_nav = true, __VA_ARGS__ })
|
||||
fn ui_signal_t ui__text_input(ui_code_loc_t loc, ui_text_input_t *ti, ui_box_flags_t flags) {
|
||||
ui_box_t *box = ui_box(.loc = loc, .string = s8("text_input"), .flags = flags);
|
||||
|
||||
box->text_input = ti;
|
||||
box->custom_draw = ui_text_input_draw;
|
||||
ui_signal_t signal = ui_signal_from_box(box);
|
||||
|
||||
b32 sim = sim_even_if_no_focus || ui_is_focused_box(box);
|
||||
b32 sim = flags.sim_even_if_no_focus || ui_is_focused_box(box);
|
||||
if (sim) {
|
||||
app_event_t *ev = ui->event;
|
||||
i32 sel_size = r1i32_size(ti->caret.range);
|
||||
@@ -1198,7 +1199,7 @@ fn void ui_draw(void) {
|
||||
}
|
||||
|
||||
fn void ui_begin_frame(app_frame_t *frame) {
|
||||
ui = tcx->data[tcx_slot_ui];
|
||||
ui = tcx->ui_ctx;
|
||||
ui->frame = frame;
|
||||
}
|
||||
|
||||
@@ -1234,8 +1235,8 @@ fn void ui_reload(void) {
|
||||
}
|
||||
|
||||
fn void ui_init(ma_arena_t *arena) {
|
||||
tcx->data[tcx_slot_ui] = ma_push_type(arena, ui_t);
|
||||
ui = tcx->data[tcx_slot_ui];
|
||||
tcx->ui_ctx = ma_push_type(arena, ui_t);
|
||||
ui = tcx->ui_ctx;
|
||||
ui->box_arena = ma_push_arena(arena, mib(1));
|
||||
ui_reload();
|
||||
}
|
||||
@@ -1288,7 +1289,7 @@ fn void ui_demo_everything_lister(void) {
|
||||
locl ui_text_input_t text_input;
|
||||
text_input.str = buff;
|
||||
text_input.cap = lengthof(buff);
|
||||
ui_signal_t ti_sig = ui_text_input(&text_input, true);
|
||||
ui_signal_t ti_sig = ui_text_input(&text_input, .sim_even_if_no_focus = true);
|
||||
if (lister_just_opened) text_input.len = 0;
|
||||
|
||||
ma_temp_t scratch = ma_begin_scratch();
|
||||
|
||||
Reference in New Issue
Block a user