Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Unified Diff: ash/wm/maximize_mode/maximize_mode_event_blocker.cc

Issue 263813002: Take a screenshot in maximize mode when volume down and power are pressed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: POWER key not defined in windows. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/wm/maximize_mode/maximize_mode_event_blocker.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/wm/maximize_mode/maximize_mode_event_blocker.cc
diff --git a/ash/wm/maximize_mode/maximize_mode_event_blocker.cc b/ash/wm/maximize_mode/maximize_mode_event_blocker.cc
index e283149b6fe66755d368efea094e209f45419b0c..511b085c1b006e6491159c914428acde924e0af3 100644
--- a/ash/wm/maximize_mode/maximize_mode_event_blocker.cc
+++ b/ash/wm/maximize_mode/maximize_mode_event_blocker.cc
@@ -4,6 +4,8 @@
#include "ash/wm/maximize_mode/maximize_mode_event_blocker.h"
+#include "ash/accelerators/accelerator_controller.h"
+#include "ash/screenshot_delegate.h"
#include "ash/shell.h"
#include "base/memory/scoped_ptr.h"
#include "ui/aura/client/cursor_client.h"
@@ -15,7 +17,8 @@ namespace {
// Event targeter to prevent delivery of mouse and touchpad events while
// maximize mode is active. Other events such as touch are passed on to the
-// default targeter.
+// default targeter. Also handles a volume down + power key press to take a
+// screenshot while instantiated.
// TODO(flackr): This should only stop events from the internal keyboard and
// touchpad.
class BlockKeyboardAndTouchpadTargeter : public ui::EventTargeter {
@@ -36,11 +39,15 @@ class BlockKeyboardAndTouchpadTargeter : public ui::EventTargeter {
// as long as this targeter is alive.
ui::EventTargeter* default_targeter_;
+ // True when the volume down key is currently pressed.
+ bool volume_down_pressed_;
+
DISALLOW_COPY_AND_ASSIGN(BlockKeyboardAndTouchpadTargeter);
};
BlockKeyboardAndTouchpadTargeter::BlockKeyboardAndTouchpadTargeter()
- : default_targeter_(NULL) {
+ : default_targeter_(NULL),
+ volume_down_pressed_(false) {
}
BlockKeyboardAndTouchpadTargeter::~BlockKeyboardAndTouchpadTargeter() {
@@ -54,8 +61,25 @@ void BlockKeyboardAndTouchpadTargeter::SetDefaultTargeter(
ui::EventTarget* BlockKeyboardAndTouchpadTargeter::FindTargetForEvent(
ui::EventTarget* root,
ui::Event* event) {
- if (event->HasNativeEvent() && (event->IsMouseEvent() || event->IsKeyEvent()))
+ if (event->HasNativeEvent() && (event->IsMouseEvent() ||
+ event->IsKeyEvent())) {
+#if defined(OS_CHROMEOS)
+ if (event->IsKeyEvent()) {
+ ui::KeyEvent* key_event = static_cast<ui::KeyEvent*>(event);
+ if (key_event->key_code() == ui::VKEY_VOLUME_DOWN) {
+ volume_down_pressed_ = key_event->type() == ui::ET_KEY_PRESSED;
+ } else if (volume_down_pressed_ &&
+ key_event->key_code() == ui::VKEY_POWER &&
+ key_event->type() == ui::ET_KEY_PRESSED) {
+ ScreenshotDelegate* screenshot_delegate = Shell::GetInstance()->
+ accelerator_controller()->screenshot_delegate();
+ if (screenshot_delegate && screenshot_delegate->CanTakeScreenshot())
+ screenshot_delegate->HandleTakeScreenshotForAllRootWindows();
sadrul 2014/05/02 00:59:08 I suspect this will need to be merged with bruthig
flackr 2014/05/07 04:08:44 Now it's just dependent on it, though I suspect al
+ }
+ }
+#endif
return NULL;
+ }
return default_targeter_->FindTargetForEvent(root, event);
}
« no previous file with comments | « ash/wm/maximize_mode/maximize_mode_event_blocker.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698