| 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 8d2368d3a841631ab93aa8a3557ada915c1ed735..8efebc72ccfa6db5ec6b957adb84842cb5f6b59b 100644
|
| --- a/ash/system/tray/tray_event_filter.cc
|
| +++ b/ash/system/tray/tray_event_filter.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "ash/system/tray/tray_event_filter.h"
|
|
|
| +#include "ash/container_delegate.h"
|
| #include "ash/root_window_controller.h"
|
| #include "ash/shelf/shelf_layout_manager.h"
|
| #include "ash/shell.h"
|
| @@ -40,35 +41,32 @@ void TrayEventFilter::RemoveWrapper(TrayBubbleWrapper* wrapper) {
|
| }
|
|
|
| void TrayEventFilter::OnMousePressed(const ui::MouseEvent& event,
|
| - const gfx::Point& location_in_screen) {
|
| - ProcessLocatedEvent(event, location_in_screen);
|
| + const gfx::Point& location_in_screen,
|
| + views::Widget* target) {
|
| + ProcessPressedEvent(event, location_in_screen, target);
|
| }
|
|
|
| void TrayEventFilter::OnTouchPressed(const ui::TouchEvent& event,
|
| - const gfx::Point& location_in_screen) {
|
| - ProcessLocatedEvent(event, location_in_screen);
|
| + const gfx::Point& location_in_screen,
|
| + views::Widget* target) {
|
| + ProcessPressedEvent(event, location_in_screen, target);
|
| }
|
|
|
| -void TrayEventFilter::ProcessLocatedEvent(
|
| +void TrayEventFilter::ProcessPressedEvent(
|
| const ui::LocatedEvent& event,
|
| - const gfx::Point& location_in_screen) {
|
| - // TODO(jamescook): Rewrite this to avoid using event.target() as that will
|
| - // always be null on mus. http://crbug.com/608570
|
| - if (event.target()) {
|
| - aura::Window* target = static_cast<aura::Window*>(event.target());
|
| - // Don't process events that occurred inside an embedded menu.
|
| - RootWindowController* root_controller =
|
| - GetRootWindowController(target->GetRootWindow());
|
| - if (root_controller &&
|
| - root_controller->GetContainer(kShellWindowId_MenuContainer)
|
| - ->Contains(target)) {
|
| + const gfx::Point& location_in_screen,
|
| + views::Widget* target) {
|
| + LOG(ERROR) << "JAMES ProcessPressedEvent at "
|
| + << location_in_screen.ToString() << " target name " << (target ? target->GetName() : "none");
|
| +
|
| + if (target) {
|
| + ContainerDelegate* container_delegate = Shell::GetInstance()->container_delegate();
|
| + if (container_delegate->IsInMenuContainer(target)) {
|
| + LOG(ERROR) << "JAMES ProcessPressedEvent hit menu";
|
| return;
|
| }
|
| - // Don't process events that occurred inside the status area widget and
|
| - // a popup notification from message center.
|
| - if (root_controller &&
|
| - root_controller->GetContainer(kShellWindowId_StatusContainer)
|
| - ->Contains(target)) {
|
| + if (container_delegate->IsInStatusContainer(target)) {
|
| + LOG(ERROR) << "JAMES ProcessPressedEvent hit status";
|
| return;
|
| }
|
| }
|
| @@ -84,14 +82,18 @@ void TrayEventFilter::ProcessLocatedEvent(
|
|
|
| gfx::Rect bounds = bubble_widget->GetWindowBoundsInScreen();
|
| bounds.Inset(wrapper->bubble_view()->GetBorderInsets());
|
| - if (bounds.Contains(location_in_screen))
|
| + if (bounds.Contains(location_in_screen)) {
|
| + LOG(ERROR) << "JAMES clicked in bubble widget";
|
| return;
|
| + }
|
| if (wrapper->tray()) {
|
| // If the user clicks on the parent tray, don't process the event here,
|
| // let the tray logic handle the event and determine show/hide behavior.
|
| bounds = wrapper->tray()->GetBoundsInScreen();
|
| - if (bounds.Contains(location_in_screen))
|
| + if (bounds.Contains(location_in_screen)) {
|
| + LOG(ERROR) << "JAMES click on parent tray";
|
| return;
|
| + }
|
| }
|
| }
|
|
|
| @@ -105,6 +107,7 @@ void TrayEventFilter::ProcessLocatedEvent(
|
| }
|
| for (std::set<TrayBackgroundView*>::iterator iter = trays.begin();
|
| iter != trays.end(); ++iter) {
|
| + LOG(ERROR) << "JAMES ClickedOutsideBubble";
|
| (*iter)->ClickedOutsideBubble();
|
| }
|
| }
|
|
|