* Added missing c++17 compile flag to common-md-flag
* Remove .NET native tool chain from Settings.UI release config
* This flag has to be removed because .Net Native does not support
mixed assemblies, like PowerToysInterop.
* Fix HotkeyControl virtual key display
* A new interop project was setup to provide wrappers for C# projects
that want to access functionality in the common project.
* Add assembly info
* Remove WIN32 configurations
Fix for bug when placing dpi unaware window such as Notepad++ in left of right part of monitor. In that application gap of about 7px was left or right.
This fixes only single-monitor scenario
It skips correction for dpi unaware window that leaves a gap
* Added EditShortcuts Window and added Detecting shortcuts functionality
* Fixed build error
* Changed detection to take place only when window is in focus
* Added solution folder
* Added a common project and refactored shared variables to an object with wrapper functions
* Added dynamic addition of shortcuts
* Moved all shared variables in detection to state variable with wrapper functions
* Added code to re-load saved shortcuts in the UI
* Added comments
* Fixed argument modifiers in Helpers
* Updated arg modifiers in all functions
* Removed unused headers and added precompiled headers
* sln: set output dir prefix to "modules\" for all modules
* sln: CopyToOutputDirectory only when necessary
* sln: intermediate dir for csprojs
* sln: intermediate dir for vcxprojs
* sln: add PT as runner project deps + remove nonexisting project confs
* sln: remove AnyCPU for win-app-driver project
* Added project template for common library
* Added reference to stylecop.json
* Fixed xml documetation file path for common project
* Added reference to stylecop.json
* Added COM interface interpolations to C#
* Changed namespace to Common
* Added xml doc to com interfaces
* Removed AnyCPU configuration from solution file
* Added Preview Hander and form User Control Implementation
* Fix stylecop warnings
* Added test control and handler
* Added Xaml description for preview handler
* Added Xml documenatation
* Updated the control to form
* Added registration and unregistration logic for the handler
* Moved the files in separate folder and fix PR comments
* updated the name of previewhandler class to base class
* Added the DoPreview to PreviewHandlerControl Interface
* Modified the Dopreview and Unload as virtual method
* Uncommented the DocumentText to help bug repro
* HTML Parsing Extension for preview pane markdown renderer (#1108)
* Added Extension for html post processing
* Added unit test poroject for preview pane
* Added pipline test and base test function
* Added Tests for extension
* Added tests for url slashes
* Added tests for url and figure caption
* Markdown preview pane (#1128)
* Added Extension for html post processing
* Added unit test poroject for preview pane
* Added pipline test and base test function
* Added Tests for extension
* Added handler and control for markdown
* Tests added
* Locally working version for markdown
* Working image relative url's in markdown
* Added CSS to preview display
* Updates CSS for code block
* Removed html file write comment in markdown control
* Updated assembly version and web browser control test
* Add Svg preview handler (#1129)
* Added a new project for Svg preview handler
* Added initial implementation of Svg Preview Handler
* Fixed output path
* Added Unit Test Project
* Added StreamWrapper and Update Svg Control
* Updated Svg Handler Guid
* Removed migration backup folder
* Removed Fluent Assertions NuGet
* Added Comments for StreamWrapper
* Removed the manual GC collect
* Added unit tests for Svg preview Handler
* Updated the xml doc for stream wrapper
* User/lamotile/add_powerpreviewsettings (#1075)
* Added powersettings to PowerToys Settings UI
* added settings library
* updated settings-web
* updated project oncfiguration
* updated project onfiguration
* updated project .sln file
* removed .etl file and added it to git-ignore
* separated the PowerPreviewModule into split classes .cpp and .h
* moved PowerPreviewModule implemnetations to .cpp file
* fixed StringTable formatter
* fixed spacing in resource.h
* added m_ to member varibales
* initiliaze m_isPreviewEnabled in the base class
* removed duplication of objects by using pass by refference and std::move
* made the getters const
* updated naming convention
* Split test calsses
* Add const string
* Replaced move with const string
* Made attributes private
* Made attributes private
* removed unused constructor
* Update resource.h
formatted resource.h
* Adding unit tests for preview handler common (#1156)
* Changed the name of the Common library to PreviewHandlerCommon
* Added unit tests project for PreviewHandlerCommon
* Updated ComInterop accessor type
* Added unit tests for PreviewHandlerbase
* Added tests for file and stream based handler
* Added unit tests for StreamWrapper
* Added form handler unit tests
* Added Unit tests for FormHandlerControl
* Added file header
* Add Powerpreview project
* Add spacing in sln file
* swapped string refferences (#1199)
* added registry methods and enable/disable preview handlers (#1230)
* added registry methods and enable/disable preview handlers
* formatted .rc file.
* formatted resource file
* formatted .rc file.
* formatted settings.cpp
* formatted settings.h
* formatted SVGPreviewSettingsClassTest.cpp
* Formatted MarkDownPreviewSettingsClassTest.cpp
* using wide strings
* formatted settings.h
* FileExplorerPreviewSettingsTest.cpp formatting
* fixed typo and formatting
* closing Registry and fixing typos
* formmarted code using ctrl+k+d
* fixed naming
* fixed typo
* changed if/else reverse order
* Markdown preview pane (#1220)
* Added rich text bar for information display
* Added infobar
* Added tests for extension and markdown control
* Added xml docstring for markdown preview handler control
* Updated assembly file for markdown preview pane
* Updated removal of script tag without modifying CSS
* Added info bar text string to resource file.
* Removed error with infobar display on first rendering
* Updated assembly version
* Remove script and image element from Svg (#1231)
* Added implementation to remove script and image tag
* Added Unit tests for SvgPreviewHandlerHelper
* Updated Unit tests for SvgPreviewControl
* Moved the hardcoded string to resource file
* Changed the LocalMachine to CurrentUser for preview handler registration
* Added unit tests for multiple blocked elements tags
* User/lamotile/update settings objects (#1263)
* added registry methods and enable/disable preview handlers
* formatted .rc file.
* formatted resource file
* formatted .rc file.
* formatted settings.cpp
* formatted settings.h
* formatted SVGPreviewSettingsClassTest.cpp
* Formatted MarkDownPreviewSettingsClassTest.cpp
* using wide strings
* formatted settings.h
* FileExplorerPreviewSettingsTest.cpp formatting
* fixed typo and formatting
* closing Registry and fixing typos
* formmarted code using ctrl+k+d
* fixed naming
* fixed typo
* changed if/else reverse order
* updated setiings_objects.cpp
* removed changes on files that are not part of this PR
* removed const ref on primative types
* updated pass by ref semantic and removed pas by reff on primative types
* fixed spaces in the commas
* fixed spaces in brackets
* Preview pane telemetry (#1299)
* Added telemetry base class and markdown telemetry class
* Updated docstring for telemetry event.
* Added telemetry to markdown for error
* Added try catch for markdown preview handler and display error bar
* Updated markdown telemetry to make event names global variable
* Updated parameter name to camel casing and telemetry event name naming.
* Corrected assembbly version for svg renderer
* Markdown Image files display (#1303)
* Added telemetry base class and markdown telemetry class
* Updated docstring for telemetry event.
* Added telemetry to markdown for error
* Added try catch for markdown preview handler and display error bar
* Updated markdown telemetry to make event names global variable
* Updated Markdown preview to display without vertical scrollbar and removed xml doc to html agility pack.
* Updated parameter name to camel casing and telemetry event name naming.
* Corrected assembbly version for svg renderer
* Removed duplicate function
* Add telemetry for Svg preview handler (#1314)
* Added telemetry events for Svg Preview Handler
* Added unit test in case preview handler throws
* Updated the Error event name
* Remove the not required return statement
* User/lamotile/add read me (#1332)
* add readme
* moved images
* re-added images'
* Fixed gramma
* Update figure number refference
* improve preview handler intergration (#1319)
* improve preview handler intergration
* Fixed typo
* updated typo
* updated enable() function
* updated is enabled()
* re-updated is enabled()
* added this-> key word
* (0.16) - Install preview handler with msix (#1339)
* Removed the registration logic from preview handlers
* Updated the output path
* Added logic to shim the activation of .net assembly
* Updated manifest file
* Fix the allowedsilenttakeover filed in manifest
* Updated the appxmanifest file
* Added AllowSilentDefaultTakeOver in manifest
* Fix returned error code by DllGetClassObject
* Moved the CLSID to a common header file
* Added info about where CLSID needs to be updated
* Added a .reg file for the Keys added in registry.dat
* Added comments for DllGetClassObject
* Svg Preview Handler block external component (#1368)
* Removed the registration logic from preview handlers
* Updated the output path
* Added logic to shim the activation of .net assembly
* Updated manifest file
* Fix the allowedsilenttakeover filed in manifest
* Updated the appxmanifest file
* Added AllowSilentDefaultTakeOver in manifest
* Fix returned error code by DllGetClassObject
* Moved the CLSID to a common header file
* Added info about where CLSID needs to be updated
* Added a .reg file for the Keys added in registry.dat
* Added comments for DllGetClassObject
* Extended WebBrowserSite for setting flags in DISPID_AMBIENT_DLCONTROL
* Added XML Documenatation
* Removed the logic for deleting image and script element from Svg
* Updated Unit Tests
* Updated typecast of uint
* Forwarded calls to Type.InvokeMember
* Resolve PR Comments
* Adding MSI Installation for Preview Handler (#1436)
* Updated wxs for including dll and registry keys for preview handlers
* Changed the casing for registry key
* Resolve PR Comments
* Added comments for File element
* Call GC on preview unloading (#1456)
* Call GC collect on preview unloading
* Added github issue link
* Update Web browser control for Markdown Previewer (#1464)
* Updated Webbrowser control
* Updated Unit tests
* Disabled Navigation for Svg Previewer
* Fix power preview unit tests (#1508)
* Decoupled registry interaction logic
* Updated File explorer settings
* Updated unit tests for PowerPreview Settings
* Added Asserrtion for Scope of registry key
* Updated the registry value to match with installation registry value
* Sync master settings.cpp
* Merge settings changes from PreviewHandlers
* Remove newline changes added into in example_powertoy\trace.cpp
* Chaned .net framework to 4.7.2
* Updated Csproj files to auto generate Assembly.info files
* Updated msi installer to use version variable for preview handlers assembly
* Removed the signing of Assembly and updated wxs to not include PublicKeyToken
* Updated the Path in Packaginglayout.xml to modules from Gac and the registry hive binary
* Regenerated updated JS and html file
* Resolve PR Comments
* Readded the wprp file
Co-authored-by: Divyansh <divyan@microsoft.com>
Co-authored-by: Divyansh <somm14divi@gmail.com>
Co-authored-by: Lavius Motileng <58791731+laviusmotileng-ms@users.noreply.github.com>
* installer: extract version number into separate file and use it where possible
* MSIX: rename package to include version on CDPx
* installer: generate assembly info for FZ editor
* MSIX: inject correct version to appxmanifest
* format_sources: exclude 3rd party sources
* format common project
* format leftovers in runner & settings projects
* move source formatting-related files according to #939
* 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.
The cache was introduced to improve performance by not querying the
OS for the window process path every time we need to check if the window
is interesting to FancyZones. Since then other changes were made to the
the way we check the windows. Right now, the IsInterestingWindow function is
called when:
1) WinKey + arrows are used
2) window is started to be dragged
3) window is created
1) and 2) are initiated by the user, happen only once per interaction so
their performance impact can be dismissed. The 3) happens all the time
but for the most part the check for WS_CHILD or
GetAncestor(window, GA_ROOT) == window will filter those out. In the
end, only top-level windows will be queried for their path.
Removing the cache improves code readability and will make code
maintenance easier.
Make the runner not run as elevated by default. Add a setting for
"run PowerToys as elevated" and buttons to restart the process
with the different elevation levels.
* docs: split usage and dev docs
* # This is a combination of 2 commits.
# This is the 1st commit message:
docs: split usage and dev docs
# The commit message #2 will be skipped:
# fixup add docs
* docs: add runner documentation and move hooks documentation to devdocs
* docs: add stubs for modules technical description
* docs: add paragraph about event thread-safety
* docs: add 'Current modules' section header
1) Adding example project to Debug / Release Builds.
2) Including <string> in common.h
3) Using std::optional instead of PowerToysValues::is_[type]_value
4) Fixing warnings generated by unreferenced 'ex' variable in exception handling.
5) Updated relative path of version.h in exeample_powertoy.rc
This makes the Hotkey settings object ignore the key value stored in
json. Instead it will be deduced from the current keyboard layout and
the vk_code.
Unifies the way windows are considered "interesting" by FancyZone.
Berfore the change WinKey + arrows would use different method than
dragging. This PR makes both use the WinKey + arrows method.
Cleans up FancyZones Settings.cpp by removing m_configStrings variable.
Contrary to its name it was used to create color picker control.
Adds a multiline option to the text input to settings. Uses this to
provide the user with a way to exclude certain apps from snapping to
zones.
* Use DPIAware::DEFAULT_DPI
* Make runner DPI-unaware, since it doesn't need to use a Per Monitor V2 DPI.
* Programmatically enable "Per Monitor V2 DPI" for the runner proccess and use a separate DPI-unaware thread for the corresponding API calls
* Increase PCH memory limit for settings project
* Address review issues
* Draw zoneWindows properly scaled
* Don't trace event on exit
change 'PowertoyModuleDeleter' to not call 'module->disable();' before 'module->destroy();' so the module can distinguish between being turned off and PowerToys exiting.
Code formatting.
* uppercase for event name
* Trace on/off event for ShortcutGuide module
* Trace the 'hide' event only if the guide was visible
'on_hide()' is invoked when the module is turned off, in that case don't trace the hide event.
* Remove spaces in data field names
Remove 'ShowGuide' event since it's not providing any useful data.
* Include build number in version number
Co-authored-by: Alexis Campailla <alexis@janeasystems.com>
Co-authored-by: Bret Anderson <bretan@microsoft.com>
Co-authored-by: Enrico Giordani <enrico.giordani@gmail.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Jeff Bogdan <jeffbog@microsoft.com>
Co-authored-by: March Rogers <marchr@microsoft.com>
Co-authored-by: Mike Harsh <mharsh@microsoft.com>
Co-authored-by: Nachum Bundak <Nachum.Bundak@microsoft.com>
Co-authored-by: Oliver Jones <ojones@microsoft.com>
Co-authored-by: Patrick Little <plittle@microsoft.com>