OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "views/view.h" | 5 #include "views/view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 | 622 |
623 if (parent_) { | 623 if (parent_) { |
624 // Translate the requested paint rect to the parent's coordinate system | 624 // Translate the requested paint rect to the parent's coordinate system |
625 // then pass this notification up to the parent. | 625 // then pass this notification up to the parent. |
626 gfx::Rect paint_rect = ConvertRectToParent(r); | 626 gfx::Rect paint_rect = ConvertRectToParent(r); |
627 paint_rect.Offset(GetMirroredPosition()); | 627 paint_rect.Offset(GetMirroredPosition()); |
628 parent_->SchedulePaintInRect(paint_rect, urgent); | 628 parent_->SchedulePaintInRect(paint_rect, urgent); |
629 } | 629 } |
630 } | 630 } |
631 | 631 |
| 632 void View::PaintChildren(gfx::Canvas* canvas) { |
| 633 for (int i = 0, count = child_count(); i < count; ++i) { |
| 634 View* child = GetChildViewAt(i); |
| 635 if (!child) { |
| 636 NOTREACHED() << "Should not have a NULL child View for index in bounds"; |
| 637 continue; |
| 638 } |
| 639 child->Paint(canvas); |
| 640 } |
| 641 } |
| 642 |
632 void View::OnPaint(gfx::Canvas* canvas) { | 643 void View::OnPaint(gfx::Canvas* canvas) { |
633 OnPaintBackground(canvas); | 644 OnPaintBackground(canvas); |
634 OnPaintFocusBorder(canvas); | 645 OnPaintFocusBorder(canvas); |
635 OnPaintBorder(canvas); | 646 OnPaintBorder(canvas); |
636 } | 647 } |
637 | 648 |
638 void View::OnPaintBackground(gfx::Canvas* canvas) { | 649 void View::OnPaintBackground(gfx::Canvas* canvas) { |
639 if (background_.get()) | 650 if (background_.get()) |
640 background_->Paint(canvas, this); | 651 background_->Paint(canvas, this); |
641 } | 652 } |
642 | 653 |
643 void View::OnPaintBorder(gfx::Canvas* canvas) { | 654 void View::OnPaintBorder(gfx::Canvas* canvas) { |
644 if (border_.get()) | 655 if (border_.get()) |
645 border_->Paint(*this, canvas); | 656 border_->Paint(*this, canvas); |
646 } | 657 } |
647 | 658 |
648 void View::OnPaintFocusBorder(gfx::Canvas* canvas) { | 659 void View::OnPaintFocusBorder(gfx::Canvas* canvas) { |
649 if (HasFocus() && (IsFocusable() || IsAccessibilityFocusableInRootView())) | 660 if (HasFocus() && (IsFocusable() || IsAccessibilityFocusableInRootView())) |
650 canvas->DrawFocusRect(0, 0, width(), height()); | 661 canvas->DrawFocusRect(0, 0, width(), height()); |
651 } | 662 } |
652 | 663 |
653 void View::PaintNow() { | 664 void View::PaintNow() { |
654 if (!IsVisible()) | 665 if (!IsVisible()) |
655 return; | 666 return; |
656 | 667 |
657 if (parent()) | 668 if (parent()) |
658 parent()->PaintNow(); | 669 parent()->PaintNow(); |
659 } | 670 } |
660 | 671 |
661 void View::ProcessPaint(gfx::Canvas* canvas) { | 672 void View::Paint(gfx::Canvas* canvas) { |
662 if (!IsVisible()) | 673 if (!IsVisible()) |
663 return; | 674 return; |
664 | 675 |
665 // We're going to modify the canvas, save it's state first. | 676 // We're going to modify the canvas, save it's state first. |
666 canvas->Save(); | 677 canvas->Save(); |
667 | 678 |
668 // Paint this View and its children, setting the clip rect to the bounds | 679 // Paint this View and its children, setting the clip rect to the bounds |
669 // of this View and translating the origin to the local bounds' top left | 680 // of this View and translating the origin to the local bounds' top left |
670 // point. | 681 // point. |
671 // | 682 // |
(...skipping 24 matching lines...) Expand all Loading... |
696 // didn't request the canvas to be flipped. | 707 // didn't request the canvas to be flipped. |
697 canvas->Restore(); | 708 canvas->Restore(); |
698 | 709 |
699 PaintChildren(canvas); | 710 PaintChildren(canvas); |
700 } | 711 } |
701 | 712 |
702 // Restore the canvas's original transform. | 713 // Restore the canvas's original transform. |
703 canvas->Restore(); | 714 canvas->Restore(); |
704 } | 715 } |
705 | 716 |
706 void View::PaintChildren(gfx::Canvas* canvas) { | |
707 for (int i = 0, count = child_count(); i < count; ++i) { | |
708 View* child = GetChildViewAt(i); | |
709 if (!child) { | |
710 NOTREACHED() << "Should not have a NULL child View for index in bounds"; | |
711 continue; | |
712 } | |
713 child->ProcessPaint(canvas); | |
714 } | |
715 } | |
716 | |
717 ThemeProvider* View::GetThemeProvider() const { | 717 ThemeProvider* View::GetThemeProvider() const { |
718 const Widget* widget = GetWidget(); | 718 const Widget* widget = GetWidget(); |
719 return widget ? widget->GetThemeProvider() : NULL; | 719 return widget ? widget->GetThemeProvider() : NULL; |
720 } | 720 } |
721 | 721 |
722 // Input ----------------------------------------------------------------------- | 722 // Input ----------------------------------------------------------------------- |
723 | 723 |
724 View* View::GetViewForPoint(const gfx::Point& point) { | 724 View* View::GetViewForPoint(const gfx::Point& point) { |
725 // Walk the child Views recursively looking for the View that most | 725 // Walk the child Views recursively looking for the View that most |
726 // tightly encloses the specified point. | 726 // tightly encloses the specified point. |
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1584 OSExchangeData data; | 1584 OSExchangeData data; |
1585 WriteDragData(press_pt, &data); | 1585 WriteDragData(press_pt, &data); |
1586 | 1586 |
1587 // Message the RootView to do the drag and drop. That way if we're removed | 1587 // Message the RootView to do the drag and drop. That way if we're removed |
1588 // the RootView can detect it and avoid calling us back. | 1588 // the RootView can detect it and avoid calling us back. |
1589 RootView* root_view = GetRootView(); | 1589 RootView* root_view = GetRootView(); |
1590 root_view->StartDragForViewFromMouseEvent(this, data, drag_operations); | 1590 root_view->StartDragForViewFromMouseEvent(this, data, drag_operations); |
1591 } | 1591 } |
1592 | 1592 |
1593 } // namespace views | 1593 } // namespace views |
OLD | NEW |