From 69f406202035a3e0b520639a5ca87cd7096c2f99 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sat, 17 Sep 2022 10:29:57 -0700 Subject: [PATCH] bugfix: source margins when toggling log browser Running the tests now uglily resizes the window for a second or two. --- source.lua | 5 +++- source_tests.lua | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/source.lua b/source.lua index a4289a0..ddb56d6 100644 --- a/source.lua +++ b/source.lua @@ -322,7 +322,10 @@ function source.keychord_pressed(chord, key) --? print('C-l') Show_log_browser_side = not Show_log_browser_side if Show_log_browser_side then - App.screen.width = Log_browser_state.right + Margin_right + App.screen.width = math.min(Display_width, App.screen.width*2) + Editor_state.right = App.screen.width/2 - Margin_right + Log_browser_state.left = App.screen.width/2 + Margin_left + Log_browser_state.right = App.screen.width - Margin_right else App.screen.width = Editor_state.right + Margin_right end diff --git a/source_tests.lua b/source_tests.lua index 044ff47..81bdb74 100644 --- a/source_tests.lua +++ b/source_tests.lua @@ -21,6 +21,7 @@ end function test_show_log_browser_side() io.write('\ntest_show_log_browser_side') App.screen.init{width=300, height=300} + Display_width = App.screen.width Current_app = 'source' Editor_state = edit.initialize_test_state() Editor_state.filename = 'foo' @@ -35,6 +36,66 @@ function test_show_log_browser_side() check(Show_log_browser_side, 'F - test_show_log_browser_side') end +function test_show_log_browser_side_doubles_window_width_if_possible() + io.write('\ntest_show_log_browser_side_doubles_window_width_if_possible') + -- initialize screen dimensions to half width + App.screen.init{width=300, height=300} + Display_width = App.screen.width*2 + -- initialize source app with left side occupying entire window (half the display) + Current_app = 'source' + Editor_state = edit.initialize_test_state() + Editor_state.filename = 'foo' + Editor_state.left = Margin_left + Editor_state.right = App.screen.width - Margin_right + local old_editor_right = Editor_state.right + Text.redraw_all(Editor_state) + Log_browser_state = edit.initialize_test_state() + -- log browser has some arbitrary margins + Log_browser_state.left = 200 + Margin_left + Log_browser_state.right = 400 + Text.redraw_all(Log_browser_state) + log_browser.parse(Log_browser_state) + -- display log browser + App.wait_fake_time(0.1) + App.run_after_keychord('C-l') + -- window width is doubled + check_eq(App.screen.width, 600, 'F - test_show_log_browser_side_doubles_window_width_if_possible/display:width') + -- left side margins are unchanged + check_eq(Editor_state.left, Margin_left, 'F - test_show_log_browser_side_doubles_window_width_if_possible/edit:left') + check_eq(Editor_state.right, old_editor_right, 'F - test_show_log_browser_side_doubles_window_width_if_possible/edit:right') + -- log browser margins are adjusted + check_eq(Log_browser_state.left, App.screen.width/2 + Margin_left, 'F - test_show_log_browser_side_doubles_window_width_if_possible/log:left') + check_eq(Log_browser_state.right, App.screen.width - Margin_right, 'F - test_show_log_browser_side_doubles_window_width_if_possible/log:right') +end + +function test_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width() + io.write('\ntest_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width') + -- initialize screen dimensions and indicate that it is maximized + App.screen.init{width=300, height=300} + Display_width = 300 + -- initialize source app with left side occupying more than half the display + Current_app = 'source' + Editor_state = edit.initialize_test_state() + Editor_state.filename = 'foo' + Editor_state.left = Margin_left + Editor_state.right = 200 + Text.redraw_all(Editor_state) + Log_browser_state = edit.initialize_test_state() + -- log browser has some arbitrary margins + Log_browser_state.left = 200 + Margin_left + Log_browser_state.right = 400 + Text.redraw_all(Log_browser_state) + log_browser.parse(Log_browser_state) + -- display log browser + App.wait_fake_time(0.1) + App.run_after_keychord('C-l') + -- margins are now adjusted + check_eq(Editor_state.left, Margin_left, 'F - test_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width/edit:left') + check_eq(Editor_state.right, App.screen.width/2 - Margin_right, 'F - test_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width/edit:right') + check_eq(Log_browser_state.left, App.screen.width/2 + Margin_left, 'F - test_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width/log:left') + check_eq(Log_browser_state.right, App.screen.width - Margin_right, 'F - test_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width/log:right') +end + function test_drop_file() io.write('\ntest_drop_file') App.screen.init{width=Editor_state.left+300, height=300}