Index: ash/wm/overlay_event_filter.cc |
diff --git a/ash/wm/partial_screenshot_event_filter.cc b/ash/wm/overlay_event_filter.cc |
similarity index 51% |
rename from ash/wm/partial_screenshot_event_filter.cc |
rename to ash/wm/overlay_event_filter.cc |
index f70ae05b8bc26d146adb1a215b5005047bba820a..f575fe455dab19c4a9b1a74847a5fcda352778d1 100644 |
--- a/ash/wm/partial_screenshot_event_filter.cc |
+++ b/ash/wm/overlay_event_filter.cc |
@@ -2,7 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "ash/wm/partial_screenshot_event_filter.h" |
+#include "ash/wm/overlay_event_filter.h" |
#include "ash/wm/partial_screenshot_view.h" |
#include "ui/aura/window.h" |
@@ -12,80 +12,85 @@ |
namespace ash { |
namespace internal { |
-PartialScreenshotEventFilter::PartialScreenshotEventFilter() |
- : view_(NULL) { |
+OverlayEventFilter::OverlayEventFilter() |
+ : delegate_(NULL) { |
} |
-PartialScreenshotEventFilter::~PartialScreenshotEventFilter() { |
- view_ = NULL; |
+OverlayEventFilter::~OverlayEventFilter() { |
+ delegate_ = NULL; |
} |
-bool PartialScreenshotEventFilter::PreHandleKeyEvent( |
+bool OverlayEventFilter::PreHandleKeyEvent( |
aura::Window* target, aura::KeyEvent* event) { |
- if (!view_) |
+ if (!delegate_) |
return false; |
// Do not consume a translated key event which is generated by an IME (e.g., |
// ui::VKEY_PROCESSKEY) since the key event is generated in response to a key |
- // press or release before showing the screenshot view. This is important not |
- // to confuse key event handling JavaScript code in a page. |
+ // press or release before showing the ovelay. This is important not to |
+ // confuse key event handling JavaScript code in a page. |
if (event->type() == ui::ET_TRANSLATED_KEY_PRESS || |
event->type() == ui::ET_TRANSLATED_KEY_RELEASE) { |
return false; |
} |
- if (event->key_code() == ui::VKEY_ESCAPE) |
+ if (delegate_ && delegate_->IsCancelingKeyEvent(event)) |
Cancel(); |
+ // Handle key events only when they are sent to a child of the delegate's |
+ // window. |
+ if (delegate_ && delegate_->GetWindow()->Contains(target)) |
+ target->delegate()->OnKeyEvent(event); |
+ |
// Always handled: other windows shouldn't receive input while we're |
- // taking a screenshot. |
+ // displaying an overlay. |
return true; |
} |
-bool PartialScreenshotEventFilter::PreHandleMouseEvent( |
+bool OverlayEventFilter::PreHandleMouseEvent( |
aura::Window* target, aura::MouseEvent* event) { |
- if (view_) { |
- DCHECK_EQ(target, view_->GetWidget()->GetNativeWindow()); |
+ if (delegate_) { |
+ DCHECK_EQ(target, delegate_->GetWindow()); |
target->delegate()->OnMouseEvent(event); |
return true; |
} |
return false; // Not handled. |
} |
-ui::TouchStatus PartialScreenshotEventFilter::PreHandleTouchEvent( |
+ui::TouchStatus OverlayEventFilter::PreHandleTouchEvent( |
aura::Window* target, aura::TouchEvent* event) { |
return ui::TOUCH_STATUS_UNKNOWN; // Not handled. |
} |
-ui::GestureStatus PartialScreenshotEventFilter::PreHandleGestureEvent( |
+ui::GestureStatus OverlayEventFilter::PreHandleGestureEvent( |
aura::Window* target, aura::GestureEvent* event) { |
return ui::GESTURE_STATUS_UNKNOWN; // Not handled. |
} |
-void PartialScreenshotEventFilter::OnLoginStateChanged( |
+void OverlayEventFilter::OnLoginStateChanged( |
user::LoginStatus status) { |
Cancel(); |
} |
-void PartialScreenshotEventFilter::OnAppTerminating() { |
+void OverlayEventFilter::OnAppTerminating() { |
Cancel(); |
} |
-void PartialScreenshotEventFilter::OnLockStateChanged(bool locked) { |
+void OverlayEventFilter::OnLockStateChanged(bool locked) { |
Cancel(); |
} |
-void PartialScreenshotEventFilter::Activate(PartialScreenshotView* view) { |
- view_ = view; |
+void OverlayEventFilter::Activate(Delegate* delegate) { |
+ delegate_ = delegate; |
} |
-void PartialScreenshotEventFilter::Deactivate() { |
- view_ = NULL; |
+void OverlayEventFilter::Deactivate() { |
+ delegate_ = NULL; |
} |
-void PartialScreenshotEventFilter::Cancel() { |
- if (view_) |
- view_->Cancel(); |
+void OverlayEventFilter::Cancel() { |
+ if (delegate_) |
+ delegate_->Cancel(); |
} |
} // namespace internal |
} // namespace ash |