On the second click on "Show desktop" button, the minimized windows
are not restored, because after the first click, and the addition to
`CSimpleArray<MINWNDPOS> g_MinimizedAll`, a call to `RestoreMinimizedNonTaskWnds()`
via `HSHELL_WINDOWACTIVATED` message clears the list of minimized windows.
Don't empty `g_MinimizedAll` while processing HSHELL_WINDOWCREATED or
HSHELL_WINDOWACTIVATED messages (bDestroyed=FALSE).
Empty `g_MinimizedAll` only when SendPulseToTray is called with bDestroyed=TRUE.
Addendum to e6bced7a35 and 70d7009ad9. CORE-19703 CORE-15369
While functional, Katayama's show desktop button left much to be desired
in the realm of appearances. This commit brings improvements for it:
- When using the classic theme, the Show Desktop button now appears
more faithful to its Microsoft counterpart, emblazoned with an icon,
and encased in a border only when hovered or pressed.
- With a visual style applied, the button behaves in one of two ways:
- If present, the Show Desktop button now properly uses the relevant
information from the visual style, just like on Windows 7.
- Otherwise, the Show Desktop button uses an icon akin to when the
classic theme is used, but with the button background's appearance
repurposed from the taskbar toolbar buttons, which are guaranteed to
exist in any Windows XP or Vista visual style you can find out there.
ReactOS's own Lautus and Mizu visual styles will be updated in the
following commits to utilize these features, while Lunar and Modern visual
styles left untouched to display Show Desktop button with icon instead.
CORE-15369
Reduce system freezing on Win+D.
Normal minimizing causes message
transfer. If the window was hanging,
then it fell into endless message loop.
JIRA issue: CORE-19673
Explorer does not control the IDs used by CFSFolder::QueryContext menu and therefore cannot share its ID range with it. The range passed to CFSFolder::QueryContext also cannot start at 0 because CTrayWindow::TrackCtxMenu would interpret that as user cancel.
Follow-up to #6646.
Fix wrong flag use: #6646 (comment)
JIRA issue: CORE-19494
- Delete SmallStartMenu flag (wrong) from
_TW_STUCKRECTS2.
- Rename _TW_STUCKRECTS2.SmallIcons as
SmSmallIcons.
- Use SmSmallIcons flag.
Improve customization of Start Menu.
JIRA issue: CORE-19494
- Add SmallStartMenu flag to TW_STRUCKRECTS2
structure.
- Add IDS_ADVANCED_SMALL_START_MENU
resource string.
- Update g_TaskbarSettings.sr.SmallStartMenu via
a callback function.
- Check g_TaskbarSettings.sr.SmallStartMenu
when Start Menu is updated.
CORE-11698, CORE-15369
Allows a user to set the icon size and show or hide the desktop button in
the taskbar using the taskbar properties menu. After applying these changes,
the taskbar updates and resizes without requiring a restart.
- This PR moves the 'Notification Area' section into its own separate tab.
This allows us to include more options for users without increasing the
size of the window. It is also very similar to the Windows Vista taskbar
properties menu.
- Some minor changes to allow the taskbar to refresh its view when the icon
size or show desktop button setting changes.
- Add CanBeMinimized helper function to determine whether the window should be minimized.
- Use them in FindEffectiveProc and MinimizeWindowsProc functions.
- Improve the Minimize code.
CORE-18427
- Save locked state of the taskbar when toggled using its context menu.
- Save position of the taskbar after dragging it around the desktop.
- Invoke TRAYCMD_LOCK_TASKBAR command when (un)locking the taskbar
by the context menu, instead of duplicating this functionality.
CORE-11621 CORE-16997
The minimized non-task windows were not usable due to the bugs. In some situations, the system will restore the minimized non-task windows.
- Add IsTaskWnd helper function.
- Add SendPulseToTray function to send a pulse to the tray window.
- At some shell hook handlings, send a pulse to the tray window.
- Add IgnorePulse flag to control the timing of restoring.
- Add a timer to reset IgnorePulse flag.
- If the pulse has come and IgnorePulse flag is false, then restore the minimized non-task windows.
- Modify the rundll32 window procedure.
- Use WINDOWPLACEMENT to restore the minimized windows.
CORE-13895, CORE-18350
Follow-up of PR #4715. CORE-15369
- The 'Show Desktop' button of taskbar works on button up instead of button down.
- Add NULL checks for m_ShowDesktopButton.
- Fix hung-up in rebooting.
This PR adds a tiny button of window class "TrayShowDesktopButtonWClass" at right/bottom edge of taskbar.
This button allows the user to access "Show/Restore Desktop" feature by mouse.
You can toggle visibility of this button by registry value "TaskbarSd" in key "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced".
The button is themed when theme is available.
CORE-15369
We are not ready for enabling ATLASSERT. Enabling ATL assertions takes time to realize. CORE-17505
- Disable ATLASSERT by undefining _DEBUG.
- Revert currently non-fixable codes.
-Rename StartMenuBtnCtxMenuCreator to CStartMenuBtnCtxMenu_CreateInstance.
-Rename CreateStartMenuSite to CStartMenuSite_CreateInstance.
-Remove a couple of definitions that were not used.
The keyboard shortcuts Win+D and Win+M are also enabled.
- Implement IShellDispatch4::ToggleDesktop().
- Implement some commands in CTrayWindow.
- Add "sdk/include/reactos/traycmd.h" for tray commands.
- Fix task window switching.
- Improve the user32!SwitchToThisWindow() function and use it.
CORE-14318, CORE-13157
See also: CORE-14806 and CORE-8723
- Implement shell32 RegenerateUserEnvironment() function and use it.
- CShellBrowser and CDesktopBrowser implements WM_SETTINGCHANGE actions.
CORE-1459, CORE-14397