* Improvements in enumeration of available screens (work areas)
* Minor code style improvement
* Address PR comments
* Store map of display device name to device index
* Address PR comments
* Update comment
* Break when suitable device is found
* Added the setting
* Refactored existing code, the main feature isn't implemented yet
* Renamed a method
* Updated a comment in IZoneWindow
* Added the zone selection algorithm, didn't test it
* Basic features work
* Single monitor cycling works
* Seems that the feature works well
* Polished the settings page
* Rebase fix
* Fixed a null pointer dereference
* Use classic if syntax
* Fixed bad indentation
How did these lines unindent themselves?
* Removed TODO comment
* Rebase fix
* Another rebase fix
* Started work
* I can't debug anything, cleaning
* Added settings, [[Not Tested]]
Not even compiled
* Tested, the most basic features work
* Refactor, add RestoreSize
* Added DPI awareness
* Fixed a potential issue with resizing zoned windows
* Fixup: Potentially unsafe memory-layout of std::pair replaced with std::array
* Fixup: Use .data() instead of a pointer
* Further refactoring
* Integrated Win+Arrow keys with the Restore size feature
* Fixed an issue where window's on-screen position is not restored properly
* Fixed a bug pointed out by Enrico
* Move window into last known position on active work area (if possible)
* Refactor code to avoid double checks
* Address PR comments
* Perform all HWND checks at one place
* Improve handling of active/primary work area in app zone history
* Address PR comments: naming, arguments checks
* Rename some functions to increase readability
* Implement special handling in 2+ monitor scenario
* Minor naming change
* Simplify
* Improve readability
* Remove blank line
* Don't move away from secondary monitor if there is no app zone history
* Update comment
* FancyZonesEditor should not be zoned
* Preserve width and height (if possible) when opening on active monitor
* Maintain w/h whenever possible
* Remove scaling, add window coordinates on active monitor top-left corner
* If there is no app zone history on secondary screen, fallback to default windows behavior.
* 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
* 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>
* 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>