chore: auto-commit (286 archivos)
- .claude/agents/fn-orquestador/SKILL.md - .claude/commands/fn_claude.md - .claude/rules/INDEX.md - .claude/rules/cpp_apps.md - .claude/rules/ids_naming.md - CHANGELOG.md - apps/dag_engine/README.md - apps/dag_engine/api.go - apps/dag_engine/dags_migrated/example.yaml - apps/dag_engine/dags_migrated/example_lineage_tracking.yaml - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -212,8 +212,9 @@ static void draw_cell_custom(const ColumnSpec& spec, const char* value,
|
||||
col.w);
|
||||
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, hover_col);
|
||||
ImGui::PushStyleColor(ImGuiCol_HeaderActive, hover_col);
|
||||
ImGui::Selectable(label, false,
|
||||
ImGuiSelectableFlags_SpanAllColumns);
|
||||
// Issue 0081-O.7: removed SpanAllColumns — badge hover must not
|
||||
// illuminate the entire row, only the badge cell.
|
||||
ImGui::Selectable(label, false);
|
||||
ImGui::PopStyleColor(3);
|
||||
} else {
|
||||
ImGui::TextUnformatted(label);
|
||||
@@ -3087,6 +3088,11 @@ void render(const char* id,
|
||||
ImGuiTableFlags flags =
|
||||
ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg |
|
||||
ImGuiTableFlags_Resizable | ImGuiTableFlags_ScrollY;
|
||||
// Issue 0081-O.7/9: disable ALL Selectable bg painting. Hover + selection
|
||||
// are painted via TableSetBgColor(CellBg, ...) below, edge-to-edge.
|
||||
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(0, 0, 0, 0));
|
||||
ImGui::PushStyleColor(ImGuiCol_HeaderActive, ImVec4(0, 0, 0, 0));
|
||||
ImGui::PushStyleColor(ImGuiCol_Header, ImVec4(0, 0, 0, 0));
|
||||
if (ImGui::BeginTable(id, visible_cols, flags, ImVec2(0, 0))) {
|
||||
|
||||
for (int dc = 0; dc < (int)st.col_order.size(); ++dc) {
|
||||
@@ -3203,6 +3209,14 @@ void render(const char* id,
|
||||
if (c < 0 || c >= eff_cols) continue;
|
||||
if (!st.col_visible[c]) continue;
|
||||
ImGui::TableSetColumnIndex(draw_idx++);
|
||||
// Issue 0081-O.7: capture cell rect before rendering for
|
||||
// per-cell hover overlay (manual hit-test avoids relying on
|
||||
// GetItemRect of the last sub-item inside draw_cell_custom).
|
||||
ImVec2 cell_min = ImGui::GetCursorScreenPos();
|
||||
float cell_w = ImGui::GetContentRegionAvail().x;
|
||||
float cell_h = ImGui::GetTextLineHeight();
|
||||
ImVec2 cell_max(cell_min.x + cell_w, cell_min.y + cell_h);
|
||||
|
||||
int src = src_for_eff[c];
|
||||
std::string eval_buf;
|
||||
const char* cell;
|
||||
@@ -3251,8 +3265,15 @@ void render(const char* id,
|
||||
}
|
||||
}
|
||||
if (!custom_rendered) {
|
||||
// Issue 0081-O.8: disable Selectable's own bg paint so
|
||||
// it doesn't double-up with the manual cell overlay below.
|
||||
// Pass explicit size so empty cells still have a hit area
|
||||
// (otherwise drag-select skips empty cells).
|
||||
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(0, 0, 0, 0));
|
||||
ImGui::Selectable(cell ? cell : "", in_sel,
|
||||
ImGuiSelectableFlags_AllowDoubleClick);
|
||||
ImGuiSelectableFlags_AllowDoubleClick,
|
||||
ImVec2(0, ImGui::GetTextLineHeight()));
|
||||
ImGui::PopStyleColor();
|
||||
// Tooltip for Text cells (Phase 2).
|
||||
if (cell_cs && cell_cs->tooltip_on_hover &&
|
||||
ImGui::IsItemHovered()) {
|
||||
@@ -3263,6 +3284,27 @@ void render(const char* id,
|
||||
}
|
||||
}
|
||||
}
|
||||
// Issue 0081-O.7/9/10: per-cell bg via TableSetBgColor.
|
||||
// Edge-to-edge (full cell incl. CellPadding). Selection (in_sel)
|
||||
// overrides hover. Both colors uniform — no Selectable padding.
|
||||
{
|
||||
ImVec2 mp = ImGui::GetMousePos();
|
||||
ImVec2 pad = ImGui::GetStyle().CellPadding;
|
||||
bool is_hovered =
|
||||
mp.x >= cell_min.x - pad.x && mp.x < cell_min.x + cell_w + pad.x &&
|
||||
mp.y >= cell_min.y - pad.y && mp.y < cell_min.y + cell_h + pad.y &&
|
||||
ImGui::IsWindowHovered(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem);
|
||||
if (in_sel) {
|
||||
// Selected (drag-range): blue, slightly stronger when hovered.
|
||||
ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg,
|
||||
is_hovered
|
||||
? IM_COL32(102, 140, 217, 80)
|
||||
: IM_COL32(102, 140, 217, 60));
|
||||
} else if (is_hovered) {
|
||||
ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg,
|
||||
IM_COL32(255, 255, 255, 22));
|
||||
}
|
||||
}
|
||||
// AllowWhenBlockedByActiveItem: durante drag,
|
||||
// otras celdas tambien reciben hover -> sel se
|
||||
// pinta mientras arrastras.
|
||||
@@ -3318,6 +3360,7 @@ void render(const char* id,
|
||||
}
|
||||
ImGui::EndTable();
|
||||
}
|
||||
ImGui::PopStyleColor(3); // HeaderHovered/HeaderActive/Header (issue 0081-O.7)
|
||||
|
||||
// Ctrl+C -> TSV.
|
||||
if (U.sel_active && ImGui::GetIO().KeyCtrl &&
|
||||
@@ -3747,6 +3790,10 @@ void render(const char* id,
|
||||
ImGuiTableFlags flags =
|
||||
ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg |
|
||||
ImGuiTableFlags_Resizable | ImGuiTableFlags_ScrollY;
|
||||
// Issue 0081-O.7: tone down row hover (default 0.31 alpha was too bright).
|
||||
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(1.0f, 1.0f, 1.0f, 0.05f));
|
||||
ImGui::PushStyleColor(ImGuiCol_HeaderActive, ImVec4(1.0f, 1.0f, 1.0f, 0.08f));
|
||||
ImGui::PushStyleColor(ImGuiCol_Header, ImVec4(0.40f, 0.55f, 0.85f, 0.20f));
|
||||
if (cur_cols_n > 0 && ImGui::BeginTable(id, cur_cols_n, flags, ImVec2(0, 0))) {
|
||||
for (int c = 0; c < cur_cols_n; ++c) {
|
||||
ImGui::TableSetupColumn(cur_headers[c].c_str(),
|
||||
@@ -3839,7 +3886,13 @@ void render(const char* id,
|
||||
}
|
||||
}
|
||||
if (!custom_rendered) {
|
||||
ImGui::Selectable(cell ? cell : "");
|
||||
// Issue 0081-O.8: disable Selectable's bg paint to avoid
|
||||
// double hover with the manual cell overlay; explicit size
|
||||
// ensures empty cells have a hit area.
|
||||
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(0, 0, 0, 0));
|
||||
ImGui::Selectable(cell ? cell : "", false, 0,
|
||||
ImVec2(0, ImGui::GetTextLineHeight()));
|
||||
ImGui::PopStyleColor();
|
||||
// Tooltip for Text cells (Phase 2).
|
||||
if (cell_cs2 && cell_cs2->tooltip_on_hover &&
|
||||
ImGui::IsItemHovered()) {
|
||||
@@ -3893,6 +3946,7 @@ void render(const char* id,
|
||||
}
|
||||
ImGui::EndTable();
|
||||
}
|
||||
ImGui::PopStyleColor(3); // HeaderHovered/HeaderActive/Header (issue 0081-O.7)
|
||||
}
|
||||
stage_n_table_end:;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user