summaryrefslogtreecommitdiffstats
path: root/views/widget/root_view.cc
diff options
context:
space:
mode:
authorben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-04 06:40:42 +0000
committerben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-04 06:40:42 +0000
commit9abf8dd6daf601bd5215f612fd530ca009c2e5bd (patch)
treedb13bad567f4803dce769b316713509e0cc96083 /views/widget/root_view.cc
parent926049f2fee49ce29144c9456112b4199fdb23e7 (diff)
downloadchromium_src-9abf8dd6daf601bd5215f612fd530ca009c2e5bd.zip
chromium_src-9abf8dd6daf601bd5215f612fd530ca009c2e5bd.tar.gz
chromium_src-9abf8dd6daf601bd5215f612fd530ca009c2e5bd.tar.bz2
Replace HCURSOR usage in views::View with a new gfx::NativeCursor type that also supports GdkCursor*, and wires this up with the existing implementors of the GetCursorForPoint method.
This allows us to get rid of one of the most annoying NOTIMPLEMENTED()s in views-gtk. BUG=none TEST=none Review URL: http://codereview.chromium.org/119150 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17614 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/widget/root_view.cc')
-rw-r--r--views/widget/root_view.cc40
1 files changed, 21 insertions, 19 deletions
diff --git a/views/widget/root_view.cc b/views/widget/root_view.cc
index fb64756..fd42412 100644
--- a/views/widget/root_view.cc
+++ b/views/widget/root_view.cc
@@ -467,29 +467,13 @@ void RootView::OnMouseMoved(const MouseEvent& e) {
0);
mouse_move_handler_->OnMouseMoved(moved_event);
-#if defined(OS_WIN)
- HCURSOR cursor = mouse_move_handler_->GetCursorForPoint(
+ gfx::NativeCursor cursor = mouse_move_handler_->GetCursorForPoint(
moved_event.GetType(), moved_event.x(), moved_event.y());
- if (cursor) {
- previous_cursor_ = ::SetCursor(cursor);
- } else if (previous_cursor_) {
- ::SetCursor(previous_cursor_);
- previous_cursor_ = NULL;
- }
-#else
- NOTIMPLEMENTED();
-#endif
+ SetActiveCursor(cursor);
} else if (mouse_move_handler_ != NULL) {
MouseEvent exited_event(Event::ET_MOUSE_EXITED, 0, 0, 0);
mouse_move_handler_->OnMouseExited(exited_event);
-#if defined(OS_WIN)
- if (previous_cursor_) {
- ::SetCursor(previous_cursor_);
- previous_cursor_ = NULL;
- }
-#else
- NOTIMPLEMENTED();
-#endif
+ SetActiveCursor(NULL);
}
}
@@ -922,4 +906,22 @@ View* RootView::GetDragView() {
return drag_view_;
}
+void RootView::SetActiveCursor(gfx::NativeCursor cursor) {
+#if defined(OS_WIN)
+ if (cursor) {
+ previous_cursor_ = ::SetCursor(cursor);
+ } else if (previous_cursor_) {
+ ::SetCursor(previous_cursor_);
+ previous_cursor_ = NULL;
+ }
+#elif defined(OS_LINUX)
+ if (cursor) {
+ gdk_window_set_cursor(GetWidget()->GetNativeView()->window, cursor);
+ gdk_cursor_destroy(cursor);
+ } else {
+ gdk_window_set_cursor(GetWidget()->GetNativeView()->window, NULL);
+ }
+#endif
+}
+
} // namespace views