feat(0036c): doble click en Group abre NodeGroups; cleanup Table panel

Cambia el dispatch del doble click sobre nodos del viewport: si el tipo
es Group o Table, ahora abre/enfoca la NodeGroups window correspondiente
via views_node_groups_open(...). El branch de Group ya no carga el
panel Table generico con un filtro group_id (logica heredada de 0035d
que provocaba el bug de "tabla vacia").

Limpieza correlativa en views_table:
  - Eliminado el breadcrumb "Group: <name> (N)" + boton Clear filter.
  - Eliminado el filtro r.group_id != table_filter_group_id en
    build_visible y la restriccion de types_present.
  - Eliminado el reset on-close de los campos de filtro.

Eliminados los campos AppState::table_filter_group_id y
table_filter_group_name (audit: git grep table_filter_group_id devuelve
vacio fuera de issues/).

Render de NodeGroups ahora consume focus_request: llama
SetNextWindowFocus() antes de Begin y SetWindowFocus() dentro, asi la
window queda al frente tanto al crearse como al re-enfocarse.

El right-click "Open NodeGroups" del context menu sigue intacto
(want_toggle_nodegroups + node_groups_set_expanded). El doble click es
flujo paralelo nuevo.

Refs: issues/0036c-double-click-group-opens-nodegroups.md
This commit is contained in:
2026-05-04 00:56:44 +02:00
parent 7277f63985
commit 8f91b4ed23
3 changed files with 27 additions and 62 deletions
-6
View File
@@ -239,12 +239,6 @@ struct AppState {
std::unordered_map<int, std::string> table_col_filters;
char table_filter_input[96] = {}; // buffer del popup activo
int table_filter_pending_col = -1; // col_user_id en edicion
// Drill-in por grupo (issue 0035d): cuando esta seteado, la tabla solo
// muestra filas cuyo `group_id` coincida. Header muestra "Group: <name>
// (N)" + boton "Clear group filter". RAM-only — al cerrar el panel se
// limpia.
std::string table_filter_group_id; // "" = sin filtro
std::string table_filter_group_name; // label legible
// ---- Type Editor (issue 0007) ------------------------------------------
// Draft del editor de tipos. Se inicializa con una copia de parsed_types