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

Unified Diff: components/exo/surface.h

Issue 2028443002: exo: Implement lazy cursor changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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
Index: components/exo/surface.h
diff --git a/components/exo/surface.h b/components/exo/surface.h
index 63eefabcfb108718a6a3026da7076827857c880f..91ca1c688b71b0dfd0c85266c16c268857cb7d08 100644
--- a/components/exo/surface.h
+++ b/components/exo/surface.h
@@ -7,6 +7,7 @@
#include <list>
#include <memory>
+#include <set>
#include <utility>
#include "base/callback.h"
@@ -39,10 +40,15 @@ class Path;
namespace exo {
class Buffer;
+class Pointer;
class SurfaceDelegate;
class SurfaceObserver;
class Surface;
+// The pointer class is currently the only cursor provider class but this can
+// change in the future when better hardware cursor support is added.
+using CursorProvider = Pointer;
+
// This class owns the SurfaceFactory and keeps track of references to the
// contents of Buffers. It's keeped alive by references from
// release_callbacks_. It's destroyed when its owning Surface is destroyed and
@@ -167,6 +173,14 @@ class Surface : public aura::Window,
// Returns the bounds of the surface area that is not know to be transparent.
gfx::Rect GetNonTransparentBounds() const;
+ // Surface does not own cursor providers. It is the responsibility of the
+ // caller to remove the cursor provider before it is destroyed.
+ void RegisterCursorProvider(CursorProvider* provider);
+ void UnregisterCursorProvider(CursorProvider* provider);
+
+ // Returns true if surface has at least one cursor provider registered.
+ bool HasCursorProvider() const;
+
// Set the surface delegate.
void SetSurfaceDelegate(SurfaceDelegate* delegate);
@@ -305,6 +319,9 @@ class Surface : public aura::Window,
// The compsitor being observer or null if not observing a compositor.
ui::Compositor* compositor_;
+ // Cursor providers. Surface does not own the cursor providers.
+ std::set<CursorProvider*> cursor_providers_;
+
// This can be set to have some functions delegated. E.g. ShellSurface class
// can set this to handle Commit() and apply any double buffered state it
// maintains.
« no previous file with comments | « components/exo/pointer.cc ('k') | components/exo/surface.cc » ('j') | components/exo/surface.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698