diff options
Diffstat (limited to 'ui')
-rw-r--r-- | ui/DEPS | 1 | ||||
-rw-r--r-- | ui/aura/client/cursor_client.h | 5 | ||||
-rw-r--r-- | ui/base/cursor/cursor_loader.h | 5 | ||||
-rw-r--r-- | ui/base/cursor/cursor_loader_win.cc | 50 | ||||
-rw-r--r-- | ui/base/cursor/cursor_loader_win.h | 4 | ||||
-rw-r--r-- | ui/base/cursor/cursor_loader_x11.h | 2 | ||||
-rw-r--r-- | ui/views/corewm/compound_event_filter_unittest.cc | 3 | ||||
-rw-r--r-- | ui/views/corewm/cursor_manager.cc | 4 | ||||
-rw-r--r-- | ui/views/corewm/cursor_manager.h | 1 | ||||
-rw-r--r-- | ui/views/corewm/cursor_manager_unittest.cc | 3 | ||||
-rw-r--r-- | ui/views/corewm/native_cursor_manager.h | 5 | ||||
-rw-r--r-- | ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc | 5 | ||||
-rw-r--r-- | ui/views/widget/desktop_aura/desktop_native_cursor_manager.h | 1 |
13 files changed, 78 insertions, 11 deletions
@@ -3,6 +3,7 @@ include_rules = [ "+grit/native_theme_resources.h", "+grit/ui_resources.h", "+grit/ui_strings.h", + "+grit/ui_unscaled_resources.h", "+jni", "+net", "+skia", diff --git a/ui/aura/client/cursor_client.h b/ui/aura/client/cursor_client.h index 8f48430..fb2dde2 100644 --- a/ui/aura/client/cursor_client.h +++ b/ui/aura/client/cursor_client.h @@ -5,6 +5,7 @@ #ifndef UI_AURA_CLIENT_CURSOR_CLIENT_H_ #define UI_AURA_CLIENT_CURSOR_CLIENT_H_ +#include "base/string16.h" #include "ui/aura/aura_export.h" #include "ui/gfx/native_widget_types.h" @@ -55,6 +56,10 @@ class AURA_EXPORT CursorClient { // EnableMouseEvents/DisableMouseEvents. virtual void UnlockCursor() = 0; + // Used to pass the cursor resource module name to the cursor loader. This is + // typically used to load non system cursors. + virtual void SetCursorResourceModule(const string16& module_name) = 0; + protected: virtual ~CursorClient() {} }; diff --git a/ui/base/cursor/cursor_loader.h b/ui/base/cursor/cursor_loader.h index 661ab08..945a926 100644 --- a/ui/base/cursor/cursor_loader.h +++ b/ui/base/cursor/cursor_loader.h @@ -6,6 +6,7 @@ #define UI_BASE_CURSOR_CURSOR_LOADER_H_ #include "base/logging.h" +#include "base/string16.h" #include "ui/base/ui_export.h" #include "ui/gfx/display.h" #include "ui/gfx/native_widget_types.h" @@ -49,6 +50,10 @@ class UI_EXPORT CursorLoader { // Sets the platform cursor based on the native type of |cursor|. virtual void SetPlatformCursor(gfx::NativeCursor* cursor) = 0; + // Used to pass the cursor resource module name to the cursor loader. This is + // typically used to load non system cursors. + virtual void SetCursorResourceModule(const string16& module_name) = 0; + // Creates a CursorLoader. static CursorLoader* Create(); diff --git a/ui/base/cursor/cursor_loader_win.cc b/ui/base/cursor/cursor_loader_win.cc index 272a298..ba3ade9 100644 --- a/ui/base/cursor/cursor_loader_win.cc +++ b/ui/base/cursor/cursor_loader_win.cc @@ -3,6 +3,7 @@ // found in the LICENSE file. #include "ui/base/cursor/cursor_loader_win.h" +#include "grit/ui_unscaled_resources.h" namespace ui { @@ -59,29 +60,46 @@ const wchar_t* GetCursorId(gfx::NativeCursor native_cursor) { case kCursorNotAllowed: return IDC_NO; case kCursorColumnResize: + return MAKEINTRESOURCE(IDC_COLRESIZE); case kCursorRowResize: + return MAKEINTRESOURCE(IDC_ROWRESIZE); case kCursorMiddlePanning: + return MAKEINTRESOURCE(IDC_PAN_MIDDLE); case kCursorEastPanning: + return MAKEINTRESOURCE(IDC_PAN_EAST); case kCursorNorthPanning: + return MAKEINTRESOURCE(IDC_PAN_NORTH); case kCursorNorthEastPanning: + return MAKEINTRESOURCE(IDC_PAN_NORTH_EAST); case kCursorNorthWestPanning: + return MAKEINTRESOURCE(IDC_PAN_NORTH_WEST); case kCursorSouthPanning: + return MAKEINTRESOURCE(IDC_PAN_SOUTH); case kCursorSouthEastPanning: + return MAKEINTRESOURCE(IDC_PAN_SOUTH_EAST); case kCursorSouthWestPanning: + return MAKEINTRESOURCE(IDC_PAN_SOUTH_WEST); case kCursorWestPanning: + return MAKEINTRESOURCE(IDC_PAN_WEST); case kCursorVerticalText: + return MAKEINTRESOURCE(IDC_VERTICALTEXT); case kCursorCell: - case kCursorContextMenu: - case kCursorAlias: - case kCursorCopy: - case kCursorNone: + return MAKEINTRESOURCE(IDC_CELL); case kCursorZoomIn: + return MAKEINTRESOURCE(IDC_ZOOMIN); case kCursorZoomOut: + return MAKEINTRESOURCE(IDC_ZOOMOUT); case kCursorGrab: + return MAKEINTRESOURCE(IDC_HAND_GRAB); case kCursorGrabbing: + return MAKEINTRESOURCE(IDC_HAND_GRABBING); + case kCursorCopy: + return MAKEINTRESOURCE(IDC_COPYCUR); + case kCursorAlias: + return MAKEINTRESOURCE(IDC_ALIAS); + case kCursorContextMenu: + case kCursorNone: case kCursorCustom: - // TODO(jamescook): Should we use WebKit glue resources for these? - // Or migrate those resources to someplace ui/aura can share? NOTIMPLEMENTED(); return IDC_ARROW; default: @@ -124,13 +142,23 @@ void CursorLoaderWin::UnloadAll() { void CursorLoaderWin::SetPlatformCursor(gfx::NativeCursor* cursor) { #if defined(USE_AURA) if (cursor->native_type() != kCursorCustom) { - const wchar_t* cursor_id = GetCursorId(*cursor); - - // TODO(jamescook): Support for non-system cursors will require finding - // the appropriate module to pass to LoadCursor(). - cursor->SetPlatformCursor(LoadCursor(NULL, cursor_id)); + if (cursor->platform()) { + cursor->SetPlatformCursor(cursor->platform()); + } else { + const wchar_t* cursor_id = GetCursorId(*cursor); + PlatformCursor platform_cursor = LoadCursor(NULL, cursor_id); + if (!platform_cursor && !cursor_resource_module_name_.empty()) { + platform_cursor = LoadCursor( + GetModuleHandle(cursor_resource_module_name_.c_str()), cursor_id); + } + cursor->SetPlatformCursor(platform_cursor); + } } #endif } +void CursorLoaderWin::SetCursorResourceModule(const string16& module_name) { + cursor_resource_module_name_ = module_name; +} + } // namespace ui diff --git a/ui/base/cursor/cursor_loader_win.h b/ui/base/cursor/cursor_loader_win.h index d4539d9..9448f85 100644 --- a/ui/base/cursor/cursor_loader_win.h +++ b/ui/base/cursor/cursor_loader_win.h @@ -6,6 +6,7 @@ #define UI_BASE_CURSOR_CURSOR_LOADER_WIN_H_ #include "base/compiler_specific.h" +#include "base/string16.h" #include "ui/base/cursor/cursor_loader.h" namespace ui { @@ -25,8 +26,11 @@ class UI_EXPORT CursorLoaderWin : public CursorLoader { int frame_delay_ms) OVERRIDE; virtual void UnloadAll() OVERRIDE; virtual void SetPlatformCursor(gfx::NativeCursor* cursor) OVERRIDE; + virtual void SetCursorResourceModule(const string16& module_name) OVERRIDE; private: + string16 cursor_resource_module_name_; + DISALLOW_COPY_AND_ASSIGN(CursorLoaderWin); }; diff --git a/ui/base/cursor/cursor_loader_x11.h b/ui/base/cursor/cursor_loader_x11.h index 4947ca0..2b740f8 100644 --- a/ui/base/cursor/cursor_loader_x11.h +++ b/ui/base/cursor/cursor_loader_x11.h @@ -31,6 +31,8 @@ class UI_EXPORT CursorLoaderX11 : public CursorLoader { int frame_delay_ms) OVERRIDE; virtual void UnloadAll() OVERRIDE; virtual void SetPlatformCursor(gfx::NativeCursor* cursor) OVERRIDE; + virtual void SetCursorResourceModule(const string16& module_name) OVERRIDE { + } private: // Returns true if we have an image resource loaded for the |native_cursor|. diff --git a/ui/views/corewm/compound_event_filter_unittest.cc b/ui/views/corewm/compound_event_filter_unittest.cc index 1dd743f..d3c32ee 100644 --- a/ui/views/corewm/compound_event_filter_unittest.cc +++ b/ui/views/corewm/compound_event_filter_unittest.cc @@ -62,6 +62,9 @@ class TestCursorClient : public aura::client::CursorClient { virtual void UnlockCursor() OVERRIDE { } + virtual void SetCursorResourceModule(const string16& module_name) OVERRIDE { + } + private: bool visible_; bool mouse_events_enabled_; diff --git a/ui/views/corewm/cursor_manager.cc b/ui/views/corewm/cursor_manager.cc index 39b7ee9..24abfe2 100644 --- a/ui/views/corewm/cursor_manager.cc +++ b/ui/views/corewm/cursor_manager.cc @@ -150,6 +150,10 @@ void CursorManager::UnlockCursor() { } } +void CursorManager::SetCursorResourceModule(const string16& module_name) { + delegate_->SetCursorResourceModule(module_name); +} + gfx::NativeCursor CursorManager::GetCurrentCursor() const { return current_state_->cursor(); } diff --git a/ui/views/corewm/cursor_manager.h b/ui/views/corewm/cursor_manager.h index d7784b3..7197995 100644 --- a/ui/views/corewm/cursor_manager.h +++ b/ui/views/corewm/cursor_manager.h @@ -50,6 +50,7 @@ class VIEWS_EXPORT CursorManager : public aura::client::CursorClient, virtual void SetDisplay(const gfx::Display& display) OVERRIDE; virtual void LockCursor() OVERRIDE; virtual void UnlockCursor() OVERRIDE; + virtual void SetCursorResourceModule(const string16& module_name) OVERRIDE; private: // Overridden from NativeCursorManagerDelegate: diff --git a/ui/views/corewm/cursor_manager_unittest.cc b/ui/views/corewm/cursor_manager_unittest.cc index f1e24a5..3f53370 100644 --- a/ui/views/corewm/cursor_manager_unittest.cc +++ b/ui/views/corewm/cursor_manager_unittest.cc @@ -37,6 +37,9 @@ class TestingCursorManager : public views::corewm::NativeCursorManager { delegate->CommitMouseEventsEnabled(enabled); } + virtual void SetCursorResourceModule(const string16& module_name) OVERRIDE { + } + private: gfx::NativeCursor cursor_; }; diff --git a/ui/views/corewm/native_cursor_manager.h b/ui/views/corewm/native_cursor_manager.h index bb28b01..880621a 100644 --- a/ui/views/corewm/native_cursor_manager.h +++ b/ui/views/corewm/native_cursor_manager.h @@ -5,6 +5,7 @@ #ifndef UI_VIEWS_COREWM_NATIVE_CURSOR_MANAGER_H_ #define UI_VIEWS_COREWM_NATIVE_CURSOR_MANAGER_H_ +#include "base/string16.h" #include "ui/views/corewm/native_cursor_manager_delegate.h" #include "ui/views/views_export.h" @@ -48,6 +49,10 @@ class VIEWS_EXPORT NativeCursorManager { virtual void SetMouseEventsEnabled( bool enabled, views::corewm::NativeCursorManagerDelegate* delegate) = 0; + + // Used to pass the cursor resource module name to the cursor loader. This is + // typically used to load non system cursors. + virtual void SetCursorResourceModule(const string16& module_name) = 0; }; } // namespace corewm diff --git a/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc b/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc index 9ce2da9..0334d52 100644 --- a/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc +++ b/ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc @@ -66,4 +66,9 @@ void DesktopNativeCursorManager::SetMouseEventsEnabled( root_window_->OnMouseEventsEnableStateChanged(enabled); } +void DesktopNativeCursorManager::SetCursorResourceModule( + const string16& module_name) { + cursor_loader_->SetCursorResourceModule(module_name); +} + } // namespace views diff --git a/ui/views/widget/desktop_aura/desktop_native_cursor_manager.h b/ui/views/widget/desktop_aura/desktop_native_cursor_manager.h index cbb73a1..1f4f79a 100644 --- a/ui/views/widget/desktop_aura/desktop_native_cursor_manager.h +++ b/ui/views/widget/desktop_aura/desktop_native_cursor_manager.h @@ -46,6 +46,7 @@ class VIEWS_EXPORT DesktopNativeCursorManager virtual void SetMouseEventsEnabled( bool enabled, views::corewm::NativeCursorManagerDelegate* delegate) OVERRIDE; + virtual void SetCursorResourceModule(const string16& module_name) OVERRIDE; aura::RootWindow* root_window_; scoped_ptr<ui::CursorLoader> cursor_loader_; |