| Index: ash/system/tray/tray_event_filter.cc
|
| diff --git a/ash/system/tray/tray_event_filter.cc b/ash/system/tray/tray_event_filter.cc
|
| index 43f142b4cd7e4ee240918cf5f1d0762bdfb37538..873e7df1e7b615266e3df883a81bc2aeb2fb23d5 100644
|
| --- a/ash/system/tray/tray_event_filter.cc
|
| +++ b/ash/system/tray/tray_event_filter.cc
|
| @@ -5,10 +5,12 @@
|
| #include "ash/system/tray/tray_event_filter.h"
|
|
|
| #include "ash/public/cpp/shell_window_ids.h"
|
| +#include "ash/shell.h"
|
| #include "ash/shell_port.h"
|
| #include "ash/system/tray/tray_background_view.h"
|
| #include "ash/system/tray/tray_bubble_wrapper.h"
|
| #include "ash/wm/container_finder.h"
|
| +#include "ash/wm/maximize_mode/maximize_mode_controller.h"
|
| #include "ui/aura/window.h"
|
| #include "ui/views/widget/widget.h"
|
|
|
| @@ -73,6 +75,19 @@ void TrayEventFilter::ProcessPressedEvent(const gfx::Point& location_in_screen,
|
|
|
| gfx::Rect bounds = bubble_widget->GetWindowBoundsInScreen();
|
| bounds.Inset(wrapper->bubble_view()->GetBorderInsets());
|
| + // System tray can be dragged to show the bubble if it is in maximize mode.
|
| + // During the drag, the bubble's logical bounds can extend outside of the
|
| + // work area, but its visual bounds are only within the work area. Restrict
|
| + // |bounds| so that events located outside the bubble's visual bounds are
|
| + // treated as outside of the bubble.
|
| + int bubble_container_id =
|
| + wm::GetContainerForWindow(bubble_widget->GetNativeWindow())->id();
|
| + if (Shell::Get()
|
| + ->maximize_mode_controller()
|
| + ->IsMaximizeModeWindowManagerEnabled() &&
|
| + bubble_container_id == kShellWindowId_SettingBubbleContainer) {
|
| + bounds.Intersect(bubble_widget->GetWorkAreaBoundsInScreen());
|
| + }
|
| if (bounds.Contains(location_in_screen))
|
| continue;
|
| if (wrapper->tray()) {
|
|
|