dotnet / wpf

WPF is a .NET Core UI framework for building Windows desktop applications.
MIT License
7.08k stars 1.17k forks source link

Tooltips show on keyboard focus #4172

Closed batzen closed 3 years ago

batzen commented 3 years ago

IMHO: I think it's a sad decision from Microsoft to introduce new behavior and then only allow internal consumers to change that behavior while affecting every app which uses tooltips. As the internal usage shows you fully understood that this behavior is not always the desired behavior, but still decided to make it impossible for everyone else to opt out of it.

Actual behavior: Tooltips show on keyboard focus.

Expected behavior: Tooltips should not show on keyboard focus by default, IMHO. The behavior must be controllable through a dependency property.

Minimal repro:

  1. Add a button to a window and set it tooltip to some string
  2. Select the button via keyboard
  3. Tooltip shows up
elyoh commented 3 years ago

Is it possible to get the earlier behaviour using the AppContextSwitch Switch.UseLegacyToolTipDisplay?

batzen commented 3 years ago

This would also disable other accessibility features related to tooltips.

ryalanms commented 3 years ago

Thank you for the report, @batzen.

SamBent commented 3 years ago

@batzen - The change was driven by an internal team responsible for accessibility issues across all Microsoft products, who are in turn driven by various consortiums and organizations such as WCAG that set accessibility standards and guidelines for all software producers. In other words, it wasn't WPF's or even Microsoft's decision, and we can't do what you suggest without violating internal rules and putting WPF apps at risk of failing to be eligible for use by agencies with strong accessibility requirements (e.g. governments).

I understand your concerns, but you should raise them with WCAG et al.

batzen commented 3 years ago

@SamBent @ryalanms That's a very strange and concerning answer. My main request was "The behavior must be controllable through a dependency property.".

It was Microsofts decision to make this non override-able for everyone except internal users.

The Ribbon violates the WCAG standard then. Microsoft must remove the override in the Ribbon if WCAG standards have to be followed so strictly. And Microsoft must also change the behavior of other Microsoft products as the Ribbon override says "to keep this consistent with other Microsoft products".

If the Ribbon override stays, Microsoft must add the possibility for everyone to override it. If there is an exception for Ribbon like controls and Microsoft does not want to add the possibility for everyone to override it, i hereby request Microsoft to add InternalsVisibileTo for Fluent.Ribbon and every other library providing Ribbon Controls.

FYI @punker76 @GeertvanHorrik

RussKie commented 3 years ago

@batzen are tooltips shown when a control is hovered by a mouse? Keyboard tooltips provide the same behaviour for users who is unable to use mouse for whatever reason.

batzen commented 3 years ago

@RussKie While i totally agree with you that there should be a way to show tooltips with the keyboard, which was made possible with a shortcut, i don't think that it's a good idea to always show them on keyboard focus as it might not always be the desired behavior. And that's exactly the same thing Microsoft realized and added a way to disable this behavior for internal consumers. What's wrong with giving everyone this choice?

Mouse and keyboard are two totally different devices/input methods so it's ok, IMHO, for them to lead to different behavior in an application.

Keyboard tooltips provide the same behaviour for users who is unable to use mouse for whatever reason.

I guess you are referring to users with disabilities. Those users usually use assistive tools to improve their ability to use applications. At least that's my experience while talking to them and improving their experience in the applications in develop. Not a single one has asked for tooltips to show on keyboard focus.