mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-05 13:28:40 +00:00
fix some escape-to-cancel & context menu behavior; notes
This commit is contained in:
+11
-46
@@ -10343,15 +10343,8 @@ df_entity_desc_button(DF_Window *ws, DF_Entity *entity, FuzzyMatchRangeList *nam
|
|||||||
else if(ui_right_clicked(sig))
|
else if(ui_right_clicked(sig))
|
||||||
{
|
{
|
||||||
DF_Handle handle = df_handle_from_entity(entity);
|
DF_Handle handle = df_handle_from_entity(entity);
|
||||||
if(ui_ctx_menu_is_open(ws->entity_ctx_menu_key) && df_handle_match(ws->entity_ctx_menu_entity, handle))
|
ui_ctx_menu_open(ws->entity_ctx_menu_key, sig.box->key, v2f32(0, sig.box->rect.y1 - sig.box->rect.y0));
|
||||||
{
|
ws->entity_ctx_menu_entity = handle;
|
||||||
ui_ctx_menu_close();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ui_ctx_menu_open(ws->entity_ctx_menu_key, sig.box->key, v2f32(0, sig.box->rect.y1 - sig.box->rect.y0));
|
|
||||||
ws->entity_ctx_menu_entity = handle;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: drag+drop
|
// rjf: drag+drop
|
||||||
@@ -10837,15 +10830,8 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_
|
|||||||
if(ui_right_clicked(thread_sig))
|
if(ui_right_clicked(thread_sig))
|
||||||
{
|
{
|
||||||
DF_Handle handle = df_handle_from_entity(thread);
|
DF_Handle handle = df_handle_from_entity(thread);
|
||||||
if(ui_ctx_menu_is_open(ws->entity_ctx_menu_key) && df_handle_match(ws->entity_ctx_menu_entity, handle))
|
ui_ctx_menu_open(ws->entity_ctx_menu_key, thread_box->key, v2f32(0, thread_box->rect.y1-thread_box->rect.y0));
|
||||||
{
|
ws->entity_ctx_menu_entity = handle;
|
||||||
ui_ctx_menu_close();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ui_ctx_menu_open(ws->entity_ctx_menu_key, thread_box->key, v2f32(0, thread_box->rect.y1-thread_box->rect.y0));
|
|
||||||
ws->entity_ctx_menu_entity = handle;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: drag start
|
// rjf: drag start
|
||||||
@@ -11001,15 +10987,8 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_
|
|||||||
if(ui_right_clicked(thread_sig))
|
if(ui_right_clicked(thread_sig))
|
||||||
{
|
{
|
||||||
DF_Handle handle = df_handle_from_entity(thread);
|
DF_Handle handle = df_handle_from_entity(thread);
|
||||||
if(ui_ctx_menu_is_open(ws->entity_ctx_menu_key) && df_handle_match(ws->entity_ctx_menu_entity, handle))
|
ui_ctx_menu_open(ws->entity_ctx_menu_key, thread_box->key, v2f32(0, thread_box->rect.y1-thread_box->rect.y0));
|
||||||
{
|
ws->entity_ctx_menu_entity = handle;
|
||||||
ui_ctx_menu_close();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ui_ctx_menu_open(ws->entity_ctx_menu_key, thread_box->key, v2f32(0, thread_box->rect.y1-thread_box->rect.y0));
|
|
||||||
ws->entity_ctx_menu_entity = handle;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: double click => select
|
// rjf: double click => select
|
||||||
@@ -11109,15 +11088,8 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_
|
|||||||
if(ui_right_clicked(bp_sig))
|
if(ui_right_clicked(bp_sig))
|
||||||
{
|
{
|
||||||
DF_Handle handle = df_handle_from_entity(bp);
|
DF_Handle handle = df_handle_from_entity(bp);
|
||||||
if(ui_ctx_menu_is_open(ws->entity_ctx_menu_key) && df_handle_match(ws->entity_ctx_menu_entity, handle))
|
ui_ctx_menu_open(ws->entity_ctx_menu_key, bp_box->key, v2f32(0, bp_box->rect.y1-bp_box->rect.y0));
|
||||||
{
|
ws->entity_ctx_menu_entity = handle;
|
||||||
ui_ctx_menu_close();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ui_ctx_menu_open(ws->entity_ctx_menu_key, bp_box->key, v2f32(0, bp_box->rect.y1-bp_box->rect.y0));
|
|
||||||
ws->entity_ctx_menu_entity = handle;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -11176,15 +11148,8 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_
|
|||||||
if(ui_right_clicked(pin_sig))
|
if(ui_right_clicked(pin_sig))
|
||||||
{
|
{
|
||||||
DF_Handle handle = df_handle_from_entity(pin);
|
DF_Handle handle = df_handle_from_entity(pin);
|
||||||
if(ui_ctx_menu_is_open(ws->entity_ctx_menu_key) && df_handle_match(ws->entity_ctx_menu_entity, handle))
|
ui_ctx_menu_open(ws->entity_ctx_menu_key, pin_box->key, v2f32(0, pin_box->rect.y1-pin_box->rect.y0));
|
||||||
{
|
ws->entity_ctx_menu_entity = handle;
|
||||||
ui_ctx_menu_close();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ui_ctx_menu_open(ws->entity_ctx_menu_key, pin_box->key, v2f32(0, pin_box->rect.y1-pin_box->rect.y0));
|
|
||||||
ws->entity_ctx_menu_entity = handle;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11417,7 +11382,7 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_
|
|||||||
payload.entity = df_handle_from_entity(pin);
|
payload.entity = df_handle_from_entity(pin);
|
||||||
df_drag_begin(&payload);
|
df_drag_begin(&payload);
|
||||||
}
|
}
|
||||||
if(ui_clicked(sig) || ui_right_clicked(sig))
|
if(ui_right_clicked(sig))
|
||||||
{
|
{
|
||||||
ui_ctx_menu_open(ws->entity_ctx_menu_key, sig.box->key, v2f32(0, sig.box->rect.y1-sig.box->rect.y0));
|
ui_ctx_menu_open(ws->entity_ctx_menu_key, sig.box->key, v2f32(0, sig.box->rect.y1-sig.box->rect.y0));
|
||||||
ws->entity_ctx_menu_entity = df_handle_from_entity(pin);
|
ws->entity_ctx_menu_entity = df_handle_from_entity(pin);
|
||||||
|
|||||||
+15
-16
@@ -125,12 +125,6 @@
|
|||||||
// [ ] It'd be nice to have a "goto byte" option for source views, for jumping
|
// [ ] It'd be nice to have a "goto byte" option for source views, for jumping
|
||||||
// to error messages that are byte-based instead of line-based.
|
// to error messages that are byte-based instead of line-based.
|
||||||
//
|
//
|
||||||
// [ ] I found the "context menu" convention to be confusing. For example, if
|
|
||||||
// I left-click on a tab, it selects the tab. If I right-click on a tab,
|
|
||||||
// it opens the context menu. However, if I left-click on a module, it
|
|
||||||
// opens the context window. It seems like maybe menus should be right,
|
|
||||||
// and left should do the default action, more consistently?
|
|
||||||
//
|
|
||||||
// [ ] It wasn't clear to me how you save a user or project file. I can see
|
// [ ] It wasn't clear to me how you save a user or project file. I can see
|
||||||
// how to load them, but not how you save them. Obviously I can just copy
|
// how to load them, but not how you save them. Obviously I can just copy
|
||||||
// the files myself in the shell, but it seemed weird that there was no
|
// the files myself in the shell, but it seemed weird that there was no
|
||||||
@@ -169,16 +163,6 @@
|
|||||||
// that is "page up" / "page down", but here it is "smooth scroll upward"
|
// that is "page up" / "page down", but here it is "smooth scroll upward"
|
||||||
// / "smooth scroll downward" for some reason?
|
// / "smooth scroll downward" for some reason?
|
||||||
//
|
//
|
||||||
// [ ] Hitting ESC during a color picker drag should abort the color picking
|
|
||||||
// and revert to the previous color. Currently, it just accepts the last
|
|
||||||
// drag result as the new color.
|
|
||||||
//
|
|
||||||
// [ ] It was not clear to me why a small "tab picker" appeared when I got to
|
|
||||||
// a certain number of tabs. It seemed to appear even if the tabs were
|
|
||||||
// quite large, and there was no need to a drop-down menu to pick them. It
|
|
||||||
// feels like either it should always be there, or it should only show up
|
|
||||||
// if at least one tab gets small enough to have its name cut off?
|
|
||||||
//
|
|
||||||
// [ ] can it ignore stepping into _RTC_CheckStackVars generated functions?
|
// [ ] can it ignore stepping into _RTC_CheckStackVars generated functions?
|
||||||
// [ ] mouse back button should make view to go back after I double clicked
|
// [ ] mouse back button should make view to go back after I double clicked
|
||||||
// on function to open it
|
// on function to open it
|
||||||
@@ -392,6 +376,21 @@
|
|||||||
// [x] Many of the UI elements, like the menus, would like better if they had
|
// [x] Many of the UI elements, like the menus, would like better if they had
|
||||||
// a little bit of margin. Having the text right next to the edges, and
|
// a little bit of margin. Having the text right next to the edges, and
|
||||||
// with no line spacing, makes it harder to read things quickly.
|
// with no line spacing, makes it harder to read things quickly.
|
||||||
|
// [x] colors: memory view
|
||||||
|
// [x] Hitting ESC during a color picker drag should abort the color picking
|
||||||
|
// and revert to the previous color. Currently, it just accepts the last
|
||||||
|
// drag result as the new color.
|
||||||
|
// [x] It was not clear to me why a small "tab picker" appeared when I got to
|
||||||
|
// a certain number of tabs. It seemed to appear even if the tabs were
|
||||||
|
// quite large, and there was no need to a drop-down menu to pick them. It
|
||||||
|
// feels like either it should always be there, or it should only show up
|
||||||
|
// if at least one tab gets small enough to have its name cut off?
|
||||||
|
// [x] I found the "context menu" convention to be confusing. For example, if
|
||||||
|
// I left-click on a tab, it selects the tab. If I right-click on a tab,
|
||||||
|
// it opens the context menu. However, if I left-click on a module, it
|
||||||
|
// opens the context window. It seems like maybe menus should be right,
|
||||||
|
// and left should do the default action, more consistently?
|
||||||
|
//
|
||||||
|
|
||||||
#ifndef RADDBG_H
|
#ifndef RADDBG_H
|
||||||
#define RADDBG_H
|
#define RADDBG_H
|
||||||
|
|||||||
@@ -614,6 +614,18 @@ ui_sat_val_picker(F32 hue, F32 *out_sat, F32 *out_val, String8 string)
|
|||||||
*out_sat = Clamp(0, *out_sat, 1);
|
*out_sat = Clamp(0, *out_sat, 1);
|
||||||
*out_val = Clamp(0, *out_val, 1);
|
*out_val = Clamp(0, *out_val, 1);
|
||||||
ui_do_color_tooltip_hsv(v3f32(hue, *out_sat, *out_val));
|
ui_do_color_tooltip_hsv(v3f32(hue, *out_sat, *out_val));
|
||||||
|
if(ui_pressed(sig))
|
||||||
|
{
|
||||||
|
Vec2F32 data = v2f32(*out_sat, *out_val);
|
||||||
|
ui_store_drag_struct(&data);
|
||||||
|
}
|
||||||
|
if(ui_slot_press(UI_EventActionSlot_Cancel))
|
||||||
|
{
|
||||||
|
Vec2F32 data = *ui_get_drag_struct(Vec2F32);
|
||||||
|
*out_sat = data.x;
|
||||||
|
*out_val = data.y;
|
||||||
|
ui_kill_action();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: fill draw data
|
// rjf: fill draw data
|
||||||
@@ -709,6 +721,15 @@ ui_hue_picker(F32 *out_hue, F32 sat, F32 val, String8 string)
|
|||||||
*out_hue = (ui_mouse().y - box->rect.y0) / dim.y;
|
*out_hue = (ui_mouse().y - box->rect.y0) / dim.y;
|
||||||
*out_hue = Clamp(0, *out_hue, 1);
|
*out_hue = Clamp(0, *out_hue, 1);
|
||||||
ui_do_color_tooltip_hsv(v3f32(*out_hue, sat, val));
|
ui_do_color_tooltip_hsv(v3f32(*out_hue, sat, val));
|
||||||
|
if(ui_pressed(sig))
|
||||||
|
{
|
||||||
|
ui_store_drag_struct(out_hue);
|
||||||
|
}
|
||||||
|
if(ui_slot_press(UI_EventActionSlot_Cancel))
|
||||||
|
{
|
||||||
|
*out_hue = *ui_get_drag_struct(F32);
|
||||||
|
ui_kill_action();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: fill draw data
|
// rjf: fill draw data
|
||||||
@@ -787,6 +808,15 @@ ui_alpha_picker(F32 *out_alpha, String8 string)
|
|||||||
F32 drag_pct = (ui_mouse().y - box->rect.y0) / dim.y;
|
F32 drag_pct = (ui_mouse().y - box->rect.y0) / dim.y;
|
||||||
drag_pct = Clamp(0, drag_pct, 1);
|
drag_pct = Clamp(0, drag_pct, 1);
|
||||||
*out_alpha = 1-drag_pct;
|
*out_alpha = 1-drag_pct;
|
||||||
|
if(ui_pressed(sig))
|
||||||
|
{
|
||||||
|
ui_store_drag_struct(out_alpha);
|
||||||
|
}
|
||||||
|
if(ui_slot_press(UI_EventActionSlot_Cancel))
|
||||||
|
{
|
||||||
|
*out_alpha = *ui_get_drag_struct(F32);
|
||||||
|
ui_kill_action();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: fill draw data
|
// rjf: fill draw data
|
||||||
|
|||||||
Reference in New Issue
Block a user