begin prototype, transcript browser

This commit is contained in:
Krzosa Karol
2025-07-27 10:18:54 +02:00
parent c8a4d19a72
commit 6724814440
19 changed files with 165 additions and 263 deletions

View File

@@ -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();