mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 22:08:41 +00:00
begin sketching out stuff for stateful listers being collapsed with immediate-mode autocomplete lister
This commit is contained in:
@@ -229,7 +229,7 @@ Rng1U64 rd_reg_slot_range_table[34] =
|
|||||||
{OffsetOf(RD_Regs, os_event), OffsetOf(RD_Regs, os_event) + sizeof(OS_Event *)},
|
{OffsetOf(RD_Regs, os_event), OffsetOf(RD_Regs, os_event) + sizeof(OS_Event *)},
|
||||||
};
|
};
|
||||||
|
|
||||||
RD_CmdKindInfo rd_cmd_kind_info_table[214] =
|
RD_CmdKindInfo rd_cmd_kind_info_table[215] =
|
||||||
{
|
{
|
||||||
{0},
|
{0},
|
||||||
{ str8_lit_comp("launch_and_run"), str8_lit_comp("Starts debugging a new instance of a target, then runs."), str8_lit_comp("launch,start,run,target"), str8_lit_comp("Launch and Run"), RD_IconKind_Play, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*1), RD_RegSlot_Entity, str8_lit_comp(""), RD_EntityKind_Target, CTRL_EntityKind_Null}},
|
{ str8_lit_comp("launch_and_run"), str8_lit_comp("Starts debugging a new instance of a target, then runs."), str8_lit_comp("launch,start,run,target"), str8_lit_comp("Launch and Run"), RD_IconKind_Play, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*1), RD_RegSlot_Entity, str8_lit_comp(""), RD_EntityKind_Target, CTRL_EntityKind_Null}},
|
||||||
@@ -441,8 +441,9 @@ RD_CmdKindInfo rd_cmd_kind_info_table[214] =
|
|||||||
{ str8_lit_comp("pick_file"), str8_lit_comp("Opens the file browser to pick a file."), str8_lit_comp(""), str8_lit_comp("Pick File"), RD_IconKind_FileOutline, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*1)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*1), RD_RegSlot_FilePath, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
{ str8_lit_comp("pick_file"), str8_lit_comp("Opens the file browser to pick a file."), str8_lit_comp(""), str8_lit_comp("Pick File"), RD_IconKind_FileOutline, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*1)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*1), RD_RegSlot_FilePath, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
||||||
{ str8_lit_comp("pick_folder"), str8_lit_comp("Opens the file browser to pick a folder."), str8_lit_comp(""), str8_lit_comp("Pick Folder"), RD_IconKind_FolderOpenFilled, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*1)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*1), RD_RegSlot_FilePath, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
{ str8_lit_comp("pick_folder"), str8_lit_comp("Opens the file browser to pick a folder."), str8_lit_comp(""), str8_lit_comp("Pick Folder"), RD_IconKind_FolderOpenFilled, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*1)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*1), RD_RegSlot_FilePath, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
||||||
{ str8_lit_comp("pick_file_or_folder"), str8_lit_comp("Opens the file browser to pick a file or folder."), str8_lit_comp(""), str8_lit_comp("Pick File/Folder"), RD_IconKind_FileOutline, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*1)|(RD_QueryFlag_AllowFolders*1)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*1), RD_RegSlot_FilePath, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
{ str8_lit_comp("pick_file_or_folder"), str8_lit_comp("Opens the file browser to pick a file or folder."), str8_lit_comp(""), str8_lit_comp("Pick File/Folder"), RD_IconKind_FileOutline, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*1)|(RD_QueryFlag_AllowFolders*1)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*1), RD_RegSlot_FilePath, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
||||||
{ str8_lit_comp("complete_query"), str8_lit_comp("Completes a query."), str8_lit_comp(""), str8_lit_comp("Complete Query"), RD_IconKind_Null, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
{ str8_lit_comp("push_lister"), str8_lit_comp("Pushes a new lister onto the lister stack."), str8_lit_comp(""), str8_lit_comp("Push Lister"), RD_IconKind_Null, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
||||||
{ str8_lit_comp("cancel_query"), str8_lit_comp("Cancels a query."), str8_lit_comp(""), str8_lit_comp("Cancel Query"), RD_IconKind_Null, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
{ str8_lit_comp("complete_lister"), str8_lit_comp("Completes a lister, and pops it off the lister stack."), str8_lit_comp(""), str8_lit_comp("Complete Lister"), RD_IconKind_Null, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
||||||
|
{ str8_lit_comp("cancel_lister"), str8_lit_comp("Cancels a lister, and pops it off the lister stack."), str8_lit_comp(""), str8_lit_comp("Cancel Lister"), RD_IconKind_Null, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
||||||
{ str8_lit_comp("toggle_dev_menu"), str8_lit_comp("Opens and closes the developer menu."), str8_lit_comp(""), str8_lit_comp("Toggle Developer Menu"), RD_IconKind_Null, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
{ str8_lit_comp("toggle_dev_menu"), str8_lit_comp("Opens and closes the developer menu."), str8_lit_comp(""), str8_lit_comp("Toggle Developer Menu"), RD_IconKind_Null, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
||||||
{ str8_lit_comp("log_marker"), str8_lit_comp("Logs a marker in the application log, to denote specific points in time within the log."), str8_lit_comp(""), str8_lit_comp("Log Marker"), RD_IconKind_Null, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
{ str8_lit_comp("log_marker"), str8_lit_comp("Logs a marker in the application log, to denote specific points in time within the log."), str8_lit_comp(""), str8_lit_comp("Log Marker"), RD_IconKind_Null, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil, CTRL_EntityKind_Null}},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -298,8 +298,9 @@ RD_CmdKind_Settings,
|
|||||||
RD_CmdKind_PickFile,
|
RD_CmdKind_PickFile,
|
||||||
RD_CmdKind_PickFolder,
|
RD_CmdKind_PickFolder,
|
||||||
RD_CmdKind_PickFileOrFolder,
|
RD_CmdKind_PickFileOrFolder,
|
||||||
RD_CmdKind_CompleteQuery,
|
RD_CmdKind_PushLister,
|
||||||
RD_CmdKind_CancelQuery,
|
RD_CmdKind_CompleteLister,
|
||||||
|
RD_CmdKind_CancelLister,
|
||||||
RD_CmdKind_ToggleDevMenu,
|
RD_CmdKind_ToggleDevMenu,
|
||||||
RD_CmdKind_LogMarker,
|
RD_CmdKind_LogMarker,
|
||||||
RD_CmdKind_COUNT,
|
RD_CmdKind_COUNT,
|
||||||
|
|||||||
@@ -477,9 +477,10 @@ RD_CmdTable: // | | | |
|
|||||||
{PickFolder 0 0 FilePath null Nil Null 0 1 0 0 0 1 FolderOpenFilled "pick_folder" "Pick Folder" "Opens the file browser to pick a folder." "" }
|
{PickFolder 0 0 FilePath null Nil Null 0 1 0 0 0 1 FolderOpenFilled "pick_folder" "Pick Folder" "Opens the file browser to pick a folder." "" }
|
||||||
{PickFileOrFolder 0 0 FilePath null Nil Null 1 1 0 0 0 1 FileOutline "pick_file_or_folder" "Pick File/Folder" "Opens the file browser to pick a file or folder." "" }
|
{PickFileOrFolder 0 0 FilePath null Nil Null 1 1 0 0 0 1 FileOutline "pick_file_or_folder" "Pick File/Folder" "Opens the file browser to pick a file or folder." "" }
|
||||||
|
|
||||||
//- rjf: query completion
|
//- rjf: lister stack
|
||||||
{CompleteQuery 0 0 Null null Nil Null 0 0 0 0 0 0 Null "complete_query" "Complete Query" "Completes a query." "" }
|
{PushLister 0 0 Null null Nil Null 0 0 0 0 0 0 Null "push_lister" "Push Lister" "Pushes a new lister onto the lister stack." "" }
|
||||||
{CancelQuery 0 0 Null null Nil Null 0 0 0 0 0 0 Null "cancel_query" "Cancel Query" "Cancels a query." "" }
|
{CompleteLister 0 0 Null null Nil Null 0 0 0 0 0 0 Null "complete_lister" "Complete Lister" "Completes a lister, and pops it off the lister stack." "" }
|
||||||
|
{CancelLister 0 0 Null null Nil Null 0 0 0 0 0 0 Null "cancel_lister" "Cancel Lister" "Cancels a lister, and pops it off the lister stack." "" }
|
||||||
|
|
||||||
//- rjf: developer commands
|
//- rjf: developer commands
|
||||||
{ToggleDevMenu 1 1 Null null Nil Null 0 0 0 0 0 0 Null "toggle_dev_menu" "Toggle Developer Menu" "Opens and closes the developer menu." "" }
|
{ToggleDevMenu 1 1 Null null Nil Null 0 0 0 0 0 0 Null "toggle_dev_menu" "Toggle Developer Menu" "Opens and closes the developer menu." "" }
|
||||||
|
|||||||
@@ -3824,7 +3824,7 @@ rd_window_frame(void)
|
|||||||
{
|
{
|
||||||
if(ui_slot_press(UI_EventActionSlot_Cancel))
|
if(ui_slot_press(UI_EventActionSlot_Cancel))
|
||||||
{
|
{
|
||||||
rd_cmd(RD_CmdKind_CancelQuery);
|
rd_cmd(RD_CmdKind_CancelLister);
|
||||||
}
|
}
|
||||||
if(ui_slot_press(UI_EventActionSlot_Accept))
|
if(ui_slot_press(UI_EventActionSlot_Accept))
|
||||||
{
|
{
|
||||||
@@ -3832,11 +3832,11 @@ rd_window_frame(void)
|
|||||||
RD_RegsScope()
|
RD_RegsScope()
|
||||||
{
|
{
|
||||||
//rd_regs_fill_slot_from_string(query->slot, str8(ws->query_input_buffer, ws->query_input_string_size));
|
//rd_regs_fill_slot_from_string(query->slot, str8(ws->query_input_buffer, ws->query_input_string_size));
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery);
|
rd_cmd(RD_CmdKind_CompleteLister);
|
||||||
}
|
}
|
||||||
scratch_end(scratch);
|
scratch_end(scratch);
|
||||||
}
|
}
|
||||||
rd_set_lister_query(.flags = 0xffffffff);
|
rd_set_autocomp_lister_query(.flags = 0xffffffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
@@ -4701,7 +4701,7 @@ rd_window_frame(void)
|
|||||||
//- rjf: set up autocompletion lister info
|
//- rjf: set up autocompletion lister info
|
||||||
if(ui_is_focus_active())
|
if(ui_is_focus_active())
|
||||||
{
|
{
|
||||||
rd_set_lister_query(.anchor_key = query_container_box->key,
|
rd_set_autocomp_lister_query(.anchor_key = query_container_box->key,
|
||||||
.anchor_off = v2f32(0, dim_2f32(query_container_box->rect).y - dim_2f32(query_container_box->rect).y*(1-query_view_t)*0.25f - 2.f),
|
.anchor_off = v2f32(0, dim_2f32(query_container_box->rect).y - dim_2f32(query_container_box->rect).y*(1-query_view_t)*0.25f - 2.f),
|
||||||
.flags = 0xffffffff,
|
.flags = 0xffffffff,
|
||||||
.input = str8(ws->query_input_buffer, ws->query_input_string_size),
|
.input = str8(ws->query_input_buffer, ws->query_input_string_size),
|
||||||
@@ -4778,7 +4778,7 @@ rd_window_frame(void)
|
|||||||
RD_RegsScope()
|
RD_RegsScope()
|
||||||
{
|
{
|
||||||
rd_regs_fill_slot_from_string(query->slot, str8(ws->query_input_buffer, ws->query_input_string_size));
|
rd_regs_fill_slot_from_string(query->slot, str8(ws->query_input_buffer, ws->query_input_string_size));
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery);
|
rd_cmd(RD_CmdKind_CompleteLister);
|
||||||
}
|
}
|
||||||
scratch_end(scratch);
|
scratch_end(scratch);
|
||||||
}
|
}
|
||||||
@@ -10098,7 +10098,7 @@ rd_view_rule_lister_params_from_input_cursor(Arena *arena, String8 string, U64 c
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
rd_set_lister_query_(RD_ListerParams *params)
|
rd_set_autocomp_lister_query_(RD_ListerParams *params)
|
||||||
{
|
{
|
||||||
RD_Cfg *window_cfg = rd_cfg_from_handle(rd_regs()->window);
|
RD_Cfg *window_cfg = rd_cfg_from_handle(rd_regs()->window);
|
||||||
RD_WindowState *ws = rd_window_state_from_cfg(window_cfg);
|
RD_WindowState *ws = rd_window_state_from_cfg(window_cfg);
|
||||||
@@ -15589,8 +15589,21 @@ X(getting_started)
|
|||||||
#endif
|
#endif
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
//- rjf: query completion
|
//- rjf: lister stack
|
||||||
case RD_CmdKind_CompleteQuery:
|
case RD_CmdKind_PushLister:
|
||||||
|
{
|
||||||
|
RD_Cfg *wcfg = rd_cfg_from_handle(rd_regs()->window);
|
||||||
|
RD_WindowState *ws = rd_window_state_from_cfg(cfg);
|
||||||
|
if(ws != &rd_nil_window_state)
|
||||||
|
{
|
||||||
|
Arena *arena = arena_alloc();
|
||||||
|
RD_Lister *lister = push_array(arena, RD_Lister, 1);
|
||||||
|
SLLStackPush(ws->top_lister.next, lister);
|
||||||
|
lister->arena = arena;
|
||||||
|
lister->regs = rd_regs_copy(lister->arena, rd_regs());
|
||||||
|
}
|
||||||
|
}break;
|
||||||
|
case RD_CmdKind_CompleteLister:
|
||||||
{
|
{
|
||||||
#if 0 // TODO(rjf): @cfg
|
#if 0 // TODO(rjf): @cfg
|
||||||
RD_Window *ws = rd_window_from_handle(rd_regs()->window);
|
RD_Window *ws = rd_window_from_handle(rd_regs()->window);
|
||||||
@@ -15636,7 +15649,7 @@ X(getting_started)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}break;
|
}break;
|
||||||
case RD_CmdKind_CancelQuery:
|
case RD_CmdKind_CancelLister:
|
||||||
{
|
{
|
||||||
RD_Cfg *window = rd_cfg_from_handle(rd_regs()->window);
|
RD_Cfg *window = rd_cfg_from_handle(rd_regs()->window);
|
||||||
RD_WindowState *ws = rd_window_state_from_cfg(window);
|
RD_WindowState *ws = rd_window_state_from_cfg(window);
|
||||||
|
|||||||
+20
-12
@@ -560,6 +560,8 @@ enum
|
|||||||
RD_ListerFlag_Tex2DFormats = (1<<13),
|
RD_ListerFlag_Tex2DFormats = (1<<13),
|
||||||
RD_ListerFlag_Files = (1<<14),
|
RD_ListerFlag_Files = (1<<14),
|
||||||
RD_ListerFlag_Commands = (1<<15),
|
RD_ListerFlag_Commands = (1<<15),
|
||||||
|
RD_ListerFlag_Settings = (1<<16),
|
||||||
|
RD_ListerFlag_SystemProcesses= (1<<17),
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct RD_ListerItem RD_ListerItem;
|
typedef struct RD_ListerItem RD_ListerItem;
|
||||||
@@ -617,18 +619,23 @@ struct RD_ListerParams
|
|||||||
F32 transparency;
|
F32 transparency;
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////
|
typedef struct RD_Lister RD_Lister;
|
||||||
//~ rjf: Per-Window State
|
struct RD_Lister
|
||||||
|
|
||||||
typedef struct RD_QueryMenu RD_QueryMenu;
|
|
||||||
struct RD_QueryMenu
|
|
||||||
{
|
{
|
||||||
RD_QueryMenu *next;
|
RD_Lister *next;
|
||||||
Arena *arena;
|
Arena *arena;
|
||||||
RD_Regs *regs;
|
RD_Regs *regs;
|
||||||
RD_RegSlot slot;
|
RD_ListerParams params;
|
||||||
|
UI_ScrollPt scroll_pt;
|
||||||
|
U8 input_buffer[1024];
|
||||||
|
U64 input_string_size;
|
||||||
|
TxtPt input_cursor;
|
||||||
|
TxtPt input_mark;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Per-Window State
|
||||||
|
|
||||||
typedef struct RD_WindowState RD_WindowState;
|
typedef struct RD_WindowState RD_WindowState;
|
||||||
struct RD_WindowState
|
struct RD_WindowState
|
||||||
{
|
{
|
||||||
@@ -662,6 +669,10 @@ struct RD_WindowState
|
|||||||
B32 menu_bar_key_held;
|
B32 menu_bar_key_held;
|
||||||
B32 menu_bar_focus_press_started;
|
B32 menu_bar_focus_press_started;
|
||||||
|
|
||||||
|
// rjf: lister stack state
|
||||||
|
RD_Lister top_lister; // points to chain of stateful listers
|
||||||
|
U64 autocomp_lister_last_frame_idx;
|
||||||
|
|
||||||
// rjf: context menu state
|
// rjf: context menu state
|
||||||
Arena *ctx_menu_arena;
|
Arena *ctx_menu_arena;
|
||||||
RD_Regs *ctx_menu_regs;
|
RD_Regs *ctx_menu_regs;
|
||||||
@@ -687,9 +698,6 @@ struct RD_WindowState
|
|||||||
TxtPt lister_input_cursor;
|
TxtPt lister_input_cursor;
|
||||||
TxtPt lister_input_mark;
|
TxtPt lister_input_mark;
|
||||||
|
|
||||||
// rjf: query menu stack
|
|
||||||
RD_QueryMenu *top_query_menu;
|
|
||||||
|
|
||||||
// rjf: query view stack
|
// rjf: query view stack
|
||||||
Arena *query_cmd_arena;
|
Arena *query_cmd_arena;
|
||||||
String8 query_cmd_name;
|
String8 query_cmd_name;
|
||||||
@@ -1327,8 +1335,8 @@ internal void rd_lister_item_array_sort__in_place(RD_ListerItemArray *array);
|
|||||||
internal String8 rd_lister_query_word_from_input_string_off(String8 input, U64 cursor_off);
|
internal String8 rd_lister_query_word_from_input_string_off(String8 input, U64 cursor_off);
|
||||||
internal String8 rd_lister_query_path_from_input_string_off(String8 input, U64 cursor_off);
|
internal String8 rd_lister_query_path_from_input_string_off(String8 input, U64 cursor_off);
|
||||||
internal RD_ListerParams rd_view_rule_lister_params_from_input_cursor(Arena *arena, String8 string, U64 cursor_off);
|
internal RD_ListerParams rd_view_rule_lister_params_from_input_cursor(Arena *arena, String8 string, U64 cursor_off);
|
||||||
internal void rd_set_lister_query_(RD_ListerParams *params);
|
internal void rd_set_autocomp_lister_query_(RD_ListerParams *params);
|
||||||
#define rd_set_lister_query(...) rd_set_lister_query_(&(RD_ListerParams){.flags = 0, __VA_ARGS__})
|
#define rd_set_autocomp_lister_query(...) rd_set_autocomp_lister_query_(&(RD_ListerParams){.flags = 0, __VA_ARGS__})
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: Search Strings
|
//~ rjf: Search Strings
|
||||||
|
|||||||
+17
-17
@@ -3171,7 +3171,7 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
|||||||
params.anchor_off = v2f32(0, dim_2f32(sig.box->rect).y);
|
params.anchor_off = v2f32(0, dim_2f32(sig.box->rect).y);
|
||||||
params.input = input;
|
params.input = input;
|
||||||
params.cursor_off = cell_edit_state->cursor.column-1;
|
params.cursor_off = cell_edit_state->cursor.column-1;
|
||||||
rd_set_lister_query_(¶ms);
|
rd_set_autocomp_lister_query_(¶ms);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3762,7 +3762,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(commands)
|
|||||||
//- rjf: submit best match when hitting enter w/ no selection
|
//- rjf: submit best match when hitting enter w/ no selection
|
||||||
if(cv->selected_cmd_hash == 0 && ui_slot_press(UI_EventActionSlot_Accept))
|
if(cv->selected_cmd_hash == 0 && ui_slot_press(UI_EventActionSlot_Accept))
|
||||||
{
|
{
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .cmd_name = (cmd_array.count > 0 ? cmd_array.v[0].cmd_name : str8_zero()));
|
rd_cmd(RD_CmdKind_CompleteLister, .cmd_name = (cmd_array.count > 0 ? cmd_array.v[0].cmd_name : str8_zero()));
|
||||||
}
|
}
|
||||||
|
|
||||||
//- rjf: selected kind -> cursor
|
//- rjf: selected kind -> cursor
|
||||||
@@ -3875,7 +3875,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(commands)
|
|||||||
UI_Signal sig = ui_signal_from_box(box);
|
UI_Signal sig = ui_signal_from_box(box);
|
||||||
if(ui_clicked(sig))
|
if(ui_clicked(sig))
|
||||||
{
|
{
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .cmd_name = item->cmd_name);
|
rd_cmd(RD_CmdKind_CompleteLister, .cmd_name = item->cmd_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4227,7 +4227,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(file_system)
|
|||||||
// rjf: command search part is empty, but directory matches some file:
|
// rjf: command search part is empty, but directory matches some file:
|
||||||
if(path_query_path_props.created != 0 && path_query.search.size == 0)
|
if(path_query_path_props.created != 0 && path_query.search.size == 0)
|
||||||
{
|
{
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .file_path = query_normalized_with_opt_slash);
|
rd_cmd(RD_CmdKind_CompleteLister, .file_path = query_normalized_with_opt_slash);
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: command argument exactly matches some file:
|
// rjf: command argument exactly matches some file:
|
||||||
@@ -4243,14 +4243,14 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(file_system)
|
|||||||
// rjf: is a file -> complete view
|
// rjf: is a file -> complete view
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .file_path = query_normalized_with_opt_slash);
|
rd_cmd(RD_CmdKind_CompleteLister, .file_path = query_normalized_with_opt_slash);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: command argument is empty, picking folders -> use current folder
|
// rjf: command argument is empty, picking folders -> use current folder
|
||||||
else if(path_query.search.size == 0 && dir_selection)
|
else if(path_query.search.size == 0 && dir_selection)
|
||||||
{
|
{
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .file_path = path_query.path);
|
rd_cmd(RD_CmdKind_CompleteLister, .file_path = path_query.path);
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: command argument does not exactly match any file, but lister results are in:
|
// rjf: command argument does not exactly match any file, but lister results are in:
|
||||||
@@ -4266,14 +4266,14 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(file_system)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
String8 file_path = push_str8f(scratch.arena, "%S%S", path_query.path, filename);
|
String8 file_path = push_str8f(scratch.arena, "%S%S", path_query.path, filename);
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .file_path = file_path);
|
rd_cmd(RD_CmdKind_CompleteLister, .file_path = file_path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: command argument does not match any file, and lister is empty (new file)
|
// rjf: command argument does not match any file, and lister is empty (new file)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .file_path = query);
|
rd_cmd(RD_CmdKind_CompleteLister, .file_path = query);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4472,7 +4472,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(file_system)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .file_path = new_path);
|
rd_cmd(RD_CmdKind_CompleteLister, .file_path = new_path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4693,7 +4693,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(system_processes)
|
|||||||
if(sp->selected_pid == 0 && process_info_array.count > 0 && ui_slot_press(UI_EventActionSlot_Accept))
|
if(sp->selected_pid == 0 && process_info_array.count > 0 && ui_slot_press(UI_EventActionSlot_Accept))
|
||||||
{
|
{
|
||||||
RD_ProcessInfo *info = &process_info_array.v[0];
|
RD_ProcessInfo *info = &process_info_array.v[0];
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .pid = info->info.pid);
|
rd_cmd(RD_CmdKind_CompleteLister, .pid = info->info.pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
//- rjf: selected PID -> cursor
|
//- rjf: selected PID -> cursor
|
||||||
@@ -4781,7 +4781,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(system_processes)
|
|||||||
// rjf: click => activate this specific process
|
// rjf: click => activate this specific process
|
||||||
if(ui_clicked(sig))
|
if(ui_clicked(sig))
|
||||||
{
|
{
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .pid = info->info.pid);
|
rd_cmd(RD_CmdKind_CompleteLister, .pid = info->info.pid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4932,7 +4932,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(entity_lister)
|
|||||||
if(rd_entity_is_nil(rd_entity_from_handle(fev->selected_entity_handle)) && ent_arr.count != 0 && ui_slot_press(UI_EventActionSlot_Accept))
|
if(rd_entity_is_nil(rd_entity_from_handle(fev->selected_entity_handle)) && ent_arr.count != 0 && ui_slot_press(UI_EventActionSlot_Accept))
|
||||||
{
|
{
|
||||||
RD_Entity *ent = ent_arr.v[0].entity;
|
RD_Entity *ent = ent_arr.v[0].entity;
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .entity = rd_handle_from_entity(ent));
|
rd_cmd(RD_CmdKind_CompleteLister, .entity = rd_handle_from_entity(ent));
|
||||||
}
|
}
|
||||||
|
|
||||||
//- rjf: selected entity -> cursor
|
//- rjf: selected entity -> cursor
|
||||||
@@ -4997,7 +4997,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(entity_lister)
|
|||||||
}
|
}
|
||||||
if(ui_clicked(ui_signal_from_box(box)))
|
if(ui_clicked(ui_signal_from_box(box)))
|
||||||
{
|
{
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .entity = rd_handle_from_entity(ent));
|
rd_cmd(RD_CmdKind_CompleteLister, .entity = rd_handle_from_entity(ent));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5148,7 +5148,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(ctrl_entity_lister)
|
|||||||
case CTRL_EntityKind_Thread: {rd_regs()->thread = ent->handle;}break;
|
case CTRL_EntityKind_Thread: {rd_regs()->thread = ent->handle;}break;
|
||||||
case CTRL_EntityKind_Module: {rd_regs()->module = ent->handle;}break;
|
case CTRL_EntityKind_Module: {rd_regs()->module = ent->handle;}break;
|
||||||
}
|
}
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .ctrl_entity = ent->handle);
|
rd_cmd(RD_CmdKind_CompleteLister, .ctrl_entity = ent->handle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5224,7 +5224,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(ctrl_entity_lister)
|
|||||||
case CTRL_EntityKind_Thread: {rd_regs()->thread = ent->handle;}break;
|
case CTRL_EntityKind_Thread: {rd_regs()->thread = ent->handle;}break;
|
||||||
case CTRL_EntityKind_Module: {rd_regs()->module = ent->handle;}break;
|
case CTRL_EntityKind_Module: {rd_regs()->module = ent->handle;}break;
|
||||||
}
|
}
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .ctrl_entity = ent->handle);
|
rd_cmd(RD_CmdKind_CompleteLister, .ctrl_entity = ent->handle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5301,7 +5301,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(symbol_lister)
|
|||||||
String8 name = str8(name_base, name_size);
|
String8 name = str8(name_base, name_size);
|
||||||
if(name.size != 0)
|
if(name.size != 0)
|
||||||
{
|
{
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .string = name);
|
rd_cmd(RD_CmdKind_CompleteLister, .string = name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5373,7 +5373,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(symbol_lister)
|
|||||||
UI_Signal sig = ui_signal_from_box(box);
|
UI_Signal sig = ui_signal_from_box(box);
|
||||||
if(ui_clicked(sig))
|
if(ui_clicked(sig))
|
||||||
{
|
{
|
||||||
rd_cmd(RD_CmdKind_CompleteQuery, .string = name);
|
rd_cmd(RD_CmdKind_CompleteLister, .string = name);
|
||||||
}
|
}
|
||||||
if(ui_hovering(sig)) UI_Tooltip
|
if(ui_hovering(sig)) UI_Tooltip
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user