about summary refs log tree commit diff stats
path: root/source.lua
diff options
context:
space:
mode:
Diffstat (limited to 'source.lua')
-rw-r--r--source.lua63
1 files changed, 20 insertions, 43 deletions
diff --git a/source.lua b/source.lua
index b2d147d..2d48481 100644
--- a/source.lua
+++ b/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,24 +146,6 @@ 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.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)
   local os = love.system.getOS()
   if os == 'Linux' then
@@ -182,19 +167,16 @@ 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.resize(App.screen.width, App.screen.height, App.screen.flags)
   print('initializing source position')
@@ -378,20 +360,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