From 0ef954ca2030ada323dacf35c41c2d17d3d9731e Mon Sep 17 00:00:00 2001 From: mitchell <70453897+orbitalquark@users.noreply.github.com> Date: Sun, 24 Jan 2021 10:56:02 -0500 Subject: Fixed bug restoring view state in an intermediate buffer after closing one. --- core/ui.lua | 1 + test/test.lua | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/core/ui.lua b/core/ui.lua index 73616719..7c493b15 100644 --- a/core/ui.lua +++ b/core/ui.lua @@ -444,6 +444,7 @@ events.connect( events.BUFFER_BEFORE_SWITCH, function() view._prev_buffer = buffer end) events.connect(events.BUFFER_DELETED, function() if _BUFFERS[view._prev_buffer] and buffer ~= view._prev_buffer then + restore_view_state() -- events.BUFFER_AFTER_SWITCH is not emitted in time view:goto_buffer(view._prev_buffer) end end) diff --git a/test/test.lua b/test/test.lua index e3fb296b..91365563 100644 --- a/test/test.lua +++ b/test/test.lua @@ -3670,6 +3670,24 @@ function test_ui_maximized() end expected_failure(test_ui_maximized) +function test_ui_restore_view_state() + buffer.new() -- 1 + view.view_ws = view.WS_VISIBLEALWAYS + buffer.new() -- 2 + assert(view.view_ws ~= view.WS_VISIBLEALWAYS, 'view whitespace settings not reset') + view:goto_buffer(-1) -- go back to 1 + assert_equal(view.view_ws, view.WS_VISIBLEALWAYS) + view.view_ws = view.WS_INVISIBLE -- reset + buffer.new() -- 3 + view.view_ws = view.WS_VISIBLEALWAYS + buffer:close() -- switches back to 1 (after briefly switching to 2) + assert_equal(view.view_ws, view.WS_INVISIBLE) + view:goto_buffer(1) -- go back to 2 + assert_equal(view.view_ws, view.WS_INVISIBLE) + buffer:close() + buffer:close() +end + function test_reset() local _persist _G.foo = 'bar' -- cgit v1.2.3