diff --git a/README.asciidoc b/README.asciidoc index d78b034a..2221f856 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -1303,6 +1303,7 @@ existing hooks are: * `WinClose`: A window was destroyed, the filtering text is the buffer name * `WinDisplay`: A window was bound a client, the filtering text is the buffer name + * `WinResize`: A window resized, the filtering text is '.' * `WinSetOption`: An option was set in a window context, the filtering text is '=' * `BufSetOption`: An option was set in a buffer context, the filtering text diff --git a/src/window.cc b/src/window.cc index ef4d3270..c80c1e61 100644 --- a/src/window.cc +++ b/src/window.cc @@ -111,7 +111,7 @@ const DisplayBuffer& Window::update_display_buffer(const Context& context) DisplayBuffer::LineList& lines = m_display_buffer.lines(); lines.clear(); - m_dimensions = context.client().dimensions(); + set_dimensions(context.client().dimensions()); if (m_dimensions == CharCoord{0,0}) return m_display_buffer; @@ -149,7 +149,12 @@ void Window::set_position(CharCoord position) void Window::set_dimensions(CharCoord dimensions) { - m_dimensions = dimensions; + if (m_dimensions != dimensions) + { + m_dimensions = dimensions; + run_hook_in_own_context("WinResize", format("{}.{}", dimensions.line, + dimensions.column)); + } } static LineCount adapt_view_pos(LineCount line, LineCount offset,