diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-04 06:40:42 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-04 06:40:42 +0000 |
commit | 9abf8dd6daf601bd5215f612fd530ca009c2e5bd (patch) | |
tree | db13bad567f4803dce769b316713509e0cc96083 /views/widget/root_view.cc | |
parent | 926049f2fee49ce29144c9456112b4199fdb23e7 (diff) | |
download | chromium_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.cc | 40 |
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 |