Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Unified Diff: views/window/window_win.cc

Issue 6591120: Update MouseEvent (initial pass). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update MouseEvent (initial pass). Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« views/widget/widget_win.h ('K') | « views/window/window_win.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: views/window/window_win.cc
diff --git a/views/window/window_win.cc b/views/window/window_win.cc
index 239226d86d1f913f7d08d6605e89683e8c3a1713..8258061939961911a28d0adc3344d53cbc69e74c 100644
--- a/views/window/window_win.cc
+++ b/views/window/window_win.cc
@@ -658,7 +658,7 @@ WindowWin::WindowWin(WindowDelegate* window_delegate)
set_window_ex_style(0);
}
-void WindowWin::Init(HWND parent, const gfx::Rect& bounds) {
+void WindowWin::Init(gfx::NativeView parent, const gfx::Rect& bounds) {
// We need to save the parent window, since later calls to GetParent() will
// return NULL.
owning_hwnd_ = parent;
@@ -824,12 +824,12 @@ void WindowWin::OnInitMenu(HMENU menu) {
window_delegate_->CanMaximize() && !is_minimized);
}
-void WindowWin::OnMouseLeave() {
+LRESULT WindowWin::OnMouseLeave(UINT message, WPARAM w_param, LPARAM l_param) {
// We only need to manually track WM_MOUSELEAVE messages between the client
// and non-client area when we're not using the native frame.
if (non_client_view_->UseNativeFrame()) {
SetMsgHandled(FALSE);
- return;
+ return 0;
}
bool process_mouse_exited = true;
@@ -849,6 +849,7 @@ void WindowWin::OnMouseLeave() {
if (process_mouse_exited)
ProcessMouseExited();
+ return 0;
}
LRESULT WindowWin::OnNCActivate(BOOL active) {
@@ -975,11 +976,13 @@ void WindowWin::OnNCPaint(HRGN rgn) {
SetMsgHandled(!non_client_view_->UseNativeFrame());
}
-void WindowWin::OnNCLButtonDown(UINT ht_component, const CPoint& point) {
+LRESULT WindowWin::OnNCLButtonDown(UINT message,
+ WPARAM w_param,
+ LPARAM l_param) {
// When we're using a native frame, window controls work without us
// interfering.
if (!non_client_view_->UseNativeFrame()) {
- switch (ht_component) {
+ switch (w_param) {
case HTCLOSE:
case HTMINBUTTON:
case HTMAXBUTTON: {
@@ -995,13 +998,13 @@ void WindowWin::OnNCLButtonDown(UINT ht_component, const CPoint& point) {
// our view! Ick! By handling this message we prevent Windows from
// doing this undesirable thing, but that means we need to roll the
// sys-command handling ourselves.
- ProcessNCMousePress(point, MK_LBUTTON);
- return;
+ ProcessNCMousePress(message, w_param, l_param);
+ return 0;
}
}
}
- WidgetWin::OnNCLButtonDown(ht_component, point);
+ WidgetWin::OnNCLButtonDown(message, w_param, l_param);
/* TODO(beng): Fix the standard non-client over-painting bug. This code
doesn't work but identifies the problem.
@@ -1012,15 +1015,17 @@ void WindowWin::OnNCLButtonDown(UINT ht_component, const CPoint& point) {
// non-client painting, so we need to call it directly here inside a
// scoped update lock.
ScopedRedrawLock lock(this);
- DefWindowProc(GetNativeView(), WM_NCLBUTTONDOWN, ht_component,
- MAKELPARAM(point.x, point.y));
+ DefWindowProc(GetNativeView(), WM_NCLBUTTONDOWN, w_param, l_param);
SetMsgHandled(TRUE);
}
*/
+ return 0;
}
-void WindowWin::OnNCRButtonDown(UINT ht_component, const CPoint& point) {
- if (ht_component == HTCAPTION || ht_component == HTSYSMENU) {
+LRESULT WindowWin::OnNCRButtonDown(UINT message,
+ WPARAM w_param,
+ LPARAM l_param) {
+ if (w_param == HTCAPTION || w_param == HTSYSMENU) {
is_right_mouse_pressed_on_caption_ = true;
// We SetCapture() to ensure we only show the menu when the button down and
// up are both on the caption. Note: this causes the button up to be
@@ -1028,20 +1033,21 @@ void WindowWin::OnNCRButtonDown(UINT ht_component, const CPoint& point) {
SetCapture();
}
- WidgetWin::OnNCRButtonDown(ht_component, point);
+ WidgetWin::OnNCRButtonDown(message, w_param, l_param);
+ return 0;
}
-void WindowWin::OnRButtonUp(UINT ht_component, const CPoint& point) {
+LRESULT WindowWin::OnRButtonUp(UINT message, WPARAM w_param, LPARAM l_param) {
if (is_right_mouse_pressed_on_caption_) {
is_right_mouse_pressed_on_caption_ = false;
ReleaseCapture();
// |point| is in window coordinates, but WM_NCHITTEST and TrackPopupMenu()
// expect screen coordinates.
- CPoint screen_point(point);
+ CPoint screen_point(GET_X_LPARAM(l_param), GET_Y_LPARAM(l_param));
MapWindowPoints(GetNativeView(), HWND_DESKTOP, &screen_point, 1);
- ht_component = SendMessage(GetNativeView(), WM_NCHITTEST, 0,
- MAKELPARAM(screen_point.x, screen_point.y));
- if (ht_component == HTCAPTION || ht_component == HTSYSMENU) {
+ w_param = SendMessage(GetNativeView(), WM_NCHITTEST, 0,
+ MAKELPARAM(screen_point.x, screen_point.y));
+ if (w_param == HTCAPTION || w_param == HTSYSMENU) {
UINT flags = TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_RETURNCMD;
if (base::i18n::IsRTL())
flags |= TPM_RIGHTALIGN;
@@ -1049,11 +1055,12 @@ void WindowWin::OnRButtonUp(UINT ht_component, const CPoint& point) {
int id = TrackPopupMenu(system_menu, flags, screen_point.x,
screen_point.y, 0, GetNativeView(), NULL);
ExecuteSystemMenuCommand(id);
- return;
+ return 0;
}
}
- WidgetWin::OnRButtonUp(ht_component, point);
+ WidgetWin::OnRButtonUp(message, w_param, l_param);
+ return 0;
}
LRESULT WindowWin::OnNCUAHDrawCaption(UINT msg, WPARAM w_param,
@@ -1475,16 +1482,22 @@ void WindowWin::UpdateAccessibleState() {
}
}
-void WindowWin::ProcessNCMousePress(const CPoint& point, int flags) {
- CPoint temp = point;
- MapWindowPoints(HWND_DESKTOP, GetNativeView(), &temp, 1);
- UINT message_flags = 0;
- if ((GetKeyState(VK_CONTROL) & 0x80) == 0x80)
- message_flags |= MK_CONTROL;
- if ((GetKeyState(VK_SHIFT) & 0x80) == 0x80)
- message_flags |= MK_SHIFT;
- message_flags |= flags;
- ProcessMousePressed(temp, message_flags, false, false);
+// TODO(msw): ProcessNCMousePress could be made class/file private (or inlined in OnNCLButtonDown).
+void WindowWin::ProcessNCMousePress(UINT message,
+ WPARAM w_param,
+ LPARAM l_param) {
+ // TODO(msw): Ensure point translation is correct. Move into ProcessMouseMoved???
+ CPoint point(GET_X_LPARAM(l_param), GET_Y_LPARAM(l_param));
+ MapWindowPoints(HWND_DESKTOP, GetNativeView(), &point, 1);
+ l_param = MAKELPARAM(point.x, point.y);
+ // TODO(msw): Consolidate code with new Event processing?
+ w_param |= ((GetKeyState(VK_CONTROL) & 0x80) == 0x80)? MK_CONTROL : 0;
+ w_param |= ((GetKeyState(VK_SHIFT) & 0x80) == 0x80)? MK_SHIFT : 0;
+ // TODO(msw): Why did this send non_client:=false to ProcessMousePressed???
+ // Because this already did the xform? Can this be cleaned up?
+ DCHECK(message == WM_NCLBUTTONDOWN);
+ message = WM_LBUTTONDOWN;
+ ProcessMousePressed(message, w_param, l_param);
}
LRESULT WindowWin::CallDefaultNCActivateHandler(BOOL active) {
« views/widget/widget_win.h ('K') | « views/window/window_win.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698