Merge lines.love
This commit is contained in:
commit
8482be9472
50
run.lua
50
run.lua
|
@ -55,21 +55,28 @@ end
|
|||
|
||||
function run.load_settings()
|
||||
love.graphics.setFont(love.graphics.newFont(Settings.font_height))
|
||||
-- determine default dimensions and flags
|
||||
App.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()
|
||||
App.screen.flags.resizable = true
|
||||
App.screen.flags.minwidth = math.min(App.screen.width, 200)
|
||||
App.screen.flags.minheight = math.min(App.screen.height, 200)
|
||||
App.screen.width, App.screen.height = Settings.width, Settings.height
|
||||
App.screen.resize(App.screen.width, App.screen.height, App.screen.flags)
|
||||
App.screen.move(Settings.x, Settings.y, Settings.displayindex)
|
||||
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.filename
|
||||
Editor_state.screen_top1 = Settings.screen_top
|
||||
Editor_state.cursor1 = Settings.cursor
|
||||
end
|
||||
|
||||
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)
|
||||
else
|
||||
App.screen.move(settings.x, settings.y, settings.displayindex)
|
||||
end
|
||||
end
|
||||
|
||||
function run.initialize_default_settings()
|
||||
local font_height = 20
|
||||
love.graphics.setFont(love.graphics.newFont(font_height))
|
||||
|
@ -81,22 +88,17 @@ function run.initialize_default_settings()
|
|||
end
|
||||
|
||||
function run.initialize_window_geometry(em_width)
|
||||
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 mobile
|
||||
App.screen.width, App.screen.height, App.screen.flags = App.screen.size()
|
||||
return
|
||||
end
|
||||
-- maximize window
|
||||
App.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.
|
||||
App.screen.width, App.screen.height, App.screen.flags = App.screen.size()
|
||||
-- shrink height slightly to account for window decoration
|
||||
App.screen.height = App.screen.height-100
|
||||
App.screen.width = 40*em_width
|
||||
App.screen.flags.resizable = true
|
||||
App.screen.flags.minwidth = math.min(App.screen.width, 200)
|
||||
App.screen.flags.minheight = math.min(App.screen.height, 200)
|
||||
App.screen.resize(App.screen.width, App.screen.height, App.screen.flags)
|
||||
end
|
||||
|
||||
|
@ -148,12 +150,8 @@ function run.quit()
|
|||
end
|
||||
|
||||
function run.settings()
|
||||
if Settings == nil then
|
||||
Settings = {}
|
||||
end
|
||||
if Current_app == 'run' then
|
||||
Settings.x, Settings.y, Settings.displayindex = App.screen.position()
|
||||
end
|
||||
if Settings == nil then Settings = {} end
|
||||
Settings.x, Settings.y, Settings.displayindex = App.screen.position()
|
||||
return {
|
||||
x=Settings.x, y=Settings.y, displayindex=Settings.displayindex,
|
||||
width=App.screen.width, height=App.screen.height,
|
||||
|
|
88
source.lua
88
source.lua
|
@ -121,8 +121,11 @@ end
|
|||
function source.load_settings()
|
||||
local settings = Settings.source
|
||||
love.graphics.setFont(love.graphics.newFont(settings.font_height))
|
||||
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 = true
|
||||
App.screen.width, App.screen.height = settings.width, settings.height
|
||||
App.screen.resize(App.screen.width, App.screen.height, App.screen.flags)
|
||||
source.set_window_position_from_settings(settings)
|
||||
Show_log_browser_side = settings.show_log_browser_side
|
||||
local right = App.screen.width - Margin_right
|
||||
|
@ -143,29 +146,14 @@ function source.load_settings()
|
|||
end
|
||||
end
|
||||
|
||||
function 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 mobile
|
||||
App.screen.width, App.screen.height, App.screen.flags = App.screen.size()
|
||||
return
|
||||
end
|
||||
-- maximize window to determine maximum allowable dimensions
|
||||
App.screen.resize(0, 0) -- maximize
|
||||
Display_width, Display_height, App.screen.flags = App.screen.size()
|
||||
-- set up desired window dimensions
|
||||
App.screen.flags.resizable = true
|
||||
App.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)
|
||||
end
|
||||
|
||||
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)
|
||||
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)
|
||||
else
|
||||
App.screen.move(settings.x, settings.y, settings.displayindex)
|
||||
end
|
||||
end
|
||||
|
||||
function source.initialize_default_settings()
|
||||
|
@ -179,27 +167,18 @@ function source.initialize_default_settings()
|
|||
end
|
||||
|
||||
function source.initialize_window_geometry(em_width)
|
||||
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 mobile
|
||||
App.screen.width, App.screen.height, App.screen.flags = App.screen.size()
|
||||
return
|
||||
end
|
||||
-- maximize window
|
||||
App.screen.resize(0, 0) -- maximize
|
||||
Display_width, Display_height, App.screen.flags = App.screen.size()
|
||||
-- shrink height slightly to account for window decoration
|
||||
App.screen.height = Display_height-100
|
||||
App.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()
|
||||
App.screen.flags.resizable = true
|
||||
App.screen.flags.minwidth = math.min(App.screen.width, 200)
|
||||
App.screen.flags.minheight = math.min(App.screen.height, 200)
|
||||
App.screen.resize(App.screen.width, App.screen.height, App.screen.flags)
|
||||
print('initializing source position')
|
||||
if Settings == nil then Settings = {} end
|
||||
if Settings.source == nil then Settings.source = {} end
|
||||
Settings.source.x, Settings.source.y, Settings.source.displayindex = App.screen.position()
|
||||
end
|
||||
|
||||
function source.resize(w, h)
|
||||
|
@ -290,11 +269,9 @@ function source.quit()
|
|||
end
|
||||
|
||||
function source.settings()
|
||||
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 = {} end
|
||||
if Settings.source == nil then Settings.source = {} end
|
||||
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}
|
||||
return {
|
||||
x=Settings.source.x, y=Settings.source.y, displayindex=Settings.source.displayindex,
|
||||
|
@ -377,20 +354,15 @@ function source.keychord_press(chord, key)
|
|||
--? print('C-l')
|
||||
Show_log_browser_side = not Show_log_browser_side
|
||||
if Show_log_browser_side then
|
||||
App.screen.width = math.min(Display_width, App.screen.width*2)
|
||||
Editor_state.right = App.screen.width/2 - Margin_right
|
||||
Editor_state.width = Editor_state.right-Editor_state.left
|
||||
Text.redraw_all(Editor_state)
|
||||
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
|
||||
--? 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 this
|
||||
if not App.run_tests then
|
||||
source.set_window_position_from_settings(Settings.source)
|
||||
Editor_state.right = App.screen.width - Margin_right
|
||||
Editor_state.width = Editor_state.right-Editor_state.left
|
||||
Text.redraw_all(Editor_state)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
|
|
@ -19,7 +19,6 @@ end
|
|||
|
||||
function test_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'
|
||||
|
@ -34,41 +33,9 @@ function test_show_log_browser_side()
|
|||
check(Show_log_browser_side, 'check')
|
||||
end
|
||||
|
||||
function test_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
|
||||
Current_time = Current_time + 0.1
|
||||
App.run_after_keychord('C-l')
|
||||
-- window width is doubled
|
||||
check_eq(App.screen.width, 600, 'display:width')
|
||||
-- left side margins are unchanged
|
||||
check_eq(Editor_state.left, Margin_left, 'edit:left')
|
||||
check_eq(Editor_state.right, old_editor_right, 'edit:right')
|
||||
-- log browser margins are adjusted
|
||||
check_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')
|
||||
end
|
||||
|
||||
function test_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width()
|
||||
function test_show_log_browser_side_splits_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()
|
||||
|
|
Loading…
Reference in New Issue