Commit Graph
44 Commits
Author SHA1 Message Date
ge0rdi ba131ff14b Update build instructions 2020-09-24 18:52:24 +02:00
ge0rdi 7d59f5ebfb Support for modern app jump-list tasks
Task jump-list items for modern apps require special handling.

First of all they don't provide icon directly.
Icon location is stored in `PKEY_AppUserModel_DestListLogoUri` property.
And then has to be resolved for given application package.

Next, context menu of provided `IShellLink` item doesn't seem to be able
to start actual link target.
Thus we need to obtain context menu of target item.

Fixes #375.
2020-09-23 11:50:32 +02:00
ge0rdi 95f3a4b09a Add GetPackageFullName helper 2020-09-23 11:50:32 +02:00
ge0rdi 728f982310 Modernize CItemManager::LoadCustomIcon 2020-09-23 11:50:32 +02:00
ge0rdi 2ca236c291 Don't make metro icons smaller if Invert metro icons is enabled
There should be no need to make icons smaller.
2020-09-23 11:50:32 +02:00
ge0rdi 8a22282191 ItemManager: Better handling of modern application links
Link to modern application will be treat as modern application itself.

This fixes jump-lists and invert metro color option on modern apps pinned
to start menu.
2020-09-23 11:50:32 +02:00
ge0rdi 935600a6d9 Add LogPropertyStore helper 2020-09-23 11:50:32 +02:00
ge0rdi d3bf4b6207 MenuContainer: Faster recent Metro apps enumeration
It seems that `SHCreateItemInKnownFolder` is quite slow for Metro apps.
Thus we should avoid it and use cached app info.
2020-09-22 19:12:35 +02:00
ge0rdi aa09a0dcc2 ItemManager: Keep metro name if already obtained 2020-09-22 19:12:35 +02:00
ge0rdi cd8cc8cbc6 Skin: Add more DPI options
Allow skin customizations for higher DPI displays by adding more DPI options:
- 120_DPI
- 144_DPI
- 168_DPI
- 192_DPI
- 216_DPI
- 240_DPI

Fixes #458 .
2020-09-22 07:08:37 +02:00
ge0rdi 61d05b49c5 Improve search logging 2020-09-01 19:28:04 +02:00
ge0rdi 9752afbebc ModernSettings: Use smart pointers 2020-09-01 19:28:04 +02:00
ge0rdi e210b4a65a CAbsolutePidl: Allow copy from PCIDLIST_ABSOLUTE 2020-09-01 19:28:04 +02:00
ge0rdi 6581868336 ModernSettings: Add support for more settings
Based on `HostId`:
* {7E0522FC-1AC4-41CA-AFD0-3610417A9C41}
  execute `shell:::{PageId}`
* {12B1697E-D3A0-4DBC-B568-CCF64A3F934D}
  execute command in `DeepLink`
2020-09-01 19:28:04 +02:00
ge0rdi 7ee668e474 Installer: Fix URLs
Fixes #404
2020-09-01 19:28:04 +02:00
ge0rdi 62b949679b Respect Use multiple columns setting for all folder items
Currently it was used only in some cases (like Programs/Apps folder).
It will be more consistent to respect the setting for all folder
items.

Fixes #436.
2020-09-01 19:28:04 +02:00
ge0rdi 6242e8d9b9 Settings: Use images in PNG format
It makes StartmenuDLL.dll ~830kB smaller.
2020-09-01 19:28:04 +02:00
ge0rdi ee59bb76de Setup: Don't add symbols for unused update.exe 2020-09-01 19:28:04 +02:00
ge0rdi 3eb134a280 Setup: Store symbols in symstore compatible way
This way they can be directly extracted to symbol server cache.
So any tool that uses _NT_SYMBOL_PATH will be able to use them
automatically.
2020-09-01 19:28:04 +02:00
ge0rdiandGitHub 257023209b Update README.md
- Few text adjustments
- Minor formatting changes
2020-09-01 19:18:48 +02:00
ge0rdi 0da20180ac Search modern settings using our new shell folder
Use our modern settings shell folder (`shell:::{82E749ED-B971-4550-BAF7-06AA2BF7E836}`)
to search (enumerate) modern settings.

