diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-01 01:05:07 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-01 01:05:07 +0000 |
commit | ca934bd060255eaa7df05deecb9206b6101faaca (patch) | |
tree | 872d40a5a112de28937dadb5ffaef72d0c836dae /ash | |
parent | 9f1c5060c9d5f2492662b2173884dcaea10e7c4d (diff) | |
download | chromium_src-ca934bd060255eaa7df05deecb9206b6101faaca.zip chromium_src-ca934bd060255eaa7df05deecb9206b6101faaca.tar.gz chromium_src-ca934bd060255eaa7df05deecb9206b6101faaca.tar.bz2 |
Remove dependency to PrimaryRootWindow in ScreenDimmer and SystemGesture
BUG=123160
TEST=no functional change. all tests should pass.
Review URL: https://chromiumcodereview.appspot.com/10446110
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@139942 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r-- | ash/shell.cc | 2 | ||||
-rw-r--r-- | ash/wm/screen_dimmer.cc | 8 | ||||
-rw-r--r-- | ash/wm/screen_dimmer.h | 20 | ||||
-rw-r--r-- | ash/wm/system_gesture_event_filter.cc | 13 | ||||
-rw-r--r-- | ash/wm/system_gesture_event_filter.h | 2 |
5 files changed, 28 insertions, 17 deletions
diff --git a/ash/shell.cc b/ash/shell.cc index 7eac672..5eaebd1 100644 --- a/ash/shell.cc +++ b/ash/shell.cc @@ -795,7 +795,7 @@ void Shell::Init() { video_detector_.reset(new VideoDetector); window_cycle_controller_.reset(new WindowCycleController); monitor_controller_.reset(new internal::MonitorController); - screen_dimmer_.reset(new internal::ScreenDimmer); + screen_dimmer_.reset(new internal::ScreenDimmer(root_window)); } aura::Window* Shell::GetContainer(int container_id) { diff --git a/ash/wm/screen_dimmer.cc b/ash/wm/screen_dimmer.cc index 05c8099..581efc1 100644 --- a/ash/wm/screen_dimmer.cc +++ b/ash/wm/screen_dimmer.cc @@ -25,12 +25,14 @@ const int kDimmingTransitionMs = 200; } // namespace -ScreenDimmer::ScreenDimmer() : currently_dimming_(false) { - Shell::GetPrimaryRootWindow()->AddRootWindowObserver(this); +ScreenDimmer::ScreenDimmer(aura::RootWindow* root_window) + : root_window_(root_window), + currently_dimming_(false) { + root_window_->AddRootWindowObserver(this); } ScreenDimmer::~ScreenDimmer() { - Shell::GetPrimaryRootWindow()->RemoveRootWindowObserver(this); + root_window_->RemoveRootWindowObserver(this); } void ScreenDimmer::SetDimming(bool should_dim) { diff --git a/ash/wm/screen_dimmer.h b/ash/wm/screen_dimmer.h index 2415b58..eeedecc 100644 --- a/ash/wm/screen_dimmer.h +++ b/ash/wm/screen_dimmer.h @@ -12,6 +12,10 @@ #include "base/memory/scoped_ptr.h" #include "ui/aura/root_window_observer.h" +namespace aura { +class RootWindow; +} + namespace ui { class Layer; } @@ -19,11 +23,13 @@ class Layer; namespace ash { namespace internal { -// ScreenDimmer displays a partially-opaque layer above everything else to -// darken the screen. It shouldn't be used for long-term brightness adjustments -// due to performance considerations -- it's only intended for cases where we -// want to briefly dim the screen (e.g. to indicate to the user that we're about -// to suspend a machine that lacks an internal backlight that can be adjusted). +// ScreenDimmer displays a partially-opaque layer above everything +// else in the root window to darken the monitor. It shouldn't be used +// for long-term brightness adjustments due to performance +// considerations -- it's only intended for cases where we want to +// briefly dim the screen (e.g. to indicate to the user that we're +// about to suspend a machine that lacks an internal backlight that +// can be adjusted). class ASH_EXPORT ScreenDimmer : public aura::RootWindowObserver { public: class TestApi { @@ -38,7 +44,7 @@ class ASH_EXPORT ScreenDimmer : public aura::RootWindowObserver { DISALLOW_COPY_AND_ASSIGN(TestApi); }; - ScreenDimmer(); + explicit ScreenDimmer(aura::RootWindow* root_window); virtual ~ScreenDimmer(); // Dim or undim the screen. @@ -51,6 +57,8 @@ class ASH_EXPORT ScreenDimmer : public aura::RootWindowObserver { private: friend class TestApi; + aura::RootWindow* root_window_; + // Partially-opaque layer that's stacked above all of the root window's // children and used to dim the screen. NULL until the first time we dim. scoped_ptr<ui::Layer> dimming_layer_; diff --git a/ash/wm/system_gesture_event_filter.cc b/ash/wm/system_gesture_event_filter.cc index 19b9e10..afdb006 100644 --- a/ash/wm/system_gesture_event_filter.cc +++ b/ash/wm/system_gesture_event_filter.cc @@ -36,7 +36,7 @@ enum SystemGestureStatus { aura::Window* GetTargetForSystemGestureEvent(aura::Window* target) { aura::Window* system_target = target; - if (!system_target || system_target == ash::Shell::GetPrimaryRootWindow()) + if (!system_target || system_target == target->GetRootWindow()) system_target = ash::wm::GetActiveWindow(); if (system_target) system_target = system_target->GetToplevelWindow(); @@ -242,11 +242,11 @@ ui::TouchStatus SystemGestureEventFilter::PreHandleTouchEvent( ui::GestureStatus SystemGestureEventFilter::PreHandleGestureEvent( aura::Window* target, aura::GestureEvent* event) { - if (!target || target == Shell::GetPrimaryRootWindow()) { + if (!target || target == target->GetRootWindow()) { switch (event->type()) { case ui::ET_GESTURE_SCROLL_BEGIN: { gfx::Rect screen = - gfx::Screen::GetPrimaryMonitor().bounds(); + gfx::Screen::GetMonitorNearestWindow(target).bounds(); int overlap_area = screen.width() * overlap_percent_ / 100; orientation_ = SCROLL_ORIENTATION_UNSET; @@ -284,7 +284,7 @@ ui::GestureStatus SystemGestureEventFilter::PreHandleGestureEvent( if (HandleLauncherControl(event)) start_location_ = BEZEL_START_UNSET; } else { - if (HandleDeviceControl(event)) + if (HandleDeviceControl(target, event)) start_location_ = BEZEL_START_UNSET; } } @@ -340,8 +340,9 @@ void SystemGestureEventFilter::ClearGestureHandlerForWindow( window->RemoveObserver(this); } -bool SystemGestureEventFilter::HandleDeviceControl(aura::GestureEvent* event) { - gfx::Rect screen = gfx::Screen::GetPrimaryMonitor().bounds(); +bool SystemGestureEventFilter::HandleDeviceControl(aura::Window* target, + aura::GestureEvent* event) { + gfx::Rect screen = gfx::Screen::GetMonitorNearestWindow(target).bounds(); double percent = 100.0 * (event->y() - screen.y()) / screen.height(); if (percent > 100.0) percent = 100.0; diff --git a/ash/wm/system_gesture_event_filter.h b/ash/wm/system_gesture_event_filter.h index 08a692c..7a86479 100644 --- a/ash/wm/system_gesture_event_filter.h +++ b/ash/wm/system_gesture_event_filter.h @@ -66,7 +66,7 @@ class SystemGestureEventFilter : public aura::EventFilter, // Handle events meant for volume / brightness. Returns true when no further // events from this gesture should be sent. - bool HandleDeviceControl(aura::GestureEvent* event); + bool HandleDeviceControl(aura::Window* target, aura::GestureEvent* event); // Handle events meant for showing the launcher. Returns true when no further // events from this gesture should be sent. |