fix busted next/prev tab operations on panels with single tab

This commit is contained in:
Ryan Fleury
2024-10-01 10:02:37 -07:00
parent 04815b4265
commit ac5c65ebdd
2 changed files with 21 additions and 13 deletions
+20 -12
View File
@@ -12889,34 +12889,42 @@ rd_frame(void)
case RD_CmdKind_NextTab: case RD_CmdKind_NextTab:
{ {
RD_Panel *panel = rd_panel_from_handle(rd_regs()->panel); RD_Panel *panel = rd_panel_from_handle(rd_regs()->panel);
RD_View *view = rd_selected_tab_from_panel(panel); RD_View *start_view = rd_selected_tab_from_panel(panel);
RD_View *next_view = view; RD_View *next_view = start_view;
for(RD_View *v = view; !rd_view_is_nil(v); v = rd_view_is_nil(v->order_next) ? panel->first_tab_view : v->order_next) U64 idx = 0;
for(RD_View *v = start_view; !rd_view_is_nil(v); v = (rd_view_is_nil(v->order_next) ? panel->first_tab_view : v->order_next), idx += 1)
{ {
if(!rd_view_is_project_filtered(v) && v != view) if(v == start_view && idx != 0)
{
break;
}
if(!rd_view_is_project_filtered(v) && v != start_view)
{ {
next_view = v; next_view = v;
break; break;
} }
} }
view = next_view; panel->selected_tab_view = rd_handle_from_view(next_view);
panel->selected_tab_view = rd_handle_from_view(view);
}break; }break;
case RD_CmdKind_PrevTab: case RD_CmdKind_PrevTab:
{ {
RD_Panel *panel = rd_panel_from_handle(rd_regs()->panel); RD_Panel *panel = rd_panel_from_handle(rd_regs()->panel);
RD_View *view = rd_selected_tab_from_panel(panel); RD_View *start_view = rd_selected_tab_from_panel(panel);
RD_View *next_view = view; RD_View *next_view = start_view;
for(RD_View *v = view; !rd_view_is_nil(v); v = rd_view_is_nil(v->order_prev) ? panel->last_tab_view : v->order_prev) U64 idx = 0;
for(RD_View *v = start_view; !rd_view_is_nil(v); v = (rd_view_is_nil(v->order_prev) ? panel->last_tab_view : v->order_prev), idx += 1)
{ {
if(!rd_view_is_project_filtered(v) && v != view) if(v == start_view && idx != 0)
{
break;
}
if(!rd_view_is_project_filtered(v) && v != start_view)
{ {
next_view = v; next_view = v;
break; break;
} }
} }
view = next_view; panel->selected_tab_view = rd_handle_from_view(next_view);
panel->selected_tab_view = rd_handle_from_view(view);
}break; }break;
case RD_CmdKind_MoveTabRight: case RD_CmdKind_MoveTabRight:
case RD_CmdKind_MoveTabLeft: case RD_CmdKind_MoveTabLeft:
+1 -1
View File
@@ -5315,7 +5315,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(scheduler)
{ {
rd_watch_view_init(wv); rd_watch_view_init(wv);
rd_watch_view_column_alloc(wv, RD_WatchViewColumnKind_Expr, 0.25f); rd_watch_view_column_alloc(wv, RD_WatchViewColumnKind_Expr, 0.25f);
rd_watch_view_column_alloc(wv, RD_WatchViewColumnKind_Value, 0.75f); rd_watch_view_column_alloc(wv, RD_WatchViewColumnKind_Value, 0.75f, .dequote_string = 1);
} }
rd_watch_view_build(wv, RD_WatchViewFlag_NoHeader|RD_WatchViewFlag_PrettyNameMembers|RD_WatchViewFlag_PrettyEntityRows|RD_WatchViewFlag_DisableCacheLines, rd_watch_view_build(wv, RD_WatchViewFlag_NoHeader|RD_WatchViewFlag_PrettyNameMembers|RD_WatchViewFlag_PrettyEntityRows|RD_WatchViewFlag_DisableCacheLines,
str8_lit("threads"), str8_lit("only: label str id callstack v count vaddr inline_depth"), 0, 10, rect); str8_lit("threads"), str8_lit("only: label str id callstack v count vaddr inline_depth"), 0, 10, rect);