Skip to content

Commit 141dd69

Browse files
committed
correct rich hovering for rich watch window rows; distinguish between single/double-click watch cells; more convergence
1 parent c39cc5d commit 141dd69

File tree

6 files changed

+169
-61
lines changed

6 files changed

+169
-61
lines changed

src/eval_visualization/eval_visualization_core.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,29 @@ ev_type_key_is_editable(E_TypeKey type_key)
110110
for(E_TypeKey t = type_key; !result; t = e_type_unwrap(e_type_direct_from_key(e_type_unwrap(t))))
111111
{
112112
E_TypeKind kind = e_type_kind_from_key(t);
113+
if(kind == E_TypeKind_Array)
114+
{
115+
E_TypeKind element_kind = e_type_kind_from_key(e_type_unwrap(e_type_direct_from_key(e_type_unwrap(t))));
116+
if(element_kind != E_TypeKind_U8 &&
117+
element_kind != E_TypeKind_U16 &&
118+
element_kind != E_TypeKind_U32 &&
119+
element_kind != E_TypeKind_S8 &&
120+
element_kind != E_TypeKind_S16 &&
121+
element_kind != E_TypeKind_S32 &&
122+
element_kind != E_TypeKind_UChar8 &&
123+
element_kind != E_TypeKind_UChar16 &&
124+
element_kind != E_TypeKind_UChar32 &&
125+
element_kind != E_TypeKind_Char8 &&
126+
element_kind != E_TypeKind_Char16 &&
127+
element_kind != E_TypeKind_Char32)
128+
{
129+
break;
130+
}
131+
else
132+
{
133+
result = 1;
134+
}
135+
}
113136
if(kind == E_TypeKind_Null || kind == E_TypeKind_Function)
114137
{
115138
break;

src/raddbg/raddbg_core.c

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1152,7 +1152,7 @@ rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, Vec4F32 secondary_color, F32
11521152
Vec4F32 rgba = rd_rgba_from_cfg(cfg);
11531153
if(rgba.w == 0)
11541154
{
1155-
rgba = ui_top_palette()->text;
1155+
rgba = rd_rgba_from_theme_color(RD_ThemeColor_Text);
11561156
}
11571157
RD_IconKind icon_kind = rd_icon_kind_from_code_name(cfg->string);
11581158
B32 is_from_command_line = 0;
@@ -2522,7 +2522,11 @@ rd_commit_eval_value_string(E_Eval dst_eval, String8 string, B32 string_needs_un
25222522
E_Eval src_eval_value = e_value_eval_from_eval(src_eval);
25232523
E_TypeKind src_eval_value_type_kind = e_type_kind_from_key(src_eval_value.type_key);
25242524
if(direct_type_kind == E_TypeKind_Char8 ||
2525+
direct_type_kind == E_TypeKind_Char16 ||
2526+
direct_type_kind == E_TypeKind_Char32 ||
25252527
direct_type_kind == E_TypeKind_UChar8 ||
2528+
direct_type_kind == E_TypeKind_UChar16 ||
2529+
direct_type_kind == E_TypeKind_UChar32 ||
25262530
e_type_kind_is_integer(direct_type_kind))
25272531
{
25282532
B32 is_quoted = 0;
@@ -2551,6 +2555,26 @@ rd_commit_eval_value_string(E_Eval dst_eval, String8 string, B32 string_needs_un
25512555
{
25522556
commit_at_ptr_dest = 1;
25532557
}
2558+
switch(direct_type_kind)
2559+
{
2560+
default:{}break;
2561+
case E_TypeKind_S16:
2562+
case E_TypeKind_U16:
2563+
case E_TypeKind_Char16:
2564+
case E_TypeKind_UChar16:
2565+
{
2566+
String16 data16 = str16_from_8(scratch.arena, commit_data);
2567+
commit_data = str8((U8 *)data16.str, data16.size*sizeof(U16));
2568+
}break;
2569+
case E_TypeKind_Char32:
2570+
case E_TypeKind_UChar32:
2571+
case E_TypeKind_S32:
2572+
case E_TypeKind_U32:
2573+
{
2574+
String32 data32 = str32_from_8(scratch.arena, commit_data);
2575+
commit_data = str8((U8 *)data32.str, data32.size*sizeof(U32));
2576+
}break;
2577+
}
25542578
}
25552579
else if(type_kind == E_TypeKind_Ptr &&
25562580
(e_type_kind_is_pointer_or_ref(src_eval_value_type_kind) ||
@@ -7821,6 +7845,19 @@ rd_window_frame(void)
78217845
MemoryCopyArray(inst->corner_radii, box->corner_radii);
78227846
}
78237847

7848+
// rjf: soft circle around mouse
7849+
if(ui_key_match(ui_hot_key(), box->key))
7850+
{
7851+
DR_ClipScope(box->rect)
7852+
{
7853+
Vec2F32 center = ui_mouse();
7854+
F32 radius = box->font_size*12.f;
7855+
Vec4F32 color = rd_rgba_from_theme_color(RD_ThemeColor_Hover);
7856+
color.w *= 0.1f*t;
7857+
dr_rect(pad_2f32(r2f32p(center.x, center.y, center.x, center.y), radius), color, radius, 0, radius/3.f);
7858+
}
7859+
}
7860+
78247861
// rjf: slight emboss fadeoff
78257862
if(0)
78267863
{
@@ -14068,6 +14105,7 @@ Z(getting_started)
1406814105
#undef Z
1406914106

1407014107
//- rjf: find all the fixed tabs, and all text viewers
14108+
B32 any_fixed_tabs_found = 0;
1407114109
RD_CfgList texts = {0};
1407214110
for(RD_PanelNode *panel = panel_tree.root;
1407314111
panel != &rd_nil_panel_node;
@@ -14093,6 +14131,7 @@ Z(getting_started)
1409314131
if(need_unhook)
1409414132
{
1409514133
rd_cfg_unhook(panel->cfg, tab);
14134+
any_fixed_tabs_found = 1;
1409614135
}
1409714136
}
1409814137
}
@@ -14103,7 +14142,7 @@ Z(getting_started)
1410314142
//- rjf: allocate any missing tabs
1410414143
#define X(name) if(name == &rd_nil_cfg) {name = rd_cfg_alloc(); rd_cfg_equip_string(name, str8_lit("watch")); RD_Cfg *expr_cfg = rd_cfg_new(name, str8_lit("expression")); rd_cfg_new(expr_cfg, str8_lit("query:" #name));}
1410514144
#define Y(name, rule, expr) if(name == &rd_nil_cfg) {name = rd_cfg_alloc(); rd_cfg_equip_string(name, str8_lit(#rule)); RD_Cfg *expr_cfg = rd_cfg_new(name, str8_lit("expression")); rd_cfg_new(expr_cfg, str8_lit(expr));}
14106-
#define Z(name) if(name == &rd_nil_cfg) {name = rd_cfg_alloc(); rd_cfg_equip_string(name, str8_lit(#name));}
14145+
#define Z(name) if(name == &rd_nil_cfg && !any_fixed_tabs_found) {name = rd_cfg_alloc(); rd_cfg_equip_string(name, str8_lit(#name));}
1410714146
FixedTab_XList
1410814147
#undef X
1410914148
#undef Y

0 commit comments

Comments
 (0)