diff --git a/src/df/gfx/df_views.c b/src/df/gfx/df_views.c index 1785cc9c..ad3d54eb 100644 --- a/src/df/gfx/df_views.c +++ b/src/df/gfx/df_views.c @@ -5503,6 +5503,7 @@ DF_VIEW_UI_FUNCTION_DEF(Code) { if(text_info_is_ready && visible_line_num_range.max >= visible_line_num_range.min && ui_is_focus_active()) { + // TODO(rjf): @txt //snap[Axis2_X] = snap[Axis2_Y] = df_do_txti_controls(txti_handle, ClampBot(num_possible_visible_lines, 10) - 10, &tv->cursor, &tv->mark, &tv->preferred_column); } } @@ -5527,8 +5528,7 @@ DF_VIEW_UI_FUNCTION_DEF(Code) if(!ui_dragging(sig.base) && sig.mouse_expr_rng.min.line != 0 && sig.base.event_flags == 0) { TxtRng expr_rng = sig.mouse_expr_rng; - // TODO(rjf): @txt - String8 expr = {0};//txti_string_from_handle_txt_rng(scratch.arena, txti_handle, expr_rng); + String8 expr = txt_string_from_info_data_txt_rng(&text_info, data, expr_rng); if(expr.size != 0) { DF_Eval eval = df_eval_from_string(scratch.arena, dbgi_scope, &ctrl_ctx, &parse_ctx, &eval_string2expr_map_nil, expr); @@ -5558,8 +5558,7 @@ DF_VIEW_UI_FUNCTION_DEF(Code) ui_kill_action(); DF_CmdParams params = df_cmd_params_from_view(ws, panel, view); params.entity = df_handle_from_entity(entity); - // TODO(rjf): @txt - //params.string = txti_string_from_handle_txt_rng(scratch.arena, txti_handle, txti_expr_range_from_handle_pt(txti_handle, sig.mouse_pt)); + params.string = txt_string_from_info_data_txt_rng(&text_info, data, sig.mouse_expr_rng); df_cmd_params_mark_slot(¶ms, DF_CmdParamSlot_String); df_push_cmd__root(¶ms, df_cmd_spec_from_core_cmd_kind(DF_CoreCmdKind_GoToName)); } @@ -5631,8 +5630,7 @@ DF_VIEW_UI_FUNCTION_DEF(Code) df_entity_equip_color_rgba(flash_range, df_rgba_from_theme_color(DF_ThemeColor_Highlight0)); df_entity_equip_txt_pt(flash_range, sig.copy_range.min); df_entity_equip_txt_pt_alt(flash_range, sig.copy_range.max); - // TODO(rjf): @txt - String8 text = {0};//txti_string_from_handle_txt_rng(temp.arena, txti_handle, sig.copy_range); + String8 text = txt_string_from_info_data_txt_rng(&text_info, data, sig.copy_range); os_set_clipboard_text(text); temp_end(temp); } diff --git a/src/text_cache/text_cache.c b/src/text_cache/text_cache.c index 105d4877..5e24921a 100644 --- a/src/text_cache/text_cache.c +++ b/src/text_cache/text_cache.c @@ -1026,6 +1026,14 @@ txt_expr_off_range_from_info_data_pt(TXT_TextInfo *info, String8 data, TxtPt pt) return result; } +internal String8 +txt_string_from_info_data_txt_rng(TXT_TextInfo *info, String8 data, TxtRng rng) +{ + Rng1U64 rng_off = r1u64(txt_off_from_info_pt(info, rng.min), txt_off_from_info_pt(info, rng.max)); + String8 result = str8_substr(data, rng_off); + return result; +} + //////////////////////////////// //~ rjf: Transfer Threads diff --git a/src/text_cache/text_cache.h b/src/text_cache/text_cache.h index 47f8b868..e3c26127 100644 --- a/src/text_cache/text_cache.h +++ b/src/text_cache/text_cache.h @@ -270,6 +270,7 @@ internal TxtPt txt_pt_from_info_off__linear_scan(TXT_TextInfo *info, U64 off); internal TXT_TokenArray txt_token_array_from_info_line_num__linear_scan(TXT_TextInfo *info, S64 line_num); internal Rng1U64 txt_expr_off_range_from_line_off_range_string_tokens(U64 off, Rng1U64 line_range, String8 line_text, TXT_TokenArray *line_tokens); internal Rng1U64 txt_expr_off_range_from_info_data_pt(TXT_TextInfo *info, String8 data, TxtPt pt); +internal String8 txt_string_from_info_data_txt_rng(TXT_TextInfo *info, String8 data, TxtRng rng); //////////////////////////////// //~ rjf: Transfer Threads