From 877e0126c970728e9d0ee8ff4f8099e213743cbb Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Mon, 17 Feb 2025 16:24:17 -0800 Subject: [PATCH] file path drag/drops; a few fixes with tab drag/drop --- src/raddbg/raddbg_core.c | 19 +++++++++++++++++-- src/raddbg/raddbg_views.c | 7 ++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index 90dc8c67..74cfc9b1 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -4639,6 +4639,21 @@ rd_window_frame(void) { default:{}break; + //////////////////////// + //- rjf: file path tooltips + // + case RD_RegSlot_FilePath: + UI_Tooltip + { + FileProperties props = os_properties_from_file_path(regs->file_path); + ui_set_next_pref_width(ui_children_sum(1)); + UI_Row + { + RD_Font(RD_FontSlot_Icons) ui_label(rd_icon_kind_text_table[props.flags & FilePropertyFlag_IsFolder ? RD_IconKind_FolderClosedFilled : RD_IconKind_FileOutline]); + ui_label(regs->file_path); + } + }break; + //////////////////////// //- rjf: cfg tooltips // @@ -8051,7 +8066,7 @@ rd_window_frame(void) ////////////////////////// //- rjf: determine tab drop site // - B32 tab_drop_is_active = ui_key_match(ui_drop_hot_key(), catchall_drop_site_key); + B32 tab_drop_is_active = rd_drag_is_active() && ui_key_match(ui_drop_hot_key(), catchall_drop_site_key); RD_Cfg *tab_drop_prev = &rd_nil_cfg; { F32 best_prev_distance_px = 1000000.f; @@ -13142,7 +13157,7 @@ rd_frame(void) } } } - if(origin_panel->tabs.count == 0) + if(origin_panel->cfg != split_panel && origin_panel->tabs.count == 0) { rd_cmd(RD_CmdKind_ClosePanel); } diff --git a/src/raddbg/raddbg_views.c b/src/raddbg/raddbg_views.c index 8df9729e..7598f487 100644 --- a/src/raddbg/raddbg_views.c +++ b/src/raddbg/raddbg_views.c @@ -3064,7 +3064,12 @@ RD_VIEW_UI_FUNCTION_DEF(watch) // rjf: dragging -> drag/drop if(ui_dragging(sig) && !contains_2f32(sig.box->rect, ui_mouse())) { - if(cell_info.cfg != &rd_nil_cfg) + if(cell_info.eval.space.kind == E_SpaceKind_FileSystem) + { + String8 file_path = rd_file_path_from_eval(scratch.arena, cell_info.eval); + RD_RegsScope(.file_path = file_path) rd_drag_begin(RD_RegSlot_FilePath); + } + else if(cell_info.cfg != &rd_nil_cfg) { RD_RegsScope(.cfg = cell_info.cfg->id) rd_drag_begin(RD_RegSlot_Cfg); }