Use correct horizontal overlap for previews and submenus.

The popup windows for previews and submenus have a slight overlap
with the Picker window. Use the correct overlap view of 4px.

Fixed: b:350772866
Change-Id: I7c80a90eb853b5184f0d9655972061d2fb43c5d4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5681508
Reviewed-by: Jing Wang <jiwan@chromium.org>
Commit-Queue: Darren Shen <shend@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1324071}
diff --git a/ash/picker/views/picker_preview_bubble.cc b/ash/picker/views/picker_preview_bubble.cc
index 36e9e6f..88e1a5d 100644
--- a/ash/picker/views/picker_preview_bubble.cc
+++ b/ash/picker/views/picker_preview_bubble.cc
@@ -29,7 +29,7 @@
 
 constexpr ui::ColorId kBackgroundColor =
     cros_tokens::kCrosSysSystemBaseElevatedOpaque;
-constexpr int kBubbleOverlapOverPicker = 8;
+constexpr int kBubbleOverlapOverPicker = 4;
 constexpr int kPickerBubbleCornerRadius = 12;
 // TODO(b/322899031): Translate these strings.
 constexpr std::u16string_view kLinkLabelText = u"Link";
diff --git a/ash/picker/views/picker_submenu_view.cc b/ash/picker/views/picker_submenu_view.cc
index 5f9472fe..8a2442b 100644
--- a/ash/picker/views/picker_submenu_view.cc
+++ b/ash/picker/views/picker_submenu_view.cc
@@ -27,6 +27,7 @@
 
 constexpr int kSubmenuWidth = 256;
 constexpr auto kInsets = gfx::Insets::VH(8, 0);
+constexpr int kSubmenuHorizontalOverlap = 4;
 
 std::unique_ptr<views::BubbleBorder> CreateBorder() {
   auto border = std::make_unique<views::BubbleBorder>(
@@ -110,7 +111,11 @@
   return Contains(item);
 }
 
-gfx::Rect PickerSubmenuView::GetDesiredBounds(const gfx::Rect& anchor_rect) {
+gfx::Rect PickerSubmenuView::GetDesiredBounds(gfx::Rect anchor_rect) {
+  // Inset the anchor rect so that the submenu overlaps slightly with the
+  // anchor.
+  anchor_rect.Inset(gfx::Insets::VH(0, kSubmenuHorizontalOverlap));
+
   auto* bubble_frame_view = static_cast<views::BubbleFrameView*>(
       GetWidget()->non_client_view()->frame_view());
   gfx::Rect bounds = bubble_frame_view->GetUpdatedWindowBounds(
diff --git a/ash/picker/views/picker_submenu_view.h b/ash/picker/views/picker_submenu_view.h
index 0786759..1c08845 100644
--- a/ash/picker/views/picker_submenu_view.h
+++ b/ash/picker/views/picker_submenu_view.h
@@ -49,7 +49,7 @@
   bool ContainsItem(views::View* item) override;
 
  private:
-  gfx::Rect GetDesiredBounds(const gfx::Rect& anchor_rect);
+  gfx::Rect GetDesiredBounds(gfx::Rect anchor_rect);
 
   // Section which contains the submenu items.
   raw_ptr<PickerSectionView> section_view_;