summaryrefslogtreecommitdiff
path: root/src/window.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2019-12-16 14:07:22 +1100
committerMaxime Coste <mawww@kakoune.org>2019-12-16 14:07:22 +1100
commitefabe281732fa4a2cb83ab2adf65c840c251101f (patch)
tree6d79605a7a14db665fe3f2747ebf1df2f73844ee /src/window.cc
parentf8ab9e07804d243b09610b4e8bf7e1edbc5c52c3 (diff)
Fix WinResize hook getting triggered during urgent event processing
WinResize hooks could be triggered during shell evaluation, leading to any state potentially getting mutated after a shell evaluation call.
Diffstat (limited to 'src/window.cc')
-rw-r--r--src/window.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/window.cc b/src/window.cc
index cbc4deab..8acc7a03 100644
--- a/src/window.cc
+++ b/src/window.cc
@@ -193,8 +193,17 @@ void Window::set_dimensions(DisplayCoord dimensions)
if (m_dimensions != dimensions)
{
m_dimensions = dimensions;
- run_hook_in_own_context(Hook::WinResize, format("{}.{}", dimensions.line,
- dimensions.column));
+ m_resize_hook_pending = true;
+ }
+}
+
+void Window::run_resize_hook_ifn()
+{
+ if (m_resize_hook_pending)
+ {
+ m_resize_hook_pending = false;
+ run_hook_in_own_context(Hook::WinResize,
+ format("{}.{}", m_dimensions.line, m_dimensions.column));
}
}