* Clean up resources taken by closed virtual desktops on FancyZones module startup.
* Overload GetVirtualDesktopIds to return wide string.
* Refactor OnDisplayChange method.
* Move part of the virtual desktops related logic from FancyZones to VirtualDesktopUtils.
* Post WM message from vritual desktop tracker thread to FZ thread.
* Minor improvements in RegisterVirtualDesktopUpdates method.
* Close registry key after HandleVirtualDesktopUpdates thread finishes execution.
* Remove comment explaining workaround to VirtualDesktopUtils namespace.
* Move HandleVirtualDesktopUpdates to VirtualDesktopUtils namespace. Resolve PR comments.
* Fix typos in window messages description.
* Remove lock from OnKeyDown method to avoid deadlock.
* Handle scenario with only primary desktop and no desktop swithc in current session.
* Add scoped lock when changing current desktop id. Address PR comments.
* Explain purpose of UpdatePrimaryDesktopData method.
* Fix typo in documentation.
* Compare window desktop id with currently active work area desktop id.
* Improve error handling and conform to coding guidelines.
* Move virtual desktop helper functions to ZoneWindowUtils namespace.
* Ensure thread safety when creating instance of VirtualDesktopManager.
* Remove static qualifier from ServiceProvider.
* Return instead of break, as there is no need to check for other monitors, virtual desktop is the same for all.
* Move virtual desktop related helper functions to separate files.
* Skip comparing desktop ids if zone window has empty GUID for desktop id.
* Add comment describion scenario for which we need this fix.
* Refactor a method which resizes windows
* Completed initial work for MultiZones
Without changing any test, they all pass!
* Implemented a basic version of Multizones, updated some tests
* Reduced the sensitivity radius
* Added a few must-have unit tests for Multizones
* Some fixups
* Took care of the conflict between this and #1938
* Improved how zones are detected, reverted a change in one unit test
* Resolved another merge conflict
* Fixed bugs related to stamping
* Fancy zones ui update (#4)
* Draft of numeric fancyzones with numbers
* Added support for zone color configuration, improved zone number display
* Changed order of settings to more logical
* Added option to edit zone border color
* Trancparency of dragged window, transparency of displayed zones, changed font of zone numbers
* Fix for compilation
* Some refactor
* Introduced gdiplus to draw zone and zone index
* Fix for dissappering windows
* Some fixes
* another merge fix
* another merge fix
* Unit test merge fix
* Transparency with show zones on all fix
* indentation fix
* Fix for failing test
* Changed order of color pickers
* "Zone Opacity"
* Zone opacity (%)
* Added option to turn off dragged window transparency, changed default zones color values
* When moving window into zones using arrow keys, support multi-monitor scenario
* Minor coding style adjustments
* Split implementation into separate functions because of readability
* Rename certain arguments
* Modify unit tests after API changes
* Address PR comments and add unit tests
* Return true from MoveWindowIntoZoneByDirection only if window is successfully added to new zone
* Improved monitor ordering (#1)
* Implemented improved monitor ordering v1
* Fixed some embarrassing bugs, added some tests
* Added one more test
* Extracted a value to a variable
* ASCII art in unit test comments describing monitor layouts
* Removed empty line for consistency
* Update comment to match the code
* Refactored tests, added tests for X,Y offsets
Co-authored-by: Ivan Stošić <ivan100sic@gmail.com>
* Introduce handling of new/old work areas (defined by virtual desktop id and monitor)
* Save data to JSON storage only once after we register all deleted virtual desktops
* Update saving mechanism
* Remove resolution from unique identifier
* Update comments related to new unique identifier
* Don't handle NULL GUID as it is default one
* Revert "Remove resolution from unique identifier"
This reverts commit 5a36651217.
* Revert "Update comments related to new unique identifier"
This reverts commit 8e89802549.
* removed MigrateDeviceInfoFromRegistry
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
* Migrate FancyZones data persisting from Registry to JSON file
* Address PR comment: Remove redundant check
* Addres PR comment: Remove unused Dpi and add CmdArgs enum
* Address PR comment: Make methods const and inline
* Address PR comments: Expose GenerateUniqueId function and use const ref instead of passing wstring by value
* Address PR comment: Use lamdba as callback
* Address PR comment: Move GenerateUniqueId to ZoneWindowUtils namespace
* Address PR comment: Use regular comparison instead of std::wstring::compare
* Address PR comment: Use std::wstring_view for tmp file paths
* Address PR comment: Use scoped lock when accessing member data
* Address PR comment: Remove typedefs to increase code readability
* Address PR comment: removed nullptr checks with corresponding tests
* Address PR comment: Move ZoneSet object instead of copying
* Address PR comment: Make FancyZonesData instance const where possible
* Remove unnecessary gutter variable during calculating zone coordinates
* Remove uneeded subclass
* Avoid unnecessary copying and reserve space for vector if possible
* Save FancyZones data after exiting editor
* App zone history (#18)
* added window and zone set ids to app zone history
* Rename JSON file
* Remove AppZoneHistory migration
* Move parsing of ZoneWindow independent temp files outside of it
* Unit tests update (#19)
* check device existence in map
* updated ZoneSet tests
* updated JsonHelpers tests
* Use single zone count information
* Remove uneeded tests
* Remove one more test
* Remove uneeded line
* Address PR comments - Missing whitespace
* Update zoneset data for new virtual desktops (#21)
* update active zone set with actual data
* Introduce Blank zone set (used to indicate that no layout applied yet). Move parsing completely outside of ZoneWindow.
* Fix unit tests to match modifications in implementation
* Fix applying layouts on startup (second monitor)
Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com>
Co-authored-by: Seraphima <zykovas91@gmail.com>
Splits the code use to filter windows for FancyZones and the
"active window" for the ShortcutGuide. The FancyZones logic is preserved
and merged into a single function. We keep it in common.h, as it might
be also used in other PowerToys, like maximized to new desktop. We do
however change the return type to be more descriptive. It also returns
a separate flag for if the window has a visible owner. This can be used
to implement the approved apps list.
For the ShortcutGuide, the logic is relaxed to include more windows. One
example are Explorer properties windows. Those are (and should) filtered
by the FancyZones, but should appear in the window preview in the SCG.
The new return type also includes information if the window will react
to the default Windows Snap. This is not ideal though. Currently, SCG
can only disable the entire "Windows Controls" group. OTOH windows like
"Save As..." dialogs can be snapped to corners etc., but cannot be
minimized nor maximized. Until SCG can separately disable those buttons
we will display the buttons in the enabled state only if the window
supports all settings. In the future, we should integrate FancyZones
snap override here too.
Do not swallow WinKey+Arrow events for non-interesting windows. This makes apps that are in the "excluded apps" list behave as if "Override windows snap keys" is disabled - they will react to the Windows default snap.
* adding fancy zone opacity setting, enhancement #631
* applying zone opacity setting to all zones during zone selection
* changing opacity setting to percentage