Repository: microsoft/terminal (language: cpp)

Issue:
Annoying menu settings tooltips prevents clicking upper menu entries. Tooltips don't dissapear when moving the cursor away.
### Windows Terminal version

1.15.2713.0

### Windows build number

22621.525

### Other Software

_No response_

### Steps to reproduce

1. Open Windows Terminal settings. 
2. Hover the cursor over a setting, and a tooltip will appear near the cursor over the upper menu setting.
3. If you move the cursor slowly over the tooltip, the tooltip doesn't disappear and you can't click the immediately upper menu entry.

![image](https://user-images.githubusercontent.com/121157/195131189-893c4085-162c-4058-bbf0-53b24244ccd9.png)


This is quite annoying, tooltips should dissapear immediately after moving the cursor in any direction.

### Expected Behavior

_No response_

### Actual Behavior

Tooltips don't dissapear when moving the cursor and prevents from clicking settings menu entries.


Discussion / hints:
I would say that those tooltips are completely useless, I haven't seen them in any other UWP app, like powertoys or windows settings app.
Thanks for the report! There's a couple things at play here.

> completely useless

They are useful when you have long profile names or are in collapsed navigation mode:

<img width="292" alt="image" src="https://user-images.githubusercontent.com/189190/195397635-186b61f2-77ef-4e5e-83d9-f00619d02258.png">

<img width="112" alt="image" src="https://user-images.githubusercontent.com/189190/195397664-399a36a5-7020-4bb3-ad66-c80b9d673c80.png">

FWIW, I didn't think that we should put tooltips into the navigation tray in Settings for the same reason (it offers no additional information,) but I was convinced by the argument that it assists in cases where the text legitimately doesn't fit.

> doesn't disappear

Interesting; this appears to be a conscious design choide for the modern UI framework. Take the taskbar clock for example: if your mouse enters the tooltip above the clock, it stays open and you can't click whatever's behind it.

<img width="155" alt="image" src="https://user-images.githubusercontent.com/189190/195398020-4c80fcab-45c1-4f4e-b8b0-e29c3e163f09.png">

Visual Studio uses WPF (primarily) and has original behavior (the tooltip disappears if you move out of range of the original item).

This one is bordering on "by design" given that it's a systemwide choice to make tooltips block interaction... 🤔 
You are right this seems made by design and I don't really understand it, as you never interact with tooltips you shouldn't be able to press them ever. Tooltips should dissappear once the cursor is not over the element that you are trying to press. I haven't seen this behaviour outside microsoft apps, see for example the spotify app. If you place the cursor over the play button a tooltip appears, but immediately dissapears when you place your cursor outside of it which is the standard behaviour of tooltips.

In the taskbar example is also very annoying, if you have an application behind the tooltip, you can't press it.

Is this UWP related? Where should I post this then?

Standard behaviour of tooltips in all apps I know of is:

- Don't show a tooltip if the text is fully visible.
- Tooltips should remain as far as you keep the cursor hover in the element.


Maybe here?

https://github.com/microsoft/WindowsAppSDK
 or here?

https://github.com/microsoft/microsoft-ui-xaml
Ruling from the triage meeting: we should get rid of the redundant tooltips. We should _also_ pursue the issue on the XAML side (thank you for filing it!)

Fix patch:
diff --git a/src/cascadia/TerminalSettingsEditor/MainPage.cpp b/src/cascadia/TerminalSettingsEditor/MainPage.cpp
index 26629625aa4..f9673c9e1e3 100644
--- a/src/cascadia/TerminalSettingsEditor/MainPage.cpp
+++ b/src/cascadia/TerminalSettingsEditor/MainPage.cpp
@@ -532,7 +532,6 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
             if (!profile.Deleted())
             {
                 auto navItem = _CreateProfileNavViewItem(_viewModelForProfile(profile, _settingsClone));
-                Controls::ToolTipService::SetToolTip(navItem, box_value(profile.Name()));
                 menuItems.Append(navItem);
             }
         }
@@ -540,7 +539,6 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
         // Top off (the end of the nav view) with the Add Profile item
         MUX::Controls::NavigationViewItem addProfileItem;
         addProfileItem.Content(box_value(RS_(L"Nav_AddNewProfile/Content")));
-        Controls::ToolTipService::SetToolTip(addProfileItem, box_value(RS_(L"Nav_AddNewProfile/Content")));
         addProfileItem.Tag(box_value(addProfileTag));
 
         FontIcon icon;
