summaryrefslogtreecommitdiffstats
path: root/ui/wm
diff options
context:
space:
mode:
authorben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-26 18:12:06 +0000
committerben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-26 18:12:06 +0000
commitd525dfd45eeb3f6e5172f7d0d194a4cac43204d2 (patch)
treed5726beb313bac9f70568e7b4b470dc5a873151c /ui/wm
parent00dde4c3d606d2d989df81d73b996ce0a1fe1f73 (diff)
downloadchromium_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.cc5
-rw-r--r--ui/wm/public/cursor_delegate.cc24
-rw-r--r--ui/wm/public/cursor_delegate.h35
-rw-r--r--ui/wm/wm.gyp2
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',
],
},
{