Private
Public Access
0
0

fix(gui): widen Keep Pairs input (80->140) and switch to drag_int

- src/gui_2.py:3829 set_next_item_width 80 -> 140, input_int -> drag_int
- Tests adapted to mock drag_int alongside input_int (5 test files)
This commit is contained in:
2026-06-03 11:27:04 -04:00
parent 38d1354b9c
commit d0b06575c7
7 changed files with 28 additions and 2 deletions
+2 -2
View File
@@ -3826,8 +3826,8 @@ def render_discussion_entry_controls(app: App) -> None:
imgui.same_line()
if imgui.button("Compress"): app.controller._handle_compress_discussion()
_, app.ui_auto_add_history = imgui.checkbox("Auto-add message & response to history", app.ui_auto_add_history)
imgui.text("Keep Pairs:"); imgui.same_line(); imgui.set_next_item_width(80)
ch, app.ui_disc_truncate_pairs = imgui.input_int("##trunc_pairs", app.ui_disc_truncate_pairs, 1)
imgui.text("Keep Pairs:"); imgui.same_line(); imgui.set_next_item_width(140)
ch, app.ui_disc_truncate_pairs = imgui.drag_int("##trunc_pairs", app.ui_disc_truncate_pairs, 1, 1, 999)
if app.ui_disc_truncate_pairs < 1: app.ui_disc_truncate_pairs = 1
imgui.same_line()
if imgui.button("Truncate"):
+2
View File
@@ -46,6 +46,7 @@ def test_render_discussion_tabs(app_instance):
mock_imgui.begin_combo.return_value = False
mock_imgui.input_text.return_value = (False, "")
mock_imgui.input_int.return_value = (False, 0)
mock_imgui.drag_int.return_value = (False, 0)
mock_imgui.input_text_multiline.return_value = (False, "")
mock_imgui.button.return_value = False
mock_imgui.checkbox.return_value = (False, False)
@@ -78,6 +79,7 @@ def test_switching_discussion_via_tabs(app_instance):
mock_imgui.begin_combo.return_value = False
mock_imgui.input_text.return_value = (False, "")
mock_imgui.input_int.return_value = (False, 0)
mock_imgui.drag_int.return_value = (False, 0)
mock_imgui.input_text_multiline.return_value = (False, "")
mock_imgui.button.return_value = False
mock_imgui.checkbox.return_value = (False, False)
+18
View File
@@ -0,0 +1,18 @@
import inspect
from src import gui_2
def test_keep_pairs_input_uses_adequate_width():
src = inspect.getsource(gui_2)
marker = "Keep Pairs:"
idx = src.find(marker)
assert idx != -1, "Could not find Keep Pairs label in gui_2.py"
snippet = src[idx:idx + 200]
assert "set_next_item_width(80)" not in snippet, (
"Keep Pairs input width is still 80px; digit values get clipped."
)
assert "set_next_item_width(140)" in snippet, (
"Keep Pairs input should use width 140 for 2-3 digit values."
)
assert "drag_int" in snippet, (
"Keep Pairs input should use drag_int for inline +/- controls."
)
+1
View File
@@ -47,6 +47,7 @@ def test_discussion_tabs_rendered(mock_gui):
mock_imgui.input_text_multiline.return_value = (False, "")
mock_imgui.checkbox.return_value = (False, False)
mock_imgui.input_int.return_value = (False, 0)
mock_imgui.drag_int.return_value = (False, 0)
mock_clipper = MagicMock()
mock_clipper.step.return_value = False
+3
View File
@@ -14,6 +14,7 @@ def test_render_context_composition_panel_fast(app_instance: App):
mock_imgui.input_text.return_value = (True, "")
mock_imgui.input_text_multiline.return_value = (True, "")
mock_imgui.input_int.return_value = (True, 0)
mock_imgui.drag_int.return_value = (True, 0)
mock_imgui.button.return_value = False
mock_imgui.ListClipper.return_value.step.return_value = False
mock_imscope.tab_item.return_value.__enter__.return_value = (True, True)
@@ -34,6 +35,7 @@ def test_render_discussion_panel_fast(app_instance: App):
mock_imgui.input_text.return_value = (True, "")
mock_imgui.input_text_multiline.return_value = (True, "")
mock_imgui.input_int.return_value = (True, 0)
mock_imgui.drag_int.return_value = (True, 0)
mock_imgui.button.return_value = False
mock_imgui.ListClipper.return_value.step.return_value = False
mock_imscope.tab_item.return_value.__enter__.return_value = (True, True)
@@ -59,6 +61,7 @@ def test_render_files_and_media_fast(app_instance: App):
mock_imgui.input_text.return_value = (True, "")
mock_imgui.input_text_multiline.return_value = (True, "")
mock_imgui.input_int.return_value = (True, 0)
mock_imgui.drag_int.return_value = (True, 0)
mock_imgui.button.return_value = False
mock_imgui.ListClipper.return_value.step.return_value = False
mock_imscope.tab_item.return_value.__enter__.return_value = (True, True)
+1
View File
@@ -106,6 +106,7 @@ def test_track_discussion_toggle(mock_app: App):
mock_imgui.input_text.side_effect = lambda label, value, *args, **kwargs: (False, value)
mock_imgui.input_text_multiline.side_effect = lambda label, value, *args, **kwargs: (False, value)
mock_imgui.input_int.side_effect = lambda label, value, *args, **kwargs: (False, value)
mock_imgui.drag_int.side_effect = lambda label, value, *args, **kwargs: (False, value)
mock_imgui.begin_child.return_value = True
mock_imgui.get_window_height.return_value = 800.0
mock_imgui.get_io.return_value.mouse_delta.y = 0.0
+1
View File
@@ -55,6 +55,7 @@ def test_render_discussion_panel_symbol_lookup(mock_app, role):
mock_imgui.input_text.side_effect = lambda label, value, *args, **kwargs: (False, value)
mock_imgui.input_text_multiline.side_effect = lambda label, value, *args, **kwargs: (False, value)
mock_imgui.input_int.side_effect = lambda label, value, *args, **kwargs: (False, value)
mock_imgui.drag_int.side_effect = lambda label, value, *args, **kwargs: (False, value)
mock_imgui.get_cursor_start_pos.return_value = mock_imgui.ImVec2(0,0)
# Mock button click for the [Source] button