Index: chrome/browser/chromeos/system_key_event_listener.cc |
diff --git a/chrome/browser/chromeos/system_key_event_listener.cc b/chrome/browser/chromeos/system_key_event_listener.cc |
index f20f5dc7dbe87257a94e071a39577cf0df9187cd..6f356631c79a8cdc5e0cf720aba25aaee5752fd1 100644 |
--- a/chrome/browser/chromeos/system_key_event_listener.cc |
+++ b/chrome/browser/chromeos/system_key_event_listener.cc |
@@ -42,6 +42,7 @@ SystemKeyEventListener::SystemKeyEventListener() |
key_f8_ = XKeysymToKeycode(GDK_DISPLAY(), XK_F8); |
key_f9_ = XKeysymToKeycode(GDK_DISPLAY(), XK_F9); |
key_f10_ = XKeysymToKeycode(GDK_DISPLAY(), XK_F10); |
+ key_esc_ = XKeysymToKeycode(GDK_DISPLAY(), XK_Escape); |
if (key_volume_mute_) |
GrabKey(key_volume_mute_, 0); |
@@ -52,6 +53,7 @@ SystemKeyEventListener::SystemKeyEventListener() |
GrabKey(key_f8_, 0); |
GrabKey(key_f9_, 0); |
GrabKey(key_f10_, 0); |
+ GrabKey(key_esc_, 0); |
if (!XkbSelectEvents(GDK_DISPLAY(), XkbUseCoreKbd, |
XkbIndicatorStateNotifyMask, |
@@ -216,6 +218,9 @@ bool SystemKeyEventListener::ProcessedXEvent(XEvent* xevent) { |
UserMetrics::RecordAction(UserMetricsAction("Accel_VolumeUp_F10")); |
OnVolumeUp(); |
return true; |
+ } else if (keycode == key_esc_ && IsBubbleShown()) { |
+ HideBubble(); |
+ return true; |
} |
} |
} |
@@ -223,4 +228,16 @@ bool SystemKeyEventListener::ProcessedXEvent(XEvent* xevent) { |
return false; |
} |
+// static |
+bool SystemKeyEventListener::IsBubbleShown() { |
+ return BrightnessBubble::GetInstance()->IsShown() || |
+ VolumeBubble::GetInstance()->IsShown(); |
+} |
+ |
+// static |
+void SystemKeyEventListener::HideBubble() { |
+ BrightnessBubble::GetInstance()->HideBubble(); |
+ VolumeBubble::GetInstance()->HideBubble(); |
+} |
+ |
} // namespace chromeos |