about summary refs log tree commit diff stats
path: root/main.lua
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-06-07 21:51:48 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-06-07 21:55:48 -0700
commitac4879bb850e2ce3ed9830cc3ff4286f36c0bad4 (patch)
tree6ffa8f7e5a581fa16dc8ee651d0dcc1f41cffc41 /main.lua
parent12f5fa9bed1675cf867d161958459c4d3c47942d (diff)
downloadtext.love-ac4879bb850e2ce3ed9830cc3ff4286f36c0bad4.tar.gz
more defensive resize handling
Thanks John Blommers for the report!
Diffstat (limited to 'main.lua')
-rw-r--r--main.lua25
1 files changed, 23 insertions, 2 deletions
diff --git a/main.lua b/main.lua
index 13d4efe..3220b51 100644
--- a/main.lua
+++ b/main.lua
@@ -79,6 +79,9 @@ Search_term = nil
 Search_text = nil
 Search_backup = nil  -- stuff to restore when cancelling search
 
+-- resize
+Last_resize_time = nil
+
 end  -- App.initialize_globals
 
 function App.initialize(arg)
@@ -148,8 +151,8 @@ function love.resize(w, h)
 --?   print(("Window resized to width: %d and height: %d."):format(w, h))
   App.screen.width, App.screen.height = w, h
   Line_width = math.min(40*App.width(Em), App.screen.width-50)
-  -- Should I Text.redraw_all() here to reset text fragments? It doesn't seem
-  -- to be needed, based on repeatedly resizing the window up and down.
+  Text.redraw_all()
+  Last_resize_time = love.timer.getTime()
 end
 
 function initialize_font_settings(font_height)
@@ -183,6 +186,16 @@ function App.draw()
   love.graphics.setColor(1, 1, 1)
   love.graphics.rectangle('fill', 0, 0, App.screen.width-1, App.screen.height-1)
   love.graphics.setColor(0, 0, 0)
+
+  -- some hysteresis while resizing
+  if Last_resize_time then
+    if love.timer.getTime() - Last_resize_time < 0.1 then
+      return
+    else
+      Last_resize_time = nil
+    end
+  end
+
   assert(Text.le1(Screen_top1, Cursor1))
   local y = Margin_top
 --?   print('== draw')
@@ -231,6 +244,14 @@ function App.draw()
 end
 
 function App.update(dt)
+  -- some hysteresis while resizing
+  if Last_resize_time then
+    if love.timer.getTime() - Last_resize_time < 0.1 then
+      return
+    else
+      Last_resize_time = nil
+    end
+  end
   Drawing.update(dt)
 end