summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
Diffstat (limited to 'ui')
-rw-r--r--ui/DEPS1
-rw-r--r--ui/aura/client/cursor_client.h5
-rw-r--r--ui/base/cursor/cursor_loader.h5
-rw-r--r--ui/base/cursor/cursor_loader_win.cc50
-rw-r--r--ui/base/cursor/cursor_loader_win.h4
-rw-r--r--ui/base/cursor/cursor_loader_x11.h2
-rw-r--r--ui/views/corewm/compound_event_filter_unittest.cc3
-rw-r--r--ui/views/corewm/cursor_manager.cc4
-rw-r--r--ui/views/corewm/cursor_manager.h1
-rw-r--r--ui/views/corewm/cursor_manager_unittest.cc3
-rw-r--r--ui/views/corewm/native_cursor_manager.h5
-rw-r--r--ui/views/widget/desktop_aura/desktop_native_cursor_manager.cc5
-rw-r--r--ui/views/widget/desktop_aura/desktop_native_cursor_manager.h1
13 files changed, 78 insertions, 11 deletions
diff --git a/ui/DEPS b/ui/DEPS
index 4cb4bc2..44b8ff0 100644
--- a/ui/DEPS
+++ b/ui/DEPS
@@ -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_;