Commit e48b35f6 authored by David Black's avatar David Black Committed by Chromium LUCI CQ

Fix tooltip behaviors in holding space.

This CL fixes tooltips for:

- Holding space tray
- Holding space chips
- Holding space screen captures

Previously tooltips did not work because descendant views were
obstructing the views that implemented the tool tipbehavior or, in
the case of screen capture views, because tooltips had not previously
been implemented.

Bug: 1162050, 1164333
Change-Id: If924ff9e6e6edaa9b2d889c4b46c1180a5844f20
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2618476Reviewed-by: default avatarToni Baržić <tbarzic@chromium.org>
Commit-Queue: David Black <dmblack@google.com>
Cr-Commit-Position: refs/heads/master@{#841745}
parent 634bf431
......@@ -172,6 +172,13 @@ HoldingSpaceItemChipView::HoldingSpaceItemChipView(
HoldingSpaceItemChipView::~HoldingSpaceItemChipView() = default;
views::View* HoldingSpaceItemChipView::GetTooltipHandlerForPoint(
const gfx::Point& point) {
// Tooltips for this view are handled by `label_`, which will only show
// tooltips if the underlying text has been elided due to insufficient space.
return HitTestPoint(point) ? label_ : nullptr;
}
void HoldingSpaceItemChipView::OnHoldingSpaceItemUpdated(
const HoldingSpaceItem* item) {
HoldingSpaceItemView::OnHoldingSpaceItemUpdated(item);
......
......@@ -38,6 +38,7 @@ class ASH_EXPORT HoldingSpaceItemChipView : public HoldingSpaceItemView {
class LabelMaskLayerOwner;
// HoldingSpaceItemView:
views::View* GetTooltipHandlerForPoint(const gfx::Point& point) override;
void OnHoldingSpaceItemUpdated(const HoldingSpaceItem* item) override;
void OnPinVisiblityChanged(bool pin_visible) override;
......
......@@ -66,6 +66,24 @@ HoldingSpaceItemScreenCaptureView::HoldingSpaceItemScreenCaptureView(
HoldingSpaceItemScreenCaptureView::~HoldingSpaceItemScreenCaptureView() =
default;
views::View* HoldingSpaceItemScreenCaptureView::GetTooltipHandlerForPoint(
const gfx::Point& point) {
// Tooltip events should be handled top level, not by descendents.
return HitTestPoint(point) ? this : nullptr;
}
base::string16 HoldingSpaceItemScreenCaptureView::GetTooltipText(
const gfx::Point& point) const {
return item()->text();
}
void HoldingSpaceItemScreenCaptureView::OnHoldingSpaceItemUpdated(
const HoldingSpaceItem* item) {
HoldingSpaceItemView::OnHoldingSpaceItemUpdated(item);
if (this->item() == item)
TooltipTextChanged();
}
void HoldingSpaceItemScreenCaptureView::UpdateImage() {
image_->SetImage(
item()->image().GetImageSkia(kHoldingSpaceScreenCaptureSize));
......
......@@ -30,6 +30,11 @@ class ASH_EXPORT HoldingSpaceItemScreenCaptureView
~HoldingSpaceItemScreenCaptureView() override;
private:
// HoldingSpaceItemView:
views::View* GetTooltipHandlerForPoint(const gfx::Point& point) override;
base::string16 GetTooltipText(const gfx::Point& point) const override;
void OnHoldingSpaceItemUpdated(const HoldingSpaceItem* item) override;
void UpdateImage();
// Overlays a play icon over `image_`.
......
......@@ -59,7 +59,6 @@ std::unique_ptr<views::ImageView> CreateDefaultTrayIcon() {
kHoldingSpaceIcon, kHoldingSpaceTrayIconSize,
AshColorProvider::Get()->GetContentLayerColor(
AshColorProvider::ContentLayerType::kIconColorPrimary)));
icon->SetTooltipText(l10n_util::GetStringUTF16(IDS_ASH_HOLDING_SPACE_TITLE));
icon->SetPreferredSize(gfx::Size(kTrayItemSize, kTrayItemSize));
return icon;
}
......@@ -111,11 +110,18 @@ base::string16 HoldingSpaceTray::GetAccessibleNameForTray() {
return l10n_util::GetStringUTF16(IDS_ASH_HOLDING_SPACE_A11Y_NAME);
}
views::View* HoldingSpaceTray::GetTooltipHandlerForPoint(
const gfx::Point& point) {
// Tooltip events should be handled top level, not by descendents.
return HitTestPoint(point) ? this : nullptr;
}
base::string16 HoldingSpaceTray::GetTooltipText(const gfx::Point& point) const {
return l10n_util::GetStringUTF16(IDS_ASH_HOLDING_SPACE_TITLE);
}
void HoldingSpaceTray::HandleLocaleChange() {
default_tray_icon_->SetTooltipText(
l10n_util::GetStringUTF16(IDS_ASH_HOLDING_SPACE_TITLE));
if (previews_tray_icon_)
previews_tray_icon_->OnLocaleChanged();
TooltipTextChanged();
}
void HoldingSpaceTray::HideBubbleWithView(const TrayBubbleView* bubble_view) {}
......
......@@ -58,6 +58,8 @@ class ASH_EXPORT HoldingSpaceTray : public TrayBackgroundView,
// TrayBackgroundView:
void ClickedOutsideBubble() override;
base::string16 GetAccessibleNameForTray() override;
views::View* GetTooltipHandlerForPoint(const gfx::Point& point) override;
base::string16 GetTooltipText(const gfx::Point& point) const override;
void HandleLocaleChange() override;
void HideBubbleWithView(const TrayBubbleView* bubble_view) override;
void AnchorUpdated() override;
......
......@@ -121,15 +121,6 @@ void HoldingSpaceTrayIcon::Clear() {
removed_previews_.clear();
}
void HoldingSpaceTrayIcon::OnLocaleChanged() {
TooltipTextChanged();
}
base::string16 HoldingSpaceTrayIcon::GetTooltipText(
const gfx::Point& point) const {
return l10n_util::GetStringUTF16(IDS_ASH_HOLDING_SPACE_TITLE);
}
int HoldingSpaceTrayIcon::GetHeightForWidth(int width) const {
// The parent for this view (`TrayContainer`) uses a `BoxLayout` for its
// `LayoutManager`. When the shelf orientation is vertical, the `BoxLayout`
......
......@@ -43,9 +43,6 @@ class ASH_EXPORT HoldingSpaceTrayIcon : public views::View,
// 4. Animate new items in.
void UpdatePreviews(const std::vector<const HoldingSpaceItem*> items);
// Invoked when the system locale has changed.
void OnLocaleChanged();
// Clears the icon.
void Clear();
......@@ -63,7 +60,6 @@ class ASH_EXPORT HoldingSpaceTrayIcon : public views::View,
class ResizeAnimation;
// views::View:
base::string16 GetTooltipText(const gfx::Point& point) const override;
int GetHeightForWidth(int width) const override;
gfx::Size CalculatePreferredSize() const override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment