diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-23 15:39:15 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-23 15:39:15 +0000 |
commit | a83f0f2a4ae1be9d70e9d6930bd6b3a8f6036fd8 (patch) | |
tree | fd122931d13afb685157a719d5df8b3399df3913 /aura | |
parent | 1a438822332bf8b76eeaba83db8d55f53fd65069 (diff) | |
download | chromium_src-a83f0f2a4ae1be9d70e9d6930bd6b3a8f6036fd8.zip chromium_src-a83f0f2a4ae1be9d70e9d6930bd6b3a8f6036fd8.tar.gz chromium_src-a83f0f2a4ae1be9d70e9d6930bd6b3a8f6036fd8.tar.bz2 |
Wire mouseevent through to Window.
BUG=none
TEST=none
TBR=sky
Review URL: http://codereview.chromium.org/7685031
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97864 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'aura')
-rw-r--r-- | aura/desktop.cc | 4 | ||||
-rw-r--r-- | aura/desktop.h | 4 | ||||
-rw-r--r-- | aura/desktop_host_win.cc | 10 | ||||
-rw-r--r-- | aura/desktop_host_win.h | 5 | ||||
-rw-r--r-- | aura/window.cc | 4 | ||||
-rw-r--r-- | aura/window.h | 4 |
6 files changed, 31 insertions, 0 deletions
diff --git a/aura/desktop.cc b/aura/desktop.cc index 0055450..00b130f 100644 --- a/aura/desktop.cc +++ b/aura/desktop.cc @@ -26,4 +26,8 @@ void Desktop::Draw() { compositor_->NotifyEnd(); } +bool Desktop::OnMouseEvent(const MouseEvent& event) { + return window_->OnMouseEvent(event); +} + } // namespace aura diff --git a/aura/desktop.h b/aura/desktop.h index 4df3742..1eb89ca 100644 --- a/aura/desktop.h +++ b/aura/desktop.h @@ -21,6 +21,7 @@ class Compositor; namespace aura { +class MouseEvent; class Window; // Desktop is responsible for hosting a set of windows. @@ -32,6 +33,9 @@ class Desktop { // Draws the necessary set of windows. void Draw(); + // Handles a mouse event. Returns true if handled. + bool OnMouseEvent(const MouseEvent& event); + // Compositor we're drawing to. ui::Compositor* compositor() { return compositor_.get(); } diff --git a/aura/desktop_host_win.cc b/aura/desktop_host_win.cc index 080b84a..e581b7d 100644 --- a/aura/desktop_host_win.cc +++ b/aura/desktop_host_win.cc @@ -5,6 +5,7 @@ #include "aura/desktop_host_win.h" #include "aura/desktop.h" +#include "aura/event.h" #include "base/message_loop.h" namespace aura { @@ -51,6 +52,15 @@ void DesktopHostWin::OnClose() { MessageLoopForUI::current()->Quit(); } +LRESULT DesktopHostWin::OnMouseRange(UINT message, + WPARAM w_param, + LPARAM l_param) { + MSG msg = { hwnd(), message, w_param, l_param, 0, + { GET_X_LPARAM(l_param), GET_Y_LPARAM(l_param) } }; + SetMsgHandled(desktop_->OnMouseEvent(MouseEvent(msg))); + return 0; +} + void DesktopHostWin::OnPaint(HDC dc) { if (desktop_) desktop_->Draw(); diff --git a/aura/desktop_host_win.h b/aura/desktop_host_win.h index 0f0d68f..6a8165b 100644 --- a/aura/desktop_host_win.h +++ b/aura/desktop_host_win.h @@ -28,11 +28,16 @@ class DesktopHostWin : public DesktopHost, public ui::WindowImpl { private: BEGIN_MSG_MAP_EX(DesktopHostWin) + // Range handlers must go first! + MESSAGE_RANGE_HANDLER_EX(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseRange) + MESSAGE_RANGE_HANDLER_EX(WM_NCMOUSEMOVE, WM_NCXBUTTONDBLCLK, OnMouseRange) + MSG_WM_CLOSE(OnClose) MSG_WM_PAINT(OnPaint) END_MSG_MAP() void OnClose(); + LRESULT OnMouseRange(UINT message, WPARAM w_param, LPARAM l_param); void OnPaint(HDC dc); Desktop* desktop_; diff --git a/aura/window.cc b/aura/window.cc index 2d63d80..11e9b31 100644 --- a/aura/window.cc +++ b/aura/window.cc @@ -82,6 +82,10 @@ void Window::RemoveChild(Window* child) { children_.erase(i); } +bool Window::OnMouseEvent(const MouseEvent& event) { + return true; +} + void Window::UpdateLayerCanvas() { if (needs_paint_all_) { needs_paint_all_ = false; diff --git a/aura/window.h b/aura/window.h index b4611c4..f72b2b6 100644 --- a/aura/window.h +++ b/aura/window.h @@ -23,6 +23,7 @@ class Layer; namespace aura { class Desktop; +class MouseEvent; class WindowDelegate; // Aura window implementation. Interesting events are sent to the @@ -73,6 +74,9 @@ class Window { void RemoveChild(Window* child); Window* parent() { return parent_; } + // Handles a mouse event. Returns true if handled. + bool OnMouseEvent(const MouseEvent& event); + private: typedef std::vector<Window*> Windows; |