fix: promote button funciona + placement direccional mas cercano
Dos bugs reportados tras 0036d/0037:
1. Promote button en NodeGroups window kind=Group no respondia al
click. Causa: el Selectable con SpanAllColumns + AllowDoubleClick
se tragaba el click destinado al SmallButton(TI_ARROW_UP) sobre
la misma fila. ImGui tiene un flag dedicado para esto:
AllowOverlap. Anyadido al Selectable y los botones recuperan los
clicks. Mismo fix beneficia al kind=Table porque los botones
"promote" y "expand" de DuckDB rows estaban en la misma situacion
silenciosa.
2. Placement direccional de 0037 enviaba hijos hasta r=400 cuando
habia colisiones, "muy lejos" segun el usuario. Ajustes:
- Anillos mas cercanos: {60,90,120,150,180,210,240} en vez de
{80,140,200,280,400}. Maximo 240px del source.
- Mas anillos disponibles (7 vs 5) — fan-out gradual sin saltar
bruscamente de 80 a 140.
- Espaciado entre hermanos en arco usa cluster_min_dist=35 en
vez de min_dist=60. Permite mas hijos por anillo dentro del
arco de 45 grados (cap @ r=240 = 5 vs 3 antes).
- Para 10-15 hijos tipicos los inner rings cubren todo dentro
de 200px del source.
Build limpio. Tests WSL 102 / Windows 91 + 11 skipped.
Bonus: borrado /home/lucas/fn_registry/cpp/registry.db (vacio, 0
bytes, creado por algun binario con flag O_CREAT) — violacion de
db_locations.md (registry.db solo en raiz del repo). Era el motivo
de un test flaky de python_runtime_resolver.
This commit is contained in:
@@ -2084,8 +2084,12 @@ void views_node_groups_window(AppState& app) {
|
||||
|
||||
// Selectable spanning para que el doble-click y el right-click
|
||||
// funcionen sobre toda la fila, no solo el texto.
|
||||
// AllowOverlap obligatorio para que botones colocados despues
|
||||
// (Promote en kind=Group, ver issue 0036d) reciban sus clicks
|
||||
// en lugar de que el Selectable se los trague.
|
||||
ImGuiSelectableFlags sf = ImGuiSelectableFlags_SpanAllColumns
|
||||
| ImGuiSelectableFlags_AllowDoubleClick;
|
||||
| ImGuiSelectableFlags_AllowDoubleClick
|
||||
| ImGuiSelectableFlags_AllowOverlap;
|
||||
ImGui::Selectable(row.id.c_str(), false, sf);
|
||||
|
||||
if (is_group) {
|
||||
|
||||
Reference in New Issue
Block a user