dotnet / dotnet/wpf

Fix WPF JumpList support and re-enable JumpList tests

Open
#1,544 1 comment 2 reactions 0 assignees View on GitHub
Bug
Dominant language
C#
Stars
7.7k
Forks
1.3k
Avg merge
1d 11h
Merged PRs (30d)
61

Description

The WPF JumpList support broke in Windows 8.1. This is due to many changes to the shell underneath and the fact that WPF has old versions of Automation proxies that cause us to not be able to find certain items.

Here are some explanations from https://devdiv.visualstudio.com/DevDiv/_workitems/edit/126798:

@miguep In case he has any input on this.
```
After investigating this issue, it seems that WPF is the one at fault for this, WPF provides some custom out-dated Proxy providers (for standard win32 controls) for UIAutomation to use, this causes UIAutomation to use those providers instead of its more up-to-date defaults (for win32, winforms, WPF), which results in some newer controls (or updated ones) to not be reported when querying UIAutomation.

It seems that the easiest solution to this problem would be to remove our call to UiaRegisterProviderCallback, and let UIAutomation use their proxy defaults, I've tested that approach and I've gotten the desired results. The problem is that we need the call to UiaRegisterProviderCallback in order to provide the users with the ability to create their own custom proxy providers.

The solution would be to forward the user's custom proxy providers to UIAutomation via IUIAutomationProxyFactory, the problem with this approach is that we need a CUIAutomation object, but creating one of our own does not work, since our stack uses the flat node API, which creates a CUIAutomation object internally, but does not expose it.

The other solution would be to re-work all our proxy providers and bring them up-to-date.

This issue is caused by the OS call GetWindow, the public call will by default ignore immersive windows (Metro/Universal apps), since the jumplist in Win10 is now a Universal window, all the automation lookups and traversals will ignore it, the only way so far to change this behavior is via the app manifest


true


```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.