| 127 | } |
| 128 | |
| 129 | void FramelessPage::SystemMenuOpening(const IInspectable &, const IInspectable &) |
| 130 | { |
| 131 | if (m_NeedsSystemMenuRefresh) |
| 132 | { |
| 133 | const auto menuItems = SystemMenu().Items(); |
| 134 | |
| 135 | // remove everything but the Close menu item |
| 136 | const auto closeItem = CloseMenuItem(); |
| 137 | menuItems.Clear(); |
| 138 | menuItems.Append(closeItem); |
| 139 | |
| 140 | bool needsMergeStyle = false; |
| 141 | if (m_SystemMenuContent.Size() > 0) |
| 142 | { |
| 143 | menuItems.InsertAt(0, wuxc::MenuFlyoutSeparator()); |
| 144 | for (const auto newItem : m_SystemMenuContent | std::views::reverse) |
| 145 | { |
| 146 | if (newItem.try_as<wuxc::ToggleMenuFlyoutItem>()) |
| 147 | { |
| 148 | needsMergeStyle = true; |
| 149 | } |
| 150 | |
| 151 | menuItems.InsertAt(0, newItem); |
| 152 | } |
| 153 | } |
| 154 | |
| 155 | closeItem.Style(needsMergeStyle ? LookupStyle(winrt::box_value(L"MergeIconsMenuFlyoutItem")) : nullptr); |
| 156 | |
| 157 | m_NeedsSystemMenuRefresh = false; |
| 158 | } |
| 159 | } |
| 160 | |
| 161 | FramelessPage::~FramelessPage() |
| 162 | { |
nothing calls this directly
no outgoing calls
no test coverage detected