From d560f8c734ba87fd1ea79e2dd5fefb6e3031fe00 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Tue, 9 Apr 2024 07:37:53 -0700 Subject: [PATCH] fix backslash escaping rules in cfg serialization; fix small scrolling (e.g. from trackpad) often being truncated to having no effect; fixed hanging when set-thread-name specifies a non-readable address --- src/demon/win32/demon_core_win32.c | 4 ++++ src/df/core/df_core.c | 6 ++++-- src/ui/ui_core.c | 9 +++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/demon/win32/demon_core_win32.c b/src/demon/win32/demon_core_win32.c index 42035c76..d48d7571 100644 --- a/src/demon/win32/demon_core_win32.c +++ b/src/demon/win32/demon_core_win32.c @@ -2136,6 +2136,10 @@ dmn_ctrl_run(Arena *arena, DMN_CtrlCtx *ctx, DMN_RunCtrls *ctrls) break; } } + else + { + read_addr += 256; + } } } e->kind = DMN_EventKind_SetThreadName; diff --git a/src/df/core/df_core.c b/src/df/core/df_core.c index 310d0607..74740ff8 100644 --- a/src/df/core/df_core.c +++ b/src/df/core/df_core.c @@ -5738,7 +5738,7 @@ df_cfg_escaped_from_raw_string(Arena *arena, String8 string) for(U64 idx = 0; idx <= string.size; idx += 1) { U8 byte = (idx < string.size ? string.str[idx] : 0); - if(byte == 0 || byte == '\"') + if(byte == 0 || byte == '\"' || byte == '\\') { String8 part = str8_substr(string, r1u64(split_start_idx, idx)); str8_list_push(scratch.arena, &parts, part); @@ -5746,6 +5746,7 @@ df_cfg_escaped_from_raw_string(Arena *arena, String8 string) { default:{}break; case '\"':{str8_list_push(scratch.arena, &parts, str8_lit("\\\""));}break; + case '\\':{str8_list_push(scratch.arena, &parts, str8_lit("\\\\"));}break; } split_start_idx = idx+1; } @@ -5775,7 +5776,8 @@ df_cfg_raw_from_escaped_string(Arena *arena, String8 string) switch(string.str[idx+1]) { default:{}break; - case '"':{extra_advance = 1; str8_list_push(scratch.arena, &parts, str8_lit("\""));}break; + case '"': {extra_advance = 1; str8_list_push(scratch.arena, &parts, str8_lit("\""));}break; + case '\\':{extra_advance = 1; str8_list_push(scratch.arena, &parts, str8_lit("\\"));}break; } } split_start_idx = idx+1+extra_advance; diff --git a/src/ui/ui_core.c b/src/ui/ui_core.c index e9bccdab..50562895 100644 --- a/src/ui/ui_core.c +++ b/src/ui/ui_core.c @@ -2525,8 +2525,13 @@ ui_signal_from_box(UI_Box *box) { Swap(F32, delta.x, delta.y); } - sig.scroll.x += (S16)(delta.x/30.f); - sig.scroll.y += (S16)(delta.y/30.f); + Vec2S16 delta16 = v2s16((S16)(delta.x/30.f), (S16)(delta.y/30.f)); + if(delta.x > 0 && delta16.x == 0) { delta16.x = +1; } + if(delta.x < 0 && delta16.x == 0) { delta16.x = -1; } + if(delta.y > 0 && delta16.y == 0) { delta16.y = +1; } + if(delta.y < 0 && delta16.y == 0) { delta16.y = -1; } + sig.scroll.x += delta16.x; + sig.scroll.y += delta16.y; taken = 1; }