| Index: views/window/window_win.cc
|
| ===================================================================
|
| --- views/window/window_win.cc (revision 18057)
|
| +++ views/window/window_win.cc (working copy)
|
| @@ -513,6 +513,7 @@
|
| ignore_window_pos_changes_(false),
|
| ignore_pos_changes_factory_(this),
|
| force_hidden_count_(0),
|
| + is_right_mouse_pressed_on_caption_(false),
|
| last_monitor_(NULL) {
|
| is_window_ = true;
|
| InitClass();
|
| @@ -946,12 +947,43 @@
|
| }
|
|
|
| void WindowWin::OnNCRButtonDown(UINT ht_component, const CPoint& point) {
|
| - if (ht_component == HTCAPTION || ht_component == HTSYSMENU)
|
| - RunSystemMenu(gfx::Point(point));
|
| - else
|
| - WidgetWin::OnNCRButtonDown(ht_component, point);
|
| + if (ht_component == HTCAPTION || ht_component == HTSYSMENU) {
|
| + is_right_mouse_pressed_on_caption_ = true;
|
| + // Using SetCapture() here matches Windows native behavior for right-clicks
|
| + // on the title bar. It's not obvious why Windows does this.
|
| + SetCapture();
|
| + }
|
| +
|
| + WidgetWin::OnNCRButtonDown(ht_component, point);
|
| }
|
|
|
| +void WindowWin::OnNCRButtonUp(UINT ht_component, const CPoint& point) {
|
| + if (is_right_mouse_pressed_on_caption_)
|
| + is_right_mouse_pressed_on_caption_ = false;
|
| +
|
| + WidgetWin::OnNCRButtonUp(ht_component, point);
|
| +}
|
| +
|
| +void WindowWin::OnRButtonUp(UINT ht_component, const CPoint& point) {
|
| + // We handle running the system menu on mouseup here because calling
|
| + // SetCapture() on mousedown makes the mouseup generate WM_RBUTTONUP instead
|
| + // of WM_NCRBUTTONUP.
|
| + CPoint pt = point;
|
| + MapWindowPoints(GetNativeView(), HWND_DESKTOP, &pt, 1);
|
| + if (is_right_mouse_pressed_on_caption_) {
|
| + is_right_mouse_pressed_on_caption_ = false;
|
| + ReleaseCapture();
|
| + ht_component =
|
| + ::SendMessage(GetNativeView(), WM_NCHITTEST, 0, MAKELPARAM(pt.x, pt.y));
|
| + if (ht_component == HTCAPTION || ht_component == HTSYSMENU) {
|
| + RunSystemMenu(gfx::Point(pt));
|
| + return;
|
| + }
|
| + }
|
| +
|
| + WidgetWin::OnRButtonUp(ht_component, point);
|
| +}
|
| +
|
| LRESULT WindowWin::OnNCUAHDrawCaption(UINT msg, WPARAM w_param,
|
| LPARAM l_param) {
|
| // See comment in widget_win.h at the definition of WM_NCUAHDRAWCAPTION for
|
|
|