diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-26 18:12:06 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-26 18:12:06 +0000 |
commit | d525dfd45eeb3f6e5172f7d0d194a4cac43204d2 (patch) | |
tree | d5726beb313bac9f70568e7b4b470dc5a873151c /ui/wm | |
parent | 00dde4c3d606d2d989df81d73b996ce0a1fe1f73 (diff) | |
download | chromium_src-d525dfd45eeb3f6e5172f7d0d194a4cac43204d2.zip chromium_src-d525dfd45eeb3f6e5172f7d0d194a4cac43204d2.tar.gz chromium_src-d525dfd45eeb3f6e5172f7d0d194a4cac43204d2.tar.bz2 |
Move GetCursor() method from WindowDelegate to its own delegate interface CursorDelegate.
R=sky@chromium.org
http://crbug.com/308845
Review URL: https://codereview.chromium.org/211733003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@259631 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/wm')
-rw-r--r-- | ui/wm/core/compound_event_filter.cc | 5 | ||||
-rw-r--r-- | ui/wm/public/cursor_delegate.cc | 24 | ||||
-rw-r--r-- | ui/wm/public/cursor_delegate.h | 35 | ||||
-rw-r--r-- | ui/wm/wm.gyp | 2 |
4 files changed, 65 insertions, 1 deletions
diff --git a/ui/wm/core/compound_event_filter.cc b/ui/wm/core/compound_event_filter.cc index edb7146..6efafea 100644 --- a/ui/wm/core/compound_event_filter.cc +++ b/ui/wm/core/compound_event_filter.cc @@ -15,6 +15,7 @@ #include "ui/base/hit_test.h" #include "ui/events/event.h" #include "ui/wm/public/activation_client.h" +#include "ui/wm/public/cursor_delegate.h" #include "ui/wm/public/drag_drop_client.h" #if defined(OS_CHROMEOS) && defined(USE_X11) @@ -158,7 +159,9 @@ void CompoundEventFilter::UpdateCursor(aura::Window* target, aura::client::CursorClient* cursor_client = aura::client::GetCursorClient(root_window); if (cursor_client) { - gfx::NativeCursor cursor = target->GetCursor(event->location()); + CursorDelegate* delegate = GetCursorDelegate(target); + gfx::NativeCursor cursor = delegate ? + delegate->GetCursorForPoint(event->location()) : gfx::kNullCursor; if ((event->flags() & ui::EF_IS_NON_CLIENT)) { if (target->delegate()) { int window_component = diff --git a/ui/wm/public/cursor_delegate.cc b/ui/wm/public/cursor_delegate.cc new file mode 100644 index 0000000..bea259d --- /dev/null +++ b/ui/wm/public/cursor_delegate.cc @@ -0,0 +1,24 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/wm/public/cursor_delegate.h" + +#include "ui/aura/window.h" +#include "ui/aura/window_property.h" + +DECLARE_WINDOW_PROPERTY_TYPE(wm::CursorDelegate*); + +namespace wm { + +DEFINE_LOCAL_WINDOW_PROPERTY_KEY(CursorDelegate*, kCursorDelegateKey, NULL); + +void SetCursorDelegate(aura::Window* window, CursorDelegate* delegate) { + window->SetProperty(kCursorDelegateKey, delegate); +} + +CursorDelegate* GetCursorDelegate(aura::Window* window) { + return window ? window->GetProperty(kCursorDelegateKey) : NULL; +} + +} // namespace wm diff --git a/ui/wm/public/cursor_delegate.h b/ui/wm/public/cursor_delegate.h new file mode 100644 index 0000000..1acf4d7 --- /dev/null +++ b/ui/wm/public/cursor_delegate.h @@ -0,0 +1,35 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_WM_PUBLIC_CURSOR_DELEGATE_H_ +#define UI_WM_PUBLIC_CURSOR_DELEGATE_H_ + +#include "ui/gfx/native_widget_types.h" +#include "ui/wm/core/wm_core_export.h" + +namespace aura { +class Window; +} + +namespace gfx { +class Point; +} + +namespace wm { + +class WM_CORE_EXPORT CursorDelegate { + public: + virtual gfx::NativeCursor GetCursorForPoint(const gfx::Point& point) = 0; + + protected: + virtual ~CursorDelegate() {} +}; + +WM_CORE_EXPORT void SetCursorDelegate(aura::Window* window, + CursorDelegate* delegate); +WM_CORE_EXPORT CursorDelegate* GetCursorDelegate(aura::Window* window); + +} // namespace wm + +#endif // UI_WM_PUBLIC_CURSOR_DELEGATE_H_ diff --git a/ui/wm/wm.gyp b/ui/wm/wm.gyp index a1960ec..cccadc0 100644 --- a/ui/wm/wm.gyp +++ b/ui/wm/wm.gyp @@ -85,6 +85,8 @@ 'core/wm_core_switches.h', 'core/wm_state.cc', 'core/wm_state.h', + 'public/cursor_delegate.cc', + 'public/cursor_delegate.h', ], }, { |