fix(gui): Force newline in discussion entries to prevent squashed layout
- Insert imgui.new_line() before rendering discussion content. - Ensures the Markdown renderer inherits the full horizontal width of the panel. - Definitively fixes vertical squashing of tables and long text blocks.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import unittest
|
||||
from unittest.mock import MagicMock, patch
|
||||
import sys
|
||||
import os
|
||||
|
||||
# Ensure project root is in path
|
||||
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
|
||||
if project_root not in sys.path:
|
||||
sys.path.insert(0, project_root)
|
||||
|
||||
class TestMonolithicLayout(unittest.TestCase):
|
||||
def test_render_discussion_entry_full_width_logic(self):
|
||||
"""Verify that render_discussion_entry uses full width and a newline."""
|
||||
with patch('src.gui_2.imgui') as mock_imgui, \
|
||||
patch('src.gui_2.imscope') as mock_imscope, \
|
||||
patch('src.gui_2.theme') as mock_theme, \
|
||||
patch('src.gui_2.project_manager') as mock_pm, \
|
||||
patch('src.gui_2.render_thinking_trace') as mock_rtt, \
|
||||
patch('src.gui_2.render_discussion_entry_read_mode') as mock_rderm:
|
||||
|
||||
expected_width = 850.0
|
||||
mock_avail = MagicMock()
|
||||
mock_avail.x = expected_width
|
||||
mock_imgui.get_content_region_avail.return_value = mock_avail
|
||||
mock_imgui.ImVec2.side_effect = lambda x, y: (x, y)
|
||||
|
||||
mock_app = MagicMock()
|
||||
mock_app.disc_roles = ["User", "Assistant"]
|
||||
entry = {"role": "User", "content": "test", "collapsed": False, "read_mode": False}
|
||||
|
||||
mock_imgui.begin_combo.return_value = False
|
||||
mock_imgui.button.return_value = False
|
||||
mock_imgui.input_text_multiline.return_value = (False, "test")
|
||||
|
||||
from src.gui_2 import render_discussion_entry
|
||||
render_discussion_entry(mock_app, entry, 0)
|
||||
|
||||
# 1. Verify group expansion
|
||||
mock_imgui.dummy.assert_any_call((expected_width, 0.0))
|
||||
|
||||
# 2. Verify newline to prevent squashing
|
||||
assert mock_imgui.new_line.called, "imgui.new_line() was not called to prevent squashing"
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user