Fixes #57
2020-08-29 14:03:59 +02:00
ge0rdi 1f57c782e5 Modern settings shell folder
Adds virtual shell folder that contains items representing modern settings parsed from
`%windir%\ImmersiveControlPanel\Settings\AllSystemSettings_{253E530E-387D-4BC2-959D-E6F86122E5F2}.xml`.

It can be accessed via `shell:::{82E749ED-B971-4550-BAF7-06AA2BF7E836}` (in explorer).

Item in folder will open given setting page in `Settings` application.
2020-08-29 14:03:59 +02:00
ge0rdi 1f6e06fc85 Use proper flag in LoadMetroIcon 2020-08-29 14:03:59 +02:00
ge0rdi ed3675ca7f Remove non-working update component from installation
We can add it later once it will be ready and working.
2020-08-18 15:28:09 +02:00
ge0rdi 695e419722 Setup: Use high version when doing local build
This way the build can be installed over existing older installation.
2020-08-14 18:05:56 +02:00
ge0rdi 3bceac1515 ProgramsTree: Fix theme usage
Obtain theme data for proper window.

Fixes #415
2020-08-12 14:16:14 +02:00
ge0rdi cc02e38aef StartMenuHelper: Add shell extension to desktop packaged applications
This will allow `Pin to start` for desktop applications downloaded from
Microsoft Store (such as Windows Terminal).
2020-06-07 07:21:19 +02:00
ge0rdi 9c119c6e29 StartMenuHelper: Simplify shell extension registration 2020-06-07 07:21:19 +02:00
ge0rdi 9e297866ed Register server with per-user redirection
Some projects do register COM server in Debug/Release sonfigurations.
We should do it with per-user redirection so that there is no need to
run elevated Visual Studio.

This has no effect on COM server registering in installed Opne-Shell.
It is related only to local development.
2020-06-07 07:21:18 +02:00
ge0rdi 261929f4c3 Don't use obsolete /Gm switch
`cl : command line warning D9035: option 'Gm' has been deprecated and will be removed in a future release`
2020-06-07 07:21:17 +02:00
ge0rdi 9976e134ca Fix 'Invert Metro icon color' option for grayscale icons
When `Invert Metro icon color` is enabled `Open-Shell` needs to
distinguish full color icons from monochromatic ones.

Color icons are displayed normally. Monochromatic ones are displayed
inverted (original background becomes transparent and foreground will
get Metro accent color).

Metro icon is loaded from Metro app resources (usually PNG image) as
bitmap with premultiplied alpha channel.
This causes monochromatic image to essentially become grayscale (because
RGB values are multiplied with alpha channel value).

Function `DetectGrayscaleImage` is used to distinguish such images.

Unfortunatelly if original image is grayscale (such as new Windows
Terminal icon) it is recognized as monochromatic and thus inverted.

To prevent this we will take into account also alpha channel in
`DetectGrayscaleImage`.

In monochromatic images alpha channel value will be the same as the rest of
channel values.
For color images alpha channel value will be different than other
channel values.

Fixes #364.
2020-06-07 06:47:03 +02:00
ge0rdi 1b410e5a80 Fix compilation with VS16.6 2020-06-07 06:47:03 +02:00
ge0rdi 9ebe53fdbf Fix issue with confirmation dialog being blocked
Delete confirmation dialog may be (partially) hidden behing start menu.
As a result the dialog may be not accessible because start menu(s) are
displayed as top-most windows.

Thus when executing menu command we will make menu(s) non-topmost. So that
other windows can be drawn on top of menu(s).

Fixes #257
2020-02-08 11:23:05 +01:00
ge0rdiandGitHub 431e2b522d Update issue templates 2019-09-28 19:22:49 +02:00
ge0rdiandGitHub d1ba5daead Update issue templates 2019-09-28 19:20:56 +02:00
ge0rdiandGitHub 38c155cc95 Add support for silent OS upgrade task (#176)
`Open-Shell` needs to adjust itself after OS upgrade. It seems that
`StartMenuHelper` registration is lost after such upgrade:

http://www.classicshell.net/forum/viewtopic.php?f=7&t=8082#p34821

To fix this registration, administrator rights are required (means user
interaction, UAC).

While this is acceptable in consumer environment, it is typically not
desired in business environment where users typically doesn't have
administrator rights.

This patch allows to run `Open-Shell` in silent upgrade mode that will:
* check if OS version changed (otherwise end immediately)
* perform OS upgrade tasks without any user interraction

Such mode can be then used to create scheduled task that will run this
silent upgrade check on every boot with system rights:

`schtasks /Create /RU "NT AUTHORITY\SYSTEM" /SC ONSTART /TN "Open-Shell OS updgrade check" /TR "%ProgramFiles%\Open-Shell\StartMenu.exe -upgrade -silent"`

 #167
2019-06-09 20:27:49 +02:00
ge0rdiandXenhat 2fb9448ffd Few improvements (#65)
* Fix naming inconsistencies

'Menu' vs 'StartMenu'

* Installer: Remove Facebook link

* Installer: Remove PayPal donate remnants

* OpenShellReadme: Remove info about product version
2018-08-13 00:28:42 -04:00
ge0rdiandGitHub ad05abe113 Update README.md
- Icon link
- Home page link
- AppVeyor status badge
- Latest nightly link
2018-08-06 08:22:36 +02:00
ge0rdiandXenhat 4637019a0f Update README.md (#56)
Prettified links on main page.
2018-08-03 23:50:13 -04:00
ge0rdiandGitHub 63c3689da8 Update README.md
Added link to latest nightly build
2018-08-03 19:09:43 +02:00
ge0rdiandXenhat ad28acaaa3 Build improvements (#51)
* Build: Add symbols to 7z archive

It is much smaller than ZIP (15MB vs 34MB).

* Build: Don't create source package

There is no need to create package with sources as sources for given
release can be easily obtained from git.

* AppVeyor: Remove unneeded install script

__MakeFinal.bat now handles it.

* Build: Less verbose output

* Build: Support for version suffix

AppVeyor may add suffix to version (X.Y.Z-abc) in case of PR builds.

* AppVeyor: Disable shallow clone

To be able to use git commands (in source indexing script).
Use history depth 1 instead.

* Build: Add source index to PDBs

Add source information to PDBs so that source files can be retrieved from Github by debugger.
2018-07-27 20:30:53 -04:00
ge0rdiandXenhat 9c6fadb828 Fix for recent Windows Insider builds (#11) (#33)
CMenuContainer object was not destroyed when Start Menu window was closed.

It was referenced by IFrameworkInputPane::AdviseWithHWND call (to be able
to receive input pane notifications). The problem was that dereferencing
(IFrameworkInputPane::Unadvise) was called from CMenuContainer destructor
that is called only when object's refcount goes to zero.

In previous Windows versions it somehow worked, because for some reason
CMenuContainer object was no longer referenced when its window was
destroyed.

Apparently there was some change in IFrameworkInputPane handling in recent
Windows builds (starting with 17692).

To fix the issue we have to call IFrameworkInputPane::Unadvise() when
CMenuContainer's window is about to be destroyed.
2018-07-05 18:50:50 -04:00
ge0rdiandGitHub 11bd5fa5f9 Support for product version supplied by AppVeyor (#12)
* Set version of binaries based on CS_VERSION environment variable
* Use AppVeyor supplied product version
* Automatically generate ProductCode GUID
* Convert version (CS_VERSION) to number (CS_VERSION_NUM)
2018-02-05 08:48:15 +01:00
ge0rdiandGitHub 1595967c27 Support for AppVeyor builds (#11)
* Remove pause to be automated build friendly
* Use 7-Zip instead of WinRar
* Enable parallel builds
* Build improvements
* Push final installer to AppVeyor
* AppVeyor config
2018-02-04 11:06:04 +01:00