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

Side by Side Diff: chrome/views/widget/widget_win.cc

Issue 50017: Issue 21268: The Remake... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/views/widget/widget_win.h ('k') | chrome/views/window/window_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/views/widget/widget_win.h" 5 #include "chrome/views/widget/widget_win.h"
6 6
7 #include "base/gfx/native_theme.h" 7 #include "base/gfx/native_theme.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/win_util.h" 9 #include "base/win_util.h"
10 #include "chrome/app/chrome_dll_resource.h" 10 #include "chrome/app/chrome_dll_resource.h"
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 KeyEvent event(Event::ET_KEY_PRESSED, c, rep_cnt, flags); 513 KeyEvent event(Event::ET_KEY_PRESSED, c, rep_cnt, flags);
514 SetMsgHandled(root_view_->ProcessKeyEvent(event)); 514 SetMsgHandled(root_view_->ProcessKeyEvent(event));
515 } 515 }
516 516
517 void WidgetWin::OnKeyUp(TCHAR c, UINT rep_cnt, UINT flags) { 517 void WidgetWin::OnKeyUp(TCHAR c, UINT rep_cnt, UINT flags) {
518 KeyEvent event(Event::ET_KEY_RELEASED, c, rep_cnt, flags); 518 KeyEvent event(Event::ET_KEY_RELEASED, c, rep_cnt, flags);
519 SetMsgHandled(root_view_->ProcessKeyEvent(event)); 519 SetMsgHandled(root_view_->ProcessKeyEvent(event));
520 } 520 }
521 521
522 void WidgetWin::OnLButtonDown(UINT flags, const CPoint& point) { 522 void WidgetWin::OnLButtonDown(UINT flags, const CPoint& point) {
523 ProcessMousePressed(point, flags | MK_LBUTTON, false); 523 ProcessMousePressed(point, flags | MK_LBUTTON, false, false);
524 } 524 }
525 525
526 void WidgetWin::OnLButtonUp(UINT flags, const CPoint& point) { 526 void WidgetWin::OnLButtonUp(UINT flags, const CPoint& point) {
527 ProcessMouseReleased(point, flags | MK_LBUTTON); 527 ProcessMouseReleased(point, flags | MK_LBUTTON);
528 } 528 }
529 529
530 void WidgetWin::OnLButtonDblClk(UINT flags, const CPoint& point) { 530 void WidgetWin::OnLButtonDblClk(UINT flags, const CPoint& point) {
531 ProcessMousePressed(point, flags | MK_LBUTTON, true); 531 ProcessMousePressed(point, flags | MK_LBUTTON, true, false);
532 } 532 }
533 533
534 void WidgetWin::OnMButtonDown(UINT flags, const CPoint& point) { 534 void WidgetWin::OnMButtonDown(UINT flags, const CPoint& point) {
535 ProcessMousePressed(point, flags | MK_MBUTTON, false); 535 ProcessMousePressed(point, flags | MK_MBUTTON, false, false);
536 } 536 }
537 537
538 void WidgetWin::OnMButtonUp(UINT flags, const CPoint& point) { 538 void WidgetWin::OnMButtonUp(UINT flags, const CPoint& point) {
539 ProcessMouseReleased(point, flags | MK_MBUTTON); 539 ProcessMouseReleased(point, flags | MK_MBUTTON);
540 } 540 }
541 541
542 void WidgetWin::OnMButtonDblClk(UINT flags, const CPoint& point) { 542 void WidgetWin::OnMButtonDblClk(UINT flags, const CPoint& point) {
543 ProcessMousePressed(point, flags | MK_MBUTTON, true); 543 ProcessMousePressed(point, flags | MK_MBUTTON, true, false);
544 } 544 }
545 545
546 LRESULT WidgetWin::OnMouseActivate(HWND window, UINT hittest_code, 546 LRESULT WidgetWin::OnMouseActivate(HWND window, UINT hittest_code,
547 UINT message) { 547 UINT message) {
548 SetMsgHandled(FALSE); 548 SetMsgHandled(FALSE);
549 return MA_ACTIVATE; 549 return MA_ACTIVATE;
550 } 550 }
551 551
552 void WidgetWin::OnMouseMove(UINT flags, const CPoint& point) { 552 void WidgetWin::OnMouseMove(UINT flags, const CPoint& point) {
553 ProcessMouseMoved(point, flags, false); 553 ProcessMouseMoved(point, flags, false);
(...skipping 21 matching lines...) Expand all
575 return root_view_->ProcessMouseWheelEvent(e) ? 0 : 1; 575 return root_view_->ProcessMouseWheelEvent(e) ? 0 : 1;
576 } 576 }
577 577
578 LRESULT WidgetWin::OnMouseRange(UINT msg, WPARAM w_param, LPARAM l_param) { 578 LRESULT WidgetWin::OnMouseRange(UINT msg, WPARAM w_param, LPARAM l_param) {
579 tooltip_manager_->OnMouse(msg, w_param, l_param); 579 tooltip_manager_->OnMouse(msg, w_param, l_param);
580 SetMsgHandled(FALSE); 580 SetMsgHandled(FALSE);
581 return 0; 581 return 0;
582 } 582 }
583 583
584 void WidgetWin::OnNCLButtonDblClk(UINT flags, const CPoint& point) { 584 void WidgetWin::OnNCLButtonDblClk(UINT flags, const CPoint& point) {
585 SetMsgHandled(FALSE); 585 SetMsgHandled(ProcessMousePressed(point, flags | MK_LBUTTON, true, true));
586 } 586 }
587 587
588 void WidgetWin::OnNCLButtonDown(UINT flags, const CPoint& point) { 588 void WidgetWin::OnNCLButtonDown(UINT flags, const CPoint& point) {
589 SetMsgHandled(FALSE); 589 SetMsgHandled(ProcessMousePressed(point, flags | MK_LBUTTON, false, true));
590 } 590 }
591 591
592 void WidgetWin::OnNCLButtonUp(UINT flags, const CPoint& point) { 592 void WidgetWin::OnNCLButtonUp(UINT flags, const CPoint& point) {
593 SetMsgHandled(FALSE); 593 SetMsgHandled(FALSE);
594 } 594 }
595 595
596 void WidgetWin::OnNCMButtonDblClk(UINT flags, const CPoint& point) { 596 void WidgetWin::OnNCMButtonDblClk(UINT flags, const CPoint& point) {
597 SetMsgHandled(FALSE); 597 SetMsgHandled(ProcessMousePressed(point, flags | MK_MBUTTON, true, true));
598 } 598 }
599 599
600 void WidgetWin::OnNCMButtonDown(UINT flags, const CPoint& point) { 600 void WidgetWin::OnNCMButtonDown(UINT flags, const CPoint& point) {
601 SetMsgHandled(FALSE); 601 SetMsgHandled(ProcessMousePressed(point, flags | MK_MBUTTON, false, true));
602 } 602 }
603 603
604 void WidgetWin::OnNCMButtonUp(UINT flags, const CPoint& point) { 604 void WidgetWin::OnNCMButtonUp(UINT flags, const CPoint& point) {
605 SetMsgHandled(FALSE); 605 SetMsgHandled(FALSE);
606 } 606 }
607 607
608 LRESULT WidgetWin::OnNCMouseLeave(UINT uMsg, WPARAM w_param, LPARAM l_param) { 608 LRESULT WidgetWin::OnNCMouseLeave(UINT uMsg, WPARAM w_param, LPARAM l_param) {
609 ProcessMouseExited(); 609 ProcessMouseExited();
610 return 0; 610 return 0;
611 } 611 }
612 612
613 LRESULT WidgetWin::OnNCMouseMove(UINT flags, const CPoint& point) { 613 LRESULT WidgetWin::OnNCMouseMove(UINT flags, const CPoint& point) {
614 // NC points are in screen coordinates. 614 // NC points are in screen coordinates.
615 CPoint temp = point; 615 CPoint temp = point;
616 MapWindowPoints(HWND_DESKTOP, GetNativeView(), &temp, 1); 616 MapWindowPoints(HWND_DESKTOP, GetNativeView(), &temp, 1);
617 ProcessMouseMoved(temp, 0, true); 617 ProcessMouseMoved(temp, 0, true);
618 618
619 // We need to process this message to stop Windows from drawing the window 619 // We need to process this message to stop Windows from drawing the window
620 // controls as the mouse moves over the title bar area when the window is 620 // controls as the mouse moves over the title bar area when the window is
621 // maximized. 621 // maximized.
622 return 0; 622 return 0;
623 } 623 }
624 624
625 void WidgetWin::OnNCRButtonDblClk(UINT flags, const CPoint& point) { 625 void WidgetWin::OnNCRButtonDblClk(UINT flags, const CPoint& point) {
626 SetMsgHandled(FALSE); 626 SetMsgHandled(ProcessMousePressed(point, flags | MK_RBUTTON, true, true));
627 } 627 }
628 628
629 void WidgetWin::OnNCRButtonDown(UINT flags, const CPoint& point) { 629 void WidgetWin::OnNCRButtonDown(UINT flags, const CPoint& point) {
630 SetMsgHandled(FALSE); 630 SetMsgHandled(ProcessMousePressed(point, flags | MK_RBUTTON, false, true));
631 } 631 }
632 632
633 void WidgetWin::OnNCRButtonUp(UINT flags, const CPoint& point) { 633 void WidgetWin::OnNCRButtonUp(UINT flags, const CPoint& point) {
634 SetMsgHandled(FALSE); 634 SetMsgHandled(FALSE);
635 } 635 }
636 636
637 LRESULT WidgetWin::OnNotify(int w_param, NMHDR* l_param) { 637 LRESULT WidgetWin::OnNotify(int w_param, NMHDR* l_param) {
638 // We can be sent this message before the tooltip manager is created, if a 638 // We can be sent this message before the tooltip manager is created, if a
639 // subclass overrides OnCreate and creates some kind of Windows control there 639 // subclass overrides OnCreate and creates some kind of Windows control there
640 // that sends WM_NOTIFY messages. 640 // that sends WM_NOTIFY messages.
641 if (tooltip_manager_.get()) { 641 if (tooltip_manager_.get()) {
642 bool handled; 642 bool handled;
643 LRESULT result = tooltip_manager_->OnNotify(w_param, l_param, &handled); 643 LRESULT result = tooltip_manager_->OnNotify(w_param, l_param, &handled);
644 SetMsgHandled(handled); 644 SetMsgHandled(handled);
645 return result; 645 return result;
646 } 646 }
647 SetMsgHandled(FALSE); 647 SetMsgHandled(FALSE);
648 return 0; 648 return 0;
649 } 649 }
650 650
651 void WidgetWin::OnPaint(HDC dc) { 651 void WidgetWin::OnPaint(HDC dc) {
652 root_view_->OnPaint(GetNativeView()); 652 root_view_->OnPaint(GetNativeView());
653 } 653 }
654 654
655 void WidgetWin::OnRButtonDown(UINT flags, const CPoint& point) { 655 void WidgetWin::OnRButtonDown(UINT flags, const CPoint& point) {
656 ProcessMousePressed(point, flags | MK_RBUTTON, false); 656 ProcessMousePressed(point, flags | MK_RBUTTON, false, false);
657 } 657 }
658 658
659 void WidgetWin::OnRButtonUp(UINT flags, const CPoint& point) { 659 void WidgetWin::OnRButtonUp(UINT flags, const CPoint& point) {
660 ProcessMouseReleased(point, flags | MK_RBUTTON); 660 ProcessMouseReleased(point, flags | MK_RBUTTON);
661 } 661 }
662 662
663 void WidgetWin::OnRButtonDblClk(UINT flags, const CPoint& point) { 663 void WidgetWin::OnRButtonDblClk(UINT flags, const CPoint& point) {
664 ProcessMousePressed(point, flags | MK_RBUTTON, true); 664 ProcessMousePressed(point, flags | MK_RBUTTON, true, false);
665 } 665 }
666 666
667 void WidgetWin::OnSettingChange(UINT flags, const wchar_t* section) { 667 void WidgetWin::OnSettingChange(UINT flags, const wchar_t* section) {
668 if (toplevel_ && (flags == SPI_SETWORKAREA)) { 668 if (toplevel_ && (flags == SPI_SETWORKAREA)) {
669 AdjustWindowToFitScreenSize(); 669 AdjustWindowToFitScreenSize();
670 SetMsgHandled(TRUE); 670 SetMsgHandled(TRUE);
671 } 671 }
672 } 672 }
673 673
674 void WidgetWin::OnSize(UINT param, const CSize& size) { 674 void WidgetWin::OnSize(UINT param, const CSize& size) {
(...skipping 30 matching lines...) Expand all
705 tme.dwFlags = mouse_tracking_flags; 705 tme.dwFlags = mouse_tracking_flags;
706 tme.hwndTrack = GetNativeView(); 706 tme.hwndTrack = GetNativeView();
707 tme.dwHoverTime = 0; 707 tme.dwHoverTime = 0;
708 TrackMouseEvent(&tme); 708 TrackMouseEvent(&tme);
709 } else if (mouse_tracking_flags != active_mouse_tracking_flags_) { 709 } else if (mouse_tracking_flags != active_mouse_tracking_flags_) {
710 TrackMouseEvents(active_mouse_tracking_flags_ | TME_CANCEL); 710 TrackMouseEvents(active_mouse_tracking_flags_ | TME_CANCEL);
711 TrackMouseEvents(mouse_tracking_flags); 711 TrackMouseEvents(mouse_tracking_flags);
712 } 712 }
713 } 713 }
714 714
715 bool WidgetWin::ProcessMousePressed(const CPoint& point, UINT flags, 715 bool WidgetWin::ProcessMousePressed(const CPoint& point,
716 bool dbl_click) { 716 UINT flags,
717 bool dbl_click,
718 bool non_client) {
717 last_mouse_event_was_move_ = false; 719 last_mouse_event_was_move_ = false;
718 // Windows gives screen coordinates for nonclient events, while the RootView 720 // Windows gives screen coordinates for nonclient events, while the RootView
719 // expects window coordinates; convert if necessary. 721 // expects window coordinates; convert if necessary.
720 gfx::Point converted_point(point); 722 gfx::Point converted_point(point);
723 if (non_client)
724 View::ConvertPointToView(NULL, root_view_.get(), &converted_point);
721 MouseEvent mouse_pressed(Event::ET_MOUSE_PRESSED, 725 MouseEvent mouse_pressed(Event::ET_MOUSE_PRESSED,
722 converted_point.x(), 726 converted_point.x(),
723 converted_point.y(), 727 converted_point.y(),
724 (dbl_click ? MouseEvent::EF_IS_DOUBLE_CLICK : 0) | 728 (dbl_click ? MouseEvent::EF_IS_DOUBLE_CLICK : 0) |
729 (non_client ? MouseEvent::EF_IS_NON_CLIENT : 0) |
725 Event::ConvertWindowsFlags(flags)); 730 Event::ConvertWindowsFlags(flags));
726 if (root_view_->OnMousePressed(mouse_pressed)) { 731 if (root_view_->OnMousePressed(mouse_pressed)) {
727 is_mouse_down_ = true; 732 is_mouse_down_ = true;
728 if (!has_capture_) { 733 if (!has_capture_) {
729 SetCapture(); 734 SetCapture();
730 has_capture_ = true; 735 has_capture_ = true;
731 current_action_ = FA_FORWARDING; 736 current_action_ = FA_FORWARDING;
732 } 737 }
733 return true; 738 return true;
734 } 739 }
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 result = DefWindowProc(window, message, w_param, l_param); 1002 result = DefWindowProc(window, message, w_param, l_param);
998 if (message == WM_NCDESTROY) { 1003 if (message == WM_NCDESTROY) {
999 TRACK_HWND_DESTRUCTION(window); 1004 TRACK_HWND_DESTRUCTION(window);
1000 widget->hwnd_ = NULL; 1005 widget->hwnd_ = NULL;
1001 widget->OnFinalMessage(window); 1006 widget->OnFinalMessage(window);
1002 } 1007 }
1003 return result; 1008 return result;
1004 } 1009 }
1005 1010
1006 } // namespace views 1011 } // namespace views
OLDNEW
« no previous file with comments | « chrome/views/widget/widget_win.h ('k') | chrome/views/window/window_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698