1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_NATIVE_CURSOR_MANAGER_H_ 6 #define UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_NATIVE_CURSOR_MANAGER_H_ 7 8 #include <set> 9 10 #include "base/compiler_specific.h" 11 #include "base/memory/scoped_ptr.h" 12 #include "ui/views/views_export.h" 13 #include "ui/wm/core/native_cursor_manager.h" 14 15 namespace aura { 16 class WindowTreeHost; 17 } 18 19 namespace ui { 20 class CursorLoader; 21 } 22 23 namespace wm { 24 class NativeCursorManagerDelegate; 25 } 26 27 namespace views { 28 class DesktopCursorLoaderUpdater; 29 30 // A NativeCursorManager that performs the desktop-specific setting of cursor 31 // state. Similar to AshNativeCursorManager, it also communicates these changes 32 // to all root windows. 33 class VIEWS_EXPORT DesktopNativeCursorManager 34 : public wm::NativeCursorManager { 35 public: 36 DesktopNativeCursorManager( 37 scoped_ptr<DesktopCursorLoaderUpdater> cursor_loader_updater); 38 virtual ~DesktopNativeCursorManager(); 39 40 // Builds a cursor and sets the internal platform representation. 41 gfx::NativeCursor GetInitializedCursor(int type); 42 43 // Adds |host| to the set |hosts_|. 44 void AddHost(aura::WindowTreeHost* host); 45 46 // Removes |host| from the set |hosts_|. 47 void RemoveHost(aura::WindowTreeHost* host); 48 49 private: 50 // Overridden from wm::NativeCursorManager: 51 virtual void SetDisplay( 52 const gfx::Display& display, 53 wm::NativeCursorManagerDelegate* delegate) OVERRIDE; 54 virtual void SetCursor( 55 gfx::NativeCursor cursor, 56 wm::NativeCursorManagerDelegate* delegate) OVERRIDE; 57 virtual void SetVisibility( 58 bool visible, 59 wm::NativeCursorManagerDelegate* delegate) OVERRIDE; 60 virtual void SetCursorSet( 61 ui::CursorSetType cursor_set, 62 wm::NativeCursorManagerDelegate* delegate) OVERRIDE; 63 virtual void SetMouseEventsEnabled( 64 bool enabled, 65 wm::NativeCursorManagerDelegate* delegate) OVERRIDE; 66 67 // The set of hosts to notify of changes in cursor state. 68 typedef std::set<aura::WindowTreeHost*> Hosts; 69 Hosts hosts_; 70 71 scoped_ptr<DesktopCursorLoaderUpdater> cursor_loader_updater_; 72 scoped_ptr<ui::CursorLoader> cursor_loader_; 73 74 DISALLOW_COPY_AND_ASSIGN(DesktopNativeCursorManager); 75 }; 76 77 } // namespace views 78 79 #endif // UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_NATIVE_CURSOR_MANAGER_H_ 80 81