From 435d3f89887c1c90b73f1b17c7beb21dc5511a42 Mon Sep 17 00:00:00 2001 From: loliri Date: Sun, 16 Aug 2026 16:08:05 +0800 Subject: [PATCH] Remove leading orphan separators from the context menu When modify rules move or hide system items, the separators that grouped them can be left orphaned at the very top of the menu. Trailing orphan separators are already cleaned up; this mirrors that cleanup for the leading ones and clears the Top flag of the first remaining item. --- src/dll/src/ContextMenu.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/dll/src/ContextMenu.cpp b/src/dll/src/ContextMenu.cpp index e7239da0..2d07bae0 100644 --- a/src/dll/src/ContextMenu.cpp +++ b/src/dll/src/ContextMenu.cpp @@ -1357,6 +1357,19 @@ namespace Nilesoft } } + // remove leading separators + { + size_t leading = 0; + while(leading < items.size() && items[leading]->is_separator()) + leading++; + if(leading > 0) + { + if(leading < items.size() && items[leading]->is_sep_before()) + items[leading]->separator &= ~(int)Separator::Top; + items.erase(items.begin(), items.begin() + leading); + } + } + _items.reserve(items.size()); _items_command.reserve(items.size()); _items_popup.reserve(items.size());