Index: ash/accelerators/accelerator_dispatcher.cc |
diff --git a/ash/accelerators/accelerator_dispatcher.cc b/ash/accelerators/accelerator_dispatcher.cc |
index 8b5db500b7687b9ed120b473bfff5250dfb0902f..fe194f32b678f77805ee6c21da65942ee40d0ba4 100644 |
--- a/ash/accelerators/accelerator_dispatcher.cc |
+++ b/ash/accelerators/accelerator_dispatcher.cc |
@@ -4,13 +4,8 @@ |
#include "ash/accelerators/accelerator_dispatcher.h" |
-#if defined(USE_X11) |
-#include <X11/Xlib.h> |
-#endif // defined(USE_X11) |
- |
#include "ash/accelerators/accelerator_controller.h" |
#include "ash/shell.h" |
-#include "ui/aura/env.h" |
#include "ui/aura/window_event_dispatcher.h" |
#include "ui/base/accelerators/accelerator.h" |
#include "ui/events/event.h" |
@@ -21,26 +16,6 @@ |
namespace ash { |
namespace { |
-const int kModifierMask = (ui::EF_SHIFT_DOWN | |
- ui::EF_CONTROL_DOWN | |
- ui::EF_ALT_DOWN); |
-#if defined(OS_WIN) |
-bool IsKeyEvent(const MSG& msg) { |
- return |
- msg.message == WM_KEYDOWN || msg.message == WM_SYSKEYDOWN || |
- msg.message == WM_KEYUP || msg.message == WM_SYSKEYUP; |
-} |
-#elif defined(USE_X11) |
-bool IsKeyEvent(const XEvent* xev) { |
- return xev->type == KeyPress || xev->type == KeyRelease; |
-} |
-#elif defined(USE_OZONE) |
-bool IsKeyEvent(const base::NativeEvent& native_event) { |
- const ui::KeyEvent* event = static_cast<const ui::KeyEvent*>(native_event); |
- return event->IsKeyEvent(); |
-} |
-#endif |
- |
bool IsPossibleAcceleratorNotForMenu(const ui::KeyEvent& key_event) { |
// For shortcuts generated by Ctrl or Alt plus a letter, number or |
// the tab key, we want to exit the context menu first and then |
@@ -60,52 +35,36 @@ bool IsPossibleAcceleratorNotForMenu(const ui::KeyEvent& key_event) { |
} // namespace |
-AcceleratorDispatcher::AcceleratorDispatcher( |
- base::MessagePumpDispatcher* nested_dispatcher) |
- : nested_dispatcher_(nested_dispatcher) { |
-} |
- |
-AcceleratorDispatcher::~AcceleratorDispatcher() { |
-} |
+bool AcceleratorDispatcher::MenuClosedForPossibleAccelerator( |
+ const ui::KeyEvent& key_event) { |
+ if (!IsPossibleAcceleratorNotForMenu(key_event)) |
+ return false; |
-uint32_t AcceleratorDispatcher::Dispatch(const base::NativeEvent& event) { |
- if (IsKeyEvent(event)) { |
- ui::KeyEvent key_event(event, false); |
- if (IsPossibleAcceleratorNotForMenu(key_event)) { |
- if (views::MenuController* menu_controller = |
+ if (views::MenuController* menu_controller = |
views::MenuController::GetActiveInstance()) { |
- menu_controller->CancelAll(); |
-#if defined(USE_X11) |
- XPutBackEvent(event->xany.display, event); |
-#else |
- NOTIMPLEMENTED() << " Repost NativeEvent here."; |
-#endif |
- return POST_DISPATCH_QUIT_LOOP; |
- } |
- } |
- |
- ash::AcceleratorController* accelerator_controller = |
- ash::Shell::GetInstance()->accelerator_controller(); |
- if (accelerator_controller) { |
- ui::Accelerator accelerator(key_event.key_code(), |
- key_event.flags() & kModifierMask); |
- if (key_event.type() == ui::ET_KEY_RELEASED) |
- accelerator.set_type(ui::ET_KEY_RELEASED); |
- // Fill out context object so AcceleratorController will know what |
- // was the previous accelerator or if the current accelerator is repeated. |
- Shell::GetInstance()->accelerator_controller()->context()-> |
- UpdateContext(accelerator); |
- if (accelerator_controller->Process(accelerator)) |
- return POST_DISPATCH_NONE; |
- } |
- |
- return nested_dispatcher_ |
- ? nested_dispatcher_->Dispatch(key_event.native_event()) |
- : POST_DISPATCH_PERFORM_DEFAULT; |
+ menu_controller->CancelAll(); |
+ return true; |
} |
+ return false; |
+} |
- return nested_dispatcher_ ? nested_dispatcher_->Dispatch(event) |
- : POST_DISPATCH_PERFORM_DEFAULT; |
+bool AcceleratorDispatcher::AcceleratorProcessedForKeyEvent( |
+ const ui::KeyEvent& key_event) { |
+ ash::AcceleratorController* accelerator_controller = |
+ ash::Shell::GetInstance()->accelerator_controller(); |
+ if (!accelerator_controller) |
+ return false; |
+ const int kModifierMask = |
+ (ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN); |
+ ui::Accelerator accelerator(key_event.key_code(), |
+ key_event.flags() & kModifierMask); |
+ if (key_event.type() == ui::ET_KEY_RELEASED) |
+ accelerator.set_type(ui::ET_KEY_RELEASED); |
+ // Fill out context object so AcceleratorController will know what |
+ // was the previous accelerator or if the current accelerator is repeated. |
+ Shell::GetInstance()->accelerator_controller()->context()->UpdateContext( |
+ accelerator); |
+ return accelerator_controller->Process(accelerator); |
} |
} // namespace ash |