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

Side by Side Diff: chrome/browser/views/info_bar_view.cc

Issue 7344: Convert GetPreferredSize from:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 years, 2 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
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/browser/views/info_bar_view.h" 5 #include "chrome/browser/views/info_bar_view.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/navigation_controller.h" 8 #include "chrome/browser/navigation_controller.h"
9 #include "chrome/browser/navigation_entry.h" 9 #include "chrome/browser/navigation_entry.h"
10 #include "chrome/browser/tab_contents_delegate.h" 10 #include "chrome/browser/tab_contents_delegate.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 // AddChildView adds an entry to expire_map_ for view. 48 // AddChildView adds an entry to expire_map_ for view.
49 AddChildView(view); 49 AddChildView(view);
50 if (auto_expire) 50 if (auto_expire)
51 expire_map_[view] = GetActiveID(); 51 expire_map_[view] = GetActiveID();
52 else 52 else
53 expire_map_.erase(expire_map_.find(view)); 53 expire_map_.erase(expire_map_.find(view));
54 } 54 }
55 55
56 // Preferred size is equal to the max of the childrens horizontal sizes 56 // Preferred size is equal to the max of the childrens horizontal sizes
57 // and the sum of their vertical sizes. 57 // and the sum of their vertical sizes.
58 void InfoBarView::GetPreferredSize(CSize *out) { 58 gfx::Size InfoBarView::GetPreferredSize() {
59 out->cx = 0; 59 gfx::Size prefsize;
60 out->cy = 0;
61 60
62 // We count backwards so the most recently added view is on the top. 61 // We count backwards so the most recently added view is on the top.
63 for (int i = GetChildViewCount() - 1; i >= 0; i--) { 62 for (int i = GetChildViewCount() - 1; i >= 0; i--) {
64 View* v = GetChildViewAt(i); 63 View* v = GetChildViewAt(i);
65 if (v->IsVisible()) { 64 if (v->IsVisible()) {
66 CSize view_size; 65 prefsize.set_width(std::max(prefsize.width(), v->width()));
67 v->GetPreferredSize(&view_size); 66 prefsize.Enlarge(0, v->GetPreferredSize().height() + kSeparatorHeight);
68 out->cx = std::max(static_cast<int>(out->cx), v->width());
69 out->cy += static_cast<int>(view_size.cy) + kSeparatorHeight;
70 } 67 }
71 } 68 }
69
70 return prefsize;
72 } 71 }
73 72
74 void InfoBarView::Layout() { 73 void InfoBarView::Layout() {
75 int x = 0; 74 int x = 0;
76 int y = height(); 75 int y = height();
77 76
78 // We lay the bars out from bottom to top. 77 // We lay the bars out from bottom to top.
79 for (int i = 0; i < GetChildViewCount(); ++i) { 78 for (int i = 0; i < GetChildViewCount(); ++i) {
80 View* v = GetChildViewAt(i); 79 View* v = GetChildViewAt(i);
81 if (!v->IsVisible()) 80 if (!v->IsVisible())
82 continue; 81 continue;
83 82
84 CSize view_size; 83 gfx::Size view_size = v->GetPreferredSize();
85 v->GetPreferredSize(&view_size); 84 int view_width = std::max(view_size.width(), width());
86 int view_width = std::max(static_cast<int>(view_size.cx), width()); 85 y = y - view_size.height() - kSeparatorHeight;
87 y = y - view_size.cy - kSeparatorHeight; 86 v->SetBounds(x, y, view_width, view_size.height());
88 v->SetBounds(x,
89 y,
90 view_width,
91 view_size.cy);
92 } 87 }
93 } 88 }
94 89
95 void InfoBarView::Paint(ChromeCanvas* canvas) { 90 void InfoBarView::Paint(ChromeCanvas* canvas) {
96 PaintBackground(canvas); 91 PaintBackground(canvas);
97 PaintBorder(canvas); 92 PaintBorder(canvas);
98 PaintSeparators(canvas); 93 PaintSeparators(canvas);
99 } 94 }
100 95
101 void InfoBarView::DidChangeBounds(const CRect& previous, 96 void InfoBarView::DidChangeBounds(const CRect& previous,
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 } 229 }
235 230
236 if (GetChildViewCount() == 0) { 231 if (GetChildViewCount() == 0) {
237 // All our views have been removed, no need to stay visible. 232 // All our views have been removed, no need to stay visible.
238 web_contents_->view()->SetInfoBarVisible(false); 233 web_contents_->view()->SetInfoBarVisible(false);
239 } else if (web_contents_) { 234 } else if (web_contents_) {
240 // This triggers a layout. 235 // This triggers a layout.
241 web_contents_->ToolbarSizeChanged(false); 236 web_contents_->ToolbarSizeChanged(false);
242 } 237 }
243 } 238 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698