fix hover eval view cfg build; fix editability-from-type-key path to respect lenses

This commit is contained in:
Ryan Fleury
2025-04-14 14:31:38 -07:00
parent a34e39751f
commit cbc44cd9e4
2 changed files with 47 additions and 29 deletions
@@ -104,39 +104,50 @@ internal B32
ev_type_key_is_editable(E_TypeKey type_key) ev_type_key_is_editable(E_TypeKey type_key)
{ {
B32 result = 0; B32 result = 0;
for(E_TypeKey t = type_key; !result; t = e_type_unwrap(e_type_direct_from_key(e_type_unwrap(t)))) B32 done = 0;
for(E_TypeKey t = type_key; !result && !done; t = e_type_direct_from_key(t))
{ {
E_TypeKind kind = e_type_kind_from_key(t); E_TypeKind kind = e_type_kind_from_key(t);
if(kind == E_TypeKind_Array) switch(kind)
{ {
E_TypeKind element_kind = e_type_kind_from_key(e_type_unwrap(e_type_direct_from_key(e_type_unwrap(t)))); case E_TypeKind_Null:
if(element_kind != E_TypeKind_U8 && case E_TypeKind_Function:
element_kind != E_TypeKind_U16 &&
element_kind != E_TypeKind_U32 &&
element_kind != E_TypeKind_S8 &&
element_kind != E_TypeKind_S16 &&
element_kind != E_TypeKind_S32 &&
element_kind != E_TypeKind_UChar8 &&
element_kind != E_TypeKind_UChar16 &&
element_kind != E_TypeKind_UChar32 &&
element_kind != E_TypeKind_Char8 &&
element_kind != E_TypeKind_Char16 &&
element_kind != E_TypeKind_Char32)
{ {
break; result = 0;
} done = 1;
else }break;
default:
if((E_TypeKind_FirstBasic <= kind && kind <= E_TypeKind_LastBasic) || e_type_kind_is_pointer_or_ref(kind))
{ {
result = 1; result = 1;
} done = 1;
} }break;
if(kind == E_TypeKind_Null || kind == E_TypeKind_Function) case E_TypeKind_Array:
{ {
break; E_Type *type = e_type_from_key__cached(t);
} if(type->flags & E_TypeFlag_IsNotText)
if((E_TypeKind_FirstBasic <= kind && kind <= E_TypeKind_LastBasic) || e_type_kind_is_pointer_or_ref(kind)) {
{ result = 0;
result = 1; done = 1;
}
else
{
E_TypeKind element_kind = e_type_kind_from_key(e_type_unwrap(e_type_direct_from_key(e_type_unwrap(t))));
result = (element_kind == E_TypeKind_U8 ||
element_kind == E_TypeKind_U16 ||
element_kind == E_TypeKind_U32 ||
element_kind == E_TypeKind_S8 ||
element_kind == E_TypeKind_S16 ||
element_kind == E_TypeKind_S32 ||
element_kind == E_TypeKind_UChar8 ||
element_kind == E_TypeKind_UChar16 ||
element_kind == E_TypeKind_UChar32 ||
element_kind == E_TypeKind_Char8 ||
element_kind == E_TypeKind_Char16 ||
element_kind == E_TypeKind_Char32);
done = 1;
}
}break;
} }
} }
return result; return result;
+9 -2
View File
@@ -1924,7 +1924,6 @@ rd_commit_eval_value_string(E_Eval dst_eval, String8 string)
B32 commit_at_ptr_dest = 0; B32 commit_at_ptr_dest = 0;
if(!e_type_key_match(e_type_key_zero(), type_key)) if(!e_type_key_match(e_type_key_zero(), type_key))
{ {
//- rjf: meta evaluations? -> always treat string as textual content, as-is, //- rjf: meta evaluations? -> always treat string as textual content, as-is,
// and commit that. // and commit that.
if(!got_commit_data && dst_eval.space.kind == RD_EvalSpaceKind_MetaCfg) if(!got_commit_data && dst_eval.space.kind == RD_EvalSpaceKind_MetaCfg)
@@ -2115,7 +2114,15 @@ rd_view_from_eval(RD_Cfg *parent, E_Eval eval)
Temp scratch = scratch_begin(0, 0); Temp scratch = scratch_begin(0, 0);
E_TypeKey type_key = eval.irtree.type_key; E_TypeKey type_key = eval.irtree.type_key;
E_Type *type = e_type_from_key__cached(type_key); E_Type *type = e_type_from_key__cached(type_key);
String8 schema_name = type->name; String8 schema_name = str8_lit("watch");
if(type->kind == E_TypeKind_Lens)
{
RD_ViewUIRule *view_ui_rule = rd_view_ui_rule_from_string(type->name);
if(view_ui_rule != &rd_nil_view_ui_rule)
{
schema_name = type->name;
}
}
RD_Cfg *view = rd_cfg_child_from_string_or_alloc(parent, schema_name); RD_Cfg *view = rd_cfg_child_from_string_or_alloc(parent, schema_name);
rd_cfg_child_from_string_or_alloc(view, str8_lit("selected")); rd_cfg_child_from_string_or_alloc(view, str8_lit("selected"));
{ {