I'm learning the hard way that resizing the window is a big deal. Only do this when someone explicitly requests it, otherwise follow LÖVE's defaults.
Therefore we're also going to stop trying to be smart when showing the log browser. Leave window resizing to manual operations.
Now initialization looks a lot more similar for the run and source apps.
W5WCQNMPEJVINPX3ELFMBYUEGNXSPMZIR5KRT2YUZZGSWISZ3R2QC MLXDXFO6RUUBX5OJFZ2NGHEGXJPV74WNOOD4RV5ZXWIDH3UBQWXQC APX2PY6GAMJSUH7SFSMBFOQJBSAWLLOCKH4L4ZQP2VLHNEXJPREAC ORRSP7FVCHI2TF5GXBRGQYYJAA3JFYXZBM3T663BKSBV22FCZVCAC 5RDWSYK2YESTIEDMGOD2T7E4KCOA6DOM35ECMZT2XZT57JSCRJEQC 4J4TX7ISH3VIRSDYMGIJJ2WMTI2LPYJHFRWGGMXCEFTAYZOWXMAQC 4VQGE7RAC2B4NWCCKDCUZMMRDRMXLN6357YY4OPFIK6BZBGRWDHQC ENENSZLKCCS7XILJUHIJUQPBOI6VK74YPHBFWPBXAHHHTHT2D3UQC KKMFQDR43ZWVCDRHQLWWX3FCWCFA3ZSXYOBRJNPHUQZR2XPKWULAC UUTUPEOJQBLCXRTXHU6W2QNDH536RH5M3GO6GZGSDEH2GANCD2GQC JMUD7T3OJTEF5V73Y2B2GSVUBNBSJFRJPZNREBE5E4BV3IG6SJLQC S3PNFXTB4EF4PR4RMDK3YX5HTBJP2U6GRBX5UWAMUFBC5CRPOWZAC HCFDBUXHWT4IBY3QHR2LBN26L7LVCBZI6H353JE6W7QNLCEDCCCQC function test_show_log_browser_side_doubles_window_width_if_possible()-- initialize screen dimensions to half widthApp.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_leftEditor_state.right = App.screen.width - Margin_rightlocal old_editor_right = Editor_state.rightText.redraw_all(Editor_state)Log_browser_state = edit.initialize_test_state()-- log browser has some arbitrary marginsLog_browser_state.left = 200 + Margin_leftLog_browser_state.right = 400Text.redraw_all(Log_browser_state)log_browser.parse(Log_browser_state)-- display log browserCurrent_time = Current_time + 0.1App.run_after_keychord('C-l')-- window width is doubledcheck_eq(App.screen.width, 600, 'display:width')-- left side margins are unchangedcheck_eq(Editor_state.left, Margin_left, 'edit:left')check_eq(Editor_state.right, old_editor_right, 'edit:right')-- log browser margins are adjustedcheck_eq(Log_browser_state.left, App.screen.width/2 + Margin_left, 'log:left')check_eq(Log_browser_state.right, App.screen.width - Margin_right, 'log:right')endfunction test_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width()
function test_show_log_browser_side_splits_window_width()
source.resize_window_from_settings(settings)--? print('loading source position', settings.x, settings.y, settings.displayindex)
-- set up desired window dimensions and make window resizable_, _, App.screen.flags = App.screen.size()App.screen.flags.resizable = trueApp.screen.width, App.screen.height = settings.width, settings.heightApp.screen.resize(App.screen.width, App.screen.height, App.screen.flags)
endendfunction source.resize_window_from_settings(settings)local os = love.system.getOS()if os == 'Android' or os == 'iOS' then-- maximizing on iOS breaks text rendering: https://github.com/deltadaedalus/vudu/issues/7-- no point second-guessing window dimensions on mobileApp.screen.width, App.screen.height, App.screen.flags = App.screen.size()return
-- maximize window to determine maximum allowable dimensionsApp.screen.resize(0, 0) -- maximizeDisplay_width, Display_height, App.screen.flags = App.screen.size()-- set up desired window dimensionsApp.screen.flags.resizable = trueApp.screen.width, App.screen.height = settings.width, settings.height--? print('setting window from settings:', App.screen.width, App.screen.height)App.screen.resize(App.screen.width, App.screen.height, App.screen.flags)
local os = love.system.getOS()if os == 'Android' or os == 'iOS' then-- maximizing on iOS breaks text rendering: https://github.com/deltadaedalus/vudu/issues/7-- no point second-guessing window dimensions on mobileApp.screen.width, App.screen.height, App.screen.flags = App.screen.size()returnend-- maximize windowApp.screen.resize(0, 0) -- maximizeDisplay_width, Display_height, App.screen.flags = App.screen.size()-- shrink height slightly to account for window decorationApp.screen.height = Display_height-100App.screen.width = 40*em_width
-- Initialize window width/height and make window resizable.---- I get tempted to have opinions about window dimensions here, but they're-- non-portable:-- - maximizing doesn't work on mobile and messes things up-- - maximizing keeps the title bar on screen in Linux, but off screen on-- Windows. And there's no way to get the height of the title bar.-- It seems more robust to just follow LÖVE's default window size until-- someone overrides it.App.screen.width, App.screen.height, App.screen.flags = App.screen.size()
--? print('setting window:', App.screen.width, App.screen.height)App.screen.resize(App.screen.width, App.screen.height, App.screen.flags)--? print('done setting window')-- try to restore position if possible-- if the window gets wider the window manager may not respect thisif not App.run_tests thensource.set_window_position_from_settings(Settings.source)end
-- determine default dimensions and flagsApp.screen.width, App.screen.height, App.screen.flags = App.screen.size()-- set up desired window dimensions
-- set up desired window dimensions and make window resizable_, _, App.screen.flags = App.screen.size()
local os = love.system.getOS()if os == 'Android' or os == 'iOS' then-- maximizing on iOS breaks text rendering: https://github.com/deltadaedalus/vudu/issues/7-- no point second-guessing window dimensions on mobileApp.screen.width, App.screen.height, App.screen.flags = App.screen.size()returnend-- maximize windowApp.screen.resize(0, 0) -- maximize
-- Initialize window width/height and make window resizable.---- I get tempted to have opinions about window dimensions here, but they're-- non-portable:-- - maximizing doesn't work on mobile and messes things up-- - maximizing keeps the title bar on screen in Linux, but off screen on-- Windows. And there's no way to get the height of the title bar.-- It seems more robust to just follow LÖVE's default window size until-- someone overrides it.