diff --git a/src/markdown_table.py b/src/markdown_table.py index 96bf56a2..178d1911 100644 --- a/src/markdown_table.py +++ b/src/markdown_table.py @@ -12,6 +12,8 @@ def render_table(block: "TableBlock") -> None: if n_cols == 0: return flags = imgui.TableFlags_.borders | imgui.TableFlags_.row_bg | imgui.TableFlags_.resizable if not imgui.begin_table("md_table", n_cols, flags): return + for h in block.headers: + imgui.table_setup_column(h, imgui.TableColumnFlags_.width_stretch) imgui.table_headers_row() for h in block.headers: imgui.table_next_column() diff --git a/tests/test_markdown_table_columns.py b/tests/test_markdown_table_columns.py new file mode 100644 index 00000000..4b10e90b --- /dev/null +++ b/tests/test_markdown_table_columns.py @@ -0,0 +1,12 @@ +from unittest.mock import patch +from src.markdown_table import parse_tables, render_table, TableBlock + +def test_render_table_sets_up_columns_before_rows(): + block = TableBlock(headers=["A", "B", "C"], rows=[["1", "2", "3"], ["4", "5", "6"]], span=(0, 4)) + with patch("src.markdown_table.imgui") as mock_imgui: + mock_imgui.TableFlags_ = type("T", (), {"borders": 1, "row_bg": 2, "resizable": 4})() + mock_imgui.TableColumnFlags_ = type("C", (), {"width_stretch": 1, "width_fixed": 2})() + mock_imgui.begin_table.return_value = True + render_table(block) + assert mock_imgui.table_setup_column.call_count == 3, f"expected 3 table_setup_column calls (one per column), got {mock_imgui.table_setup_column.call_count}" + assert mock_imgui.table_next_column.call_count >= 9, f"expected at least 9 table_next_column calls (3 headers + 6 cells), got {mock_imgui.table_next_column.call_count}"