Современный диалог свойств Проводника
Современный диалог свойств Проводника
Microsoft наконец приступила к замене диалога свойств Проводника, которому уже несколько десятилетий, современной версией в рамках модернизации Windows 11. К счастью, новый диалог построен на нативном WinUI, и никаких следов оболочки на WebView2 не наблюдается.

Сейчас диалог свойств встроен в Win32 comctl32.dll (библиотека Common Controls), впервые появившуюся в Windows 95. Конечно, за прошедшие годы он стал выглядеть лучше, но лежащий в основе код не менялся.

Microsoft ранее подтвердила замену всех унаследованных диалогов на современные, включая оставшиеся с Windows 8 и даже эпохи Windows 95. Когда начнётся крупное обновление дизайна Windows, было неясно, но теперь в предварительных сборках появляются первые признаки.

Вкладка "Свойства" в тёмном режиме в Windows 11
Вкладка "Свойства" в тёмном режиме в Windows 11

Наблюдатель за Microsoft PhantomOfEarth обнаружил в предварительных сборках новый диалог свойств, который, в отличие от существующей реализации, поддерживает тёмный режим. Более того, он явно построен на WinUI 3, а не на Win32-листе свойств. Microsoft не смешивает две платформы: редакция может подтвердить, что диалог полностью выполнен на WinUI 3.

Вкладка свойств Проводника в тёмном режиме
Вкладка свойств Проводника в тёмном режиме

Например, если присмотреться, вкладка “Общие” использует заголовок в стиле Pivot и поддерживает индикатор акцента, что свойственно только WinUI 3. В Win32 такого нет: там диалог свойств задействует SysTabControl32 из comctl32. Кнопка “Восстановить” тоже использует стиль AccentButtonStyle.

Наконец, появились новые флажки, соответствующие рекомендациям WinUI 3.

Microsoft полностью отказалась от классического диалога свойств, и это примечательно, ведь он был частью Windows почти три десятилетия. Существующий диалог построен на API листов свойств времён Windows 95 (PROPSHEETPAGE, SHOpenPropSheet из shell32) и не имел поддержки тёмного режима.

Почему Microsoft не может просто взять и осовременить компоненты Windows 11

Windows накопила большой багаж унаследованного кода, поэтому компания ранее пыталась создавать версии вроде Windows 10X. Модернизировать систему, не нарушая обратной совместимости, сложно. Microsoft не может просто применить современный дизайн к Win32-диалогу свойств, не опасаясь поломок в сторонних программах.

Современный диалог свойств Проводника
Современный диалог свойств Проводника

Для справки: Windows обязана поддерживать программы десятилетней давности, включая сторонние страницы листов свойств. Сейчас такие приложения часто добавляют вкладки в диалог свойств через расширение IShellPropSheetExt. Речь идёт об антивирусах, 7-Zip, Dropbox, наборах кодеков и подобных решениях. Все они отдают страницу на основе HWND.

“В Win32 объект окна идентифицируется значением, называемым дескриптором окна. Тип дескриптора окна: HWND (хотя в C# он представлен как IntPtr). В любом случае, термин HWND часто используется как сокращение для window handle”, — отмечает Microsoft в документации.

Microsoft заменяет хост свойств Win32 на WinUI, и для встраивания унаследованных HWND в новую панель вкладок требуется обратный путь интеграции (reverse islands), иначе расширения перестанут работать. На скриншоте выше показан элемент корзины, у которого есть только вкладка “Общие”, но для других программ это не так.

Например, если щёлкнуть правой кнопкой по определённому приложению и открыть его свойства, можно увидеть вкладки “Безопасность”, “Подробно”, “Предыдущие версии” и даже сторонние. Пока неясно, как именно Microsoft интегрирует эти унаследованные вкладки, но мы полагаем, что способ обратной интеграции уже найден.

Ещё один момент, вызывающий беспокойство: поверхности WinUI исторически страдают от задержки холодного старта из-за загрузки среды выполнения. Даже сейчас контекстное меню Проводника на XAML критикуют именно за это. Вкладка “Главная” в Проводнике работает медленнее, чем “Этот компьютер”, где WinUI не используется.

Всё это должно исправиться в ближайшее время: у Microsoft есть планы по оптимизации WinUI 3, и это, вероятно, объясняет, почему редизайн затягивается дольше обычного.