diff --git a/Userland/Libraries/LibGUI/UndoStack.cpp b/Userland/Libraries/LibGUI/UndoStack.cpp index 47e584bbb5..0a6fd094da 100644 --- a/Userland/Libraries/LibGUI/UndoStack.cpp +++ b/Userland/Libraries/LibGUI/UndoStack.cpp @@ -92,16 +92,12 @@ void UndoStack::finalize_current_combo() void UndoStack::set_current_unmodified() { - // Skip empty container - if (can_undo() && m_stack[m_stack_index].commands.is_empty()) - m_clean_index = m_stack_index + 1; - else - m_clean_index = m_stack_index; + m_clean_index = non_empty_stack_index(); } bool UndoStack::is_current_modified() const { - return !m_clean_index.has_value() || m_stack_index != m_clean_index.value(); + return !m_clean_index.has_value() || non_empty_stack_index() != m_clean_index.value(); } void UndoStack::clear() @@ -111,4 +107,12 @@ void UndoStack::clear() m_clean_index.clear(); } +size_t UndoStack::non_empty_stack_index() const +{ + if (can_undo() && m_stack[m_stack_index].commands.is_empty()) + return m_stack_index + 1; + else + return m_stack_index; +} + } diff --git a/Userland/Libraries/LibGUI/UndoStack.h b/Userland/Libraries/LibGUI/UndoStack.h index 51b5e00436..db3065f183 100644 --- a/Userland/Libraries/LibGUI/UndoStack.h +++ b/Userland/Libraries/LibGUI/UndoStack.h @@ -32,6 +32,8 @@ public: void clear(); private: + size_t non_empty_stack_index() const; + struct Combo { NonnullOwnPtrVector commands; };