Allow the entire Tab to be hit testable again (#11369)

DESPITE the fact that there's a `Background()` API that we
could just call like:

```c++
  TabViewItem().Background(deselectedTabBrush);
```

We actually can't, because it will make the part of the tab that
doesn't contain the text totally transparent to hit tests. So we
actually _do_ still need to set `TabViewItemHeaderBackground` manually.

* Regressed in #11240
* Root cause up in https://github.com/microsoft/microsoft-ui-xaml/pull/3769
* [x] closes #11294
This commit is contained in:
Mike Griese 2021-09-29 16:57:58 -05:00 committed by GitHub
parent d25ca26142
commit ba239026f3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1460,7 +1460,16 @@ namespace winrt::TerminalApp::implementation
// TabViewItem().Background() only sets the color of the tab background // TabViewItem().Background() only sets the color of the tab background
// when the TabViewItem is unselected. So we still need to set the other // when the TabViewItem is unselected. So we still need to set the other
// properties ourselves. // properties ourselves.
TabViewItem().Background(deselectedTabBrush); //
// GH#11294: DESPITE the fact that there's a Background() API that we
// could just call like:
//
// TabViewItem().Background(deselectedTabBrush);
//
// We actually can't, because it will make the part of the tab that
// doesn't contain the text totally transparent to hit tests. So we
// actually _do_ still need to set TabViewItemHeaderBackground manually.
TabViewItem().Resources().Insert(winrt::box_value(L"TabViewItemHeaderBackground"), deselectedTabBrush);
TabViewItem().Resources().Insert(winrt::box_value(L"TabViewItemHeaderBackgroundSelected"), selectedTabBrush); TabViewItem().Resources().Insert(winrt::box_value(L"TabViewItemHeaderBackgroundSelected"), selectedTabBrush);
TabViewItem().Resources().Insert(winrt::box_value(L"TabViewItemHeaderBackgroundPointerOver"), hoverTabBrush); TabViewItem().Resources().Insert(winrt::box_value(L"TabViewItemHeaderBackgroundPointerOver"), hoverTabBrush);
TabViewItem().Resources().Insert(winrt::box_value(L"TabViewItemHeaderBackgroundPressed"), selectedTabBrush); TabViewItem().Resources().Insert(winrt::box_value(L"TabViewItemHeaderBackgroundPressed"), selectedTabBrush);
@ -1506,6 +1515,7 @@ namespace winrt::TerminalApp::implementation
void TerminalTab::_ClearTabBackgroundColor() void TerminalTab::_ClearTabBackgroundColor()
{ {
winrt::hstring keys[] = { winrt::hstring keys[] = {
L"TabViewItemHeaderBackground",
L"TabViewItemHeaderBackgroundSelected", L"TabViewItemHeaderBackgroundSelected",
L"TabViewItemHeaderBackgroundPointerOver", L"TabViewItemHeaderBackgroundPointerOver",
L"TabViewItemHeaderForeground", L"TabViewItemHeaderForeground",
@ -1526,9 +1536,6 @@ namespace winrt::TerminalApp::implementation
} }
} }
// Clear out the Background.
TabViewItem().Background(nullptr);
_RefreshVisualState(); _RefreshVisualState();
_colorCleared(); _colorCleared();
} }