RU4HIK436ZRQJEPZXFS4FQTYVRL7BK5NWKYFGHFHZQOEOBF7M5SQC 3XNFQDDNFGTN6ZFAB47AR6Q3663WLXDYC3K5TERYUWDM6U2FNOVAC EVMVBLXDZPG6ITFFKUMTEVYB6ZB6H3SEL3U5MEJMQ2G4OSYNDDUAC UZQ2LGHQ4SKSSPID5HSPHAO56XNMYZTDMSJLIPEA5ZQ7G7DBVMCQC W5WCQNMPEJVINPX3ELFMBYUEGNXSPMZIR5KRT2YUZZGSWISZ3R2QC G75ITNUVC3XW7CLMVWEBTWGOPP4MTSKDPJWJ3LKINVDMZD66GLUQC R5QXEHUIZLELJGGCZAE7ATNS3CLRJ7JFRENMGH4XXH24C5WABZDQC KKMFQDR43ZWVCDRHQLWWX3FCWCFA3ZSXYOBRJNPHUQZR2XPKWULAC A4BSGS2CX4JK7IELL655EC6HAY6ILCWTGIHWZXHRGQOKU3HSUPLAC ENENSZLKCCS7XILJUHIJUQPBOI6VK74YPHBFWPBXAHHHTHT2D3UQC ONHKBLLCD5NDO3HSSUMAMGJ7HDT53JYVV56DI42AEYI3W63GKACQC SBR7ARVH4KH4JXIKO23HYLAKGOM5TCSNTI3UDD3Z3WOCOALZDTJQC L2FWWEQLZPZLGTI34PWW2V6BU5PRDHFTZPTJJQYGG4R6WOFJ273QC 5RDWSYK2YESTIEDMGOD2T7E4KCOA6DOM35ECMZT2XZT57JSCRJEQC AYX33NBCPCBFWEZI5KZXHP3Y2Q62GYVT4WHYJUYRIPYV67KPSYZAC JOPVPUSAMMU6RFVDQR4NJC4GNNUFB7GPKVH7OS5FKCYS5QZ53VLQC VP5KC4XZBKD536KCBFO47UKH74RNONENDCFJAHUMVUTPVPGJWD4AC JKENJ2UGUCIHH27LSUZLVZIYOTUR3JDWUG453OFYTRL3V3IRQGTAC ATQO62TFDZ7J4RCOSB3K2QCCB5R6PNYQIIGNXTLZMEFG5UG5PUJQC DB7HJBHJ2ZB665YA4PDX5EXZKTUIYSXQ4CUMAK4HBCOT7G25EKXAC P3K7UH5C5FPVZOYEC46WTZAVWCC6BQBKEJ5MSIWMSIHGFJ6FTT7AC C3NYQP57XGSNOG2R6MT2OIJWHVFW53VUTHOW7RVYP66OEBE6GVBQC UI3IP45FD2XZ3HFSZSPH5HBD5DT6CHHUR77FTKIIN3M43OQ3Y6EQC D76MS2G2IKXVXUUULUF7X26L35RSPYBDYYYZZOSBC3DPLOGXZ4BAC QS3YLNKZT5MMZ6SKERXM3FAJMM6DD7AZGV6AV4DQYVAM32MQI27QC DCO5BQWVIAW3KDY3VUMKZPCPWAVZJSTZGNWU6CRY3I5FVLU76REQC function test_show_log_browser_side_splits_window_width()-- initialize screen dimensions and indicate that it is maximizedApp.screen.init{width=300, height=300}
-- 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)Editor_state.right = App.screen.width - Margin_rightEditor_state.width = Editor_state.right-Editor_state.leftText.redraw_all(Editor_state)endEditor_state.width = Editor_state.right-Editor_state.leftText.redraw_all(Editor_state)Log_browser_state.left = App.screen.width/2 + Margin_leftLog_browser_state.right = App.screen.width - Margin_right-- 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()Settings.source.x, Settings.source.y, Settings.source.displayindex = App.screen.position()File_navigation.cursors[Editor_state.filename] = {cursor1=Editor_state.cursor1, screen_top1=Editor_state.screen_top1}if Settings == nil then Settings = {} endif Settings.source == nil then Settings.source = {} endApp.screen.flags.resizable = truesource.set_window_position_from_settings(settings)Show_log_browser_side = settings.show_log_browser_sidelocal right = App.screen.width - Margin_rightif Show_log_browser_side thenright = App.screen.width/2 - Margin_rightendEditor_state = edit.initialize_state(Margin_top, Margin_left, right, settings.font_height, math.floor(settings.font_height*1.3))Editor_state.filename = settings.filenamelocal os = love.system.getOS()if os == 'Linux' then-- love.window.setPosition doesn't quite seem to do what is asked of it on Linux.App.screen.move(settings.x, settings.y-37, settings.displayindex)elseApp.screen.move(settings.x, settings.y, settings.displayindex)endendfunction source.initialize_default_settings()local font_height = 20love.graphics.setFont(love.graphics.newFont(font_height))
-- set up desired window dimensions and make window resizable_, _, App.screen.flags = App.screen.size()-- 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.if Settings == nil then Settings = {} endSettings.x, Settings.y, Settings.displayindex = App.screen.position()return {App.screen.width, App.screen.height, App.screen.flags = App.screen.size()App.screen.flags.resizable = trueendfunction run.set_window_position_from_settings(settings)local os = love.system.getOS()if os == 'Linux' then-- love.window.setPosition doesn't quite seem to do what is asked of it on Linux.App.screen.move(settings.x, settings.y-37, settings.displayindex)elseApp.screen.move(settings.x, settings.y, settings.displayindex)endendfunction run.initialize_default_settings()local font_height = 20love.graphics.setFont(love.graphics.newFont(font_height))run.set_window_position_from_settings(Settings)Editor_state = edit.initialize_state(Margin_top, Margin_left, App.screen.width-Margin_right, Settings.font_height, math.floor(Settings.font_height*1.3))Editor_state.filename = Settings.filenameEditor_state.screen_top1 = Settings.screen_topEditor_state.cursor1 = Settings.cursor
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)
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
if os == 'Linux' then-- love.window.setPosition doesn't quite seem to do what is asked of it on Linux.App.screen.move(settings.x, settings.y-37, settings.displayindex)elseApp.screen.move(settings.x, settings.y, settings.displayindex)
-- 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.flags.minwidth = math.min(Display_width, 200)App.screen.flags.minheight = math.min(Display_height, 200)App.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)
function source.set_window_position_from_settings(settings)-- love.window.setPosition doesn't quite seem to do what is asked of it on Linux.App.screen.move(settings.x, settings.y-37, settings.displayindex)end
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('initializing source position')if Settings == nil then Settings = {} endif Settings.source == nil then Settings.source = {} endSettings.source.x, Settings.source.y, Settings.source.displayindex = App.screen.position()
if Current_app == 'source' then--? print('reading source window position')Settings.source.x, Settings.source.y, Settings.source.displayindex = App.screen.position()end--? print('saving source settings', Settings.source.x, Settings.source.y, Settings.source.displayindex)
if Settings == nil then Settings = {} endif Settings.source == nil then Settings.source = {} endSettings.source.x, Settings.source.y, Settings.source.displayindex = App.screen.position()
App.screen.width = Editor_state.right + Margin_rightend--? 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)
Editor_state.right = App.screen.width - Margin_rightEditor_state.width = Editor_state.right-Editor_state.leftText.redraw_all(Editor_state)
-- 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()
function run.set_window_position_from_settings(settings)local os = love.system.getOS()if os == 'Linux' then-- love.window.setPosition doesn't quite seem to do what is asked of it on Linux.App.screen.move(settings.x, settings.y-37, settings.displayindex)elseApp.screen.move(settings.x, settings.y, settings.displayindex)endend
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.
if Settings == nil thenSettings = {}endif Current_app == 'run' thenSettings.x, Settings.y, Settings.displayindex = App.screen.position()end
if Settings == nil then Settings = {} endSettings.x, Settings.y, Settings.displayindex = App.screen.position()