| Index: ash/accelerators/accelerator_controller.cc
|
| diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc
|
| index f6199cc4e3024597da006da8b2c15bc9c4db337e..7f94f3b172430cb797b2ab6e17efd8f4534801a0 100644
|
| --- a/ash/accelerators/accelerator_controller.cc
|
| +++ b/ash/accelerators/accelerator_controller.cc
|
| @@ -534,6 +534,31 @@ bool AcceleratorController::PerformAction(int action,
|
| // this key combination is reserved for partial screenshot.
|
| return true;
|
| case TOGGLE_APP_LIST:
|
| + if (accelerator.key_code() == ui::VKEY_LWIN) {
|
| + // For bindings on the Search key, activate the binding on press if the
|
| + // Search key is not acting as a modifier. Otherwise, activate it on
|
| + // release.
|
| +
|
| + const ui::KeyboardCode previous_key_code =
|
| + context_.previous_accelerator().key_code();
|
| +
|
| + const bool search_as_function_key =
|
| + Shell::GetInstance()->delegate()->IsSearchKeyActingAsFunctionKey();
|
| + const bool type_pressed = accelerator.type() == ui::ET_KEY_PRESSED;
|
| +
|
| + if (!search_as_function_key && !type_pressed)
|
| + return false;
|
| + if (search_as_function_key && type_pressed)
|
| + return false;
|
| + if (search_as_function_key &&
|
| + // If something else was pressed between the Search key (LWIN)
|
| + // being pressed and released, then ignore the release of the
|
| + // Search key.
|
| + (previous_event_type == ui::ET_KEY_RELEASED ||
|
| + previous_key_code != ui::VKEY_LWIN)) {
|
| + return false;
|
| + }
|
| + }
|
| if (key_code == ui::VKEY_LWIN && shell->delegate())
|
| shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_SEARCH_LWIN);
|
| // When spoken feedback is enabled, we should neither toggle the list nor
|
|
|