diff --git a/src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw b/src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw
index f264ca823fc..f37004e8089 100644
--- a/src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw
+++ b/src/cascadia/TerminalSettingsEditor/Resources/en-US/Resources.resw
@@ -550,34 +550,18 @@
     <value>Appearance</value>
     <comment>Header for the "appearance" menu item. This navigates to a page that lets you see and modify settings related to the app's appearance.</comment>
   </data>
-  <data name="Nav_Appearance.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
-    <value>Appearance</value>
-    <comment>Tooltip for the "appearance" menu item.</comment>
-  </data>
   <data name="Nav_ColorSchemes.Content" xml:space="preserve">
     <value>Color schemes</value>
     <comment>Header for the "color schemes" menu item. This navigates to a page that lets you see and modify schemes of colors that can be used by the terminal.</comment>
   </data>
-  <data name="Nav_ColorSchemes.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
-    <value>Color schemes</value>
-    <comment>Tooltip for the "color schemes" menu item.</comment>
-  </data>
   <data name="Nav_Interaction.Content" xml:space="preserve">
     <value>Interaction</value>
     <comment>Header for the "interaction" menu item. This navigates to a page that lets you see and modify settings related to the user's mouse and touch interactions with the app.</comment>
   </data>
-  <data name="Nav_Interaction.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
-    <value>Interaction</value>
-    <comment>Tooltip for the "interaction" menu item.</comment>
-  </data>
   <data name="Nav_Launch.Content" xml:space="preserve">
     <value>Startup</value>
     <comment>Header for the "startup" menu item. This navigates to a page that lets you see and modify settings related to the app's launch experience (i.e. screen position, mode, etc.)</comment>
   </data>
-  <data name="Nav_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
-    <value>Startup</value>
-    <comment>Tooltip for the "startup" menu item.</comment>
-  </data>
   <data name="Nav_OpenJSON.Content" xml:space="preserve">
     <value>Open JSON file</value>
     <comment>Header for a menu item. This opens the JSON file that is used to log the app's settings.</comment>
@@ -586,26 +570,14 @@
     <value>Defaults</value>
     <comment>Header for the "defaults" menu item. This navigates to a page that lets you see and modify settings that affect profiles. This is the lowest layer of profile settings that all other profile settings are based on. If a profile doesn't define a setting, this page is responsible for figuring out what that setting is supposed to be.</comment>
   </data>
-  <data name="Nav_ProfileDefaults.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
-    <value>Defaults</value>
-    <comment>Tooltip for the "profile defaults" menu item.</comment>
-  </data>
   <data name="Nav_Rendering.Content" xml:space="preserve">
     <value>Rendering</value>
     <comment>Header for the "rendering" menu item. This navigates to a page that lets you see and modify settings related to the app's rendering of text in the terminal.</comment>
   </data>
-  <data name="Nav_Rendering.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
-    <value>Rendering</value>
-    <comment>Tooltip for the "rendering" menu item.</comment>
-  </data>
   <data name="Nav_Actions.Content" xml:space="preserve">
     <value>Actions</value>
     <comment>Header for the "actions" menu item. This navigates to a page that lets you see and modify commands, key bindings, and actions that can be done in the app.</comment>
   </data>
-  <data name="Nav_Actions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
-    <value>Actions</value>
-    <comment>Tooltip for the "actions" menu item.</comment>
-  </data>
   <data name="Profile_OpacitySlider.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
     <value>Background opacity</value>
     <comment>Name for a control to determine the level of opacity for the background of the control. The user can choose to make the background of the app more or less opaque.</comment>
@@ -1585,4 +1557,4 @@
     <value>Set as default</value>
     <comment>Text label for a button that, when invoked, sets the selected color scheme as the default scheme to use.</comment>
   </data>
-</root>
+</root>
\ No newline at end of file
diff --git a/src/cascadia/TerminalSettingsEditor/SettingContainer.cpp b/src/cascadia/TerminalSettingsEditor/SettingContainer.cpp
index 50a06792fef..bd8e432911c 100644
--- a/src/cascadia/TerminalSettingsEditor/SettingContainer.cpp
+++ b/src/cascadia/TerminalSettingsEditor/SettingContainer.cpp
@@ -163,7 +163,6 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
             // apply help text as tooltip and full description (automation property)
             if (const auto& helpText{ HelpText() }; !helpText.empty())
             {
-                Controls::ToolTipService::SetToolTip(base, box_value(helpText));
                 Automation::AutomationProperties::SetFullDescription(base, helpText);
             }
             else


Test patch: