mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-05 21:38:40 +00:00
fix a few small issues with insertion/deletion of new watch rows
This commit is contained in:
+23
-16
@@ -1462,12 +1462,15 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
|||||||
RD_Entity *entity = collection_info.entity;
|
RD_Entity *entity = collection_info.entity;
|
||||||
if(!rd_entity_is_nil(entity) || editing_complete)
|
if(!rd_entity_is_nil(entity) || editing_complete)
|
||||||
{
|
{
|
||||||
if(rd_entity_is_nil(entity))
|
if(rd_entity_is_nil(entity) && new_string.size != 0)
|
||||||
{
|
{
|
||||||
entity = rd_entity_alloc(rd_entity_root(), collection_info.kind);
|
entity = rd_entity_alloc(rd_entity_root(), collection_info.kind);
|
||||||
|
rd_entity_equip_cfg_src(entity, RD_CfgSrc_Project);
|
||||||
|
}
|
||||||
|
if(!rd_entity_is_nil(entity))
|
||||||
|
{
|
||||||
|
rd_entity_equip_name(entity, new_string);
|
||||||
}
|
}
|
||||||
rd_entity_equip_cfg_src(entity, RD_CfgSrc_Project);
|
|
||||||
rd_entity_equip_name(entity, new_string);
|
|
||||||
state_dirty = 1;
|
state_dirty = 1;
|
||||||
snap_to_cursor = 1;
|
snap_to_cursor = 1;
|
||||||
}
|
}
|
||||||
@@ -1632,27 +1635,31 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
|||||||
{}break;
|
{}break;
|
||||||
default:
|
default:
|
||||||
case RD_WatchViewColumnKind_Expr:
|
case RD_WatchViewColumnKind_Expr:
|
||||||
|
if(tbl.y != 0)
|
||||||
{
|
{
|
||||||
RD_WatchViewCollectionInfo collection_info = rd_collection_info_from_num(&block_ranges, tbl.y);
|
RD_WatchViewCollectionInfo collection_info = rd_collection_info_from_num(&block_ranges, tbl.y);
|
||||||
if(collection_info.kind != RD_EntityKind_Nil)
|
if(collection_info.kind != RD_EntityKind_Nil)
|
||||||
{
|
{
|
||||||
RD_Entity *entity = collection_info.entity;
|
RD_Entity *entity = collection_info.entity;
|
||||||
rd_entity_mark_for_deletion(entity);
|
if(!rd_entity_is_nil(entity))
|
||||||
U64 deleted_id = collection_info.key.child_id;
|
|
||||||
U64 deleted_num = collection_info.block->expand_view_rule_info->expr_expand_num_from_id(deleted_id, collection_info.block->expand_view_rule_info_user_data);
|
|
||||||
if(deleted_num != 0)
|
|
||||||
{
|
{
|
||||||
U64 fallback_id_next = collection_info.block->expand_view_rule_info->expr_expand_id_from_num(deleted_num+1, collection_info.block->expand_view_rule_info_user_data);
|
rd_entity_mark_for_deletion(entity);
|
||||||
U64 fallback_id_prev = collection_info.block->expand_view_rule_info->expr_expand_id_from_num(deleted_num-1, collection_info.block->expand_view_rule_info_user_data);
|
U64 deleted_id = collection_info.key.child_id;
|
||||||
EV_Key parent_key = collection_info.block->key;
|
U64 deleted_num = collection_info.block->expand_view_rule_info->expr_expand_num_from_id(deleted_id, collection_info.block->expand_view_rule_info_user_data);
|
||||||
EV_Key key = ev_key_make(collection_info.key.parent_hash, fallback_id_next ? fallback_id_next : fallback_id_prev);
|
if(deleted_num != 0)
|
||||||
if(key.child_id == 0)
|
|
||||||
{
|
{
|
||||||
key = collection_info.block->key;
|
U64 fallback_id_next = collection_info.block->expand_view_rule_info->expr_expand_id_from_num(deleted_num+1, collection_info.block->expand_view_rule_info_user_data);
|
||||||
parent_key = collection_info.block->parent->key;
|
U64 fallback_id_prev = collection_info.block->expand_view_rule_info->expr_expand_id_from_num(deleted_num-1, collection_info.block->expand_view_rule_info_user_data);
|
||||||
|
EV_Key parent_key = collection_info.block->key;
|
||||||
|
EV_Key key = ev_key_make(collection_info.key.parent_hash, fallback_id_next ? fallback_id_next : fallback_id_prev);
|
||||||
|
if(key.child_id == 0)
|
||||||
|
{
|
||||||
|
key = collection_info.block->key;
|
||||||
|
parent_key = collection_info.block->parent->key;
|
||||||
|
}
|
||||||
|
RD_WatchViewPoint new_pt = {0, parent_key, key};
|
||||||
|
ewv->cursor = ewv->mark = ewv->next_cursor = ewv->next_mark = new_pt;
|
||||||
}
|
}
|
||||||
RD_WatchViewPoint new_pt = {0, parent_key, key};
|
|
||||||
ewv->cursor = ewv->mark = ewv->next_cursor = ewv->next_mark = new_pt;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
|
|||||||
Reference in New Issue
Block a user