diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2022-06-07 21:51:48 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2022-06-07 21:55:48 -0700 |
commit | ac4879bb850e2ce3ed9830cc3ff4286f36c0bad4 (patch) | |
tree | 6ffa8f7e5a581fa16dc8ee651d0dcc1f41cffc41 | |
parent | 12f5fa9bed1675cf867d161958459c4d3c47942d (diff) | |
download | text.love-ac4879bb850e2ce3ed9830cc3ff4286f36c0bad4.tar.gz |
more defensive resize handling
Thanks John Blommers for the report!
-rw-r--r-- | main.lua | 25 | ||||
-rw-r--r-- | manual_tests | 4 |
2 files changed, 27 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 diff --git a/manual_tests b/manual_tests index 77d4b54..db2c579 100644 --- a/manual_tests +++ b/manual_tests @@ -35,3 +35,7 @@ scrolling: persistence: draw a line, circle, rectangle, square, polygon, quit, restart. All the shapes you drew should still be visible. select a point and name it, quit, restart. Name is still visible. + +resize: + create a file containing a long line of characters without spaces. try + resizing the window vertically and horizontally, as far as possible. |