OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/browser_actions_container.h" | 5 #include "chrome/browser/views/browser_actions_container.h" |
6 | 6 |
7 #include "app/gfx/canvas.h" | 7 #include "app/gfx/canvas.h" |
8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
9 #include "base/stl_util-inl.h" | 9 #include "base/stl_util-inl.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 "Asked to add a browser action view for an extension that already " | 268 "Asked to add a browser action view for an extension that already " |
269 "exists."; | 269 "exists."; |
270 } | 270 } |
271 #endif | 271 #endif |
272 if (!extension->browser_action()) | 272 if (!extension->browser_action()) |
273 return; | 273 return; |
274 | 274 |
275 BrowserActionView* view = new BrowserActionView(extension, this); | 275 BrowserActionView* view = new BrowserActionView(extension, this); |
276 browser_action_views_.push_back(view); | 276 browser_action_views_.push_back(view); |
277 AddChildView(view); | 277 AddChildView(view); |
| 278 if (GetParent()) |
| 279 GetParent()->SchedulePaint(); |
278 } | 280 } |
279 | 281 |
280 void BrowserActionsContainer::RemoveBrowserAction(Extension* extension) { | 282 void BrowserActionsContainer::RemoveBrowserAction(Extension* extension) { |
281 if (!extension->browser_action()) | 283 if (!extension->browser_action()) |
282 return; | 284 return; |
283 | 285 |
284 for (std::vector<BrowserActionView*>::iterator iter = | 286 for (std::vector<BrowserActionView*>::iterator iter = |
285 browser_action_views_.begin(); iter != browser_action_views_.end(); | 287 browser_action_views_.begin(); iter != browser_action_views_.end(); |
286 ++iter) { | 288 ++iter) { |
287 if ((*iter)->button()->extension() == extension) { | 289 if ((*iter)->button()->extension() == extension) { |
288 RemoveChildView(*iter); | 290 RemoveChildView(*iter); |
289 browser_action_views_.erase(iter); | 291 browser_action_views_.erase(iter); |
| 292 if (GetParent()) |
| 293 GetParent()->SchedulePaint(); |
290 return; | 294 return; |
291 } | 295 } |
292 } | 296 } |
293 | 297 |
294 NOTREACHED() << "Asked to remove a browser action view that doesn't exist."; | 298 NOTREACHED() << "Asked to remove a browser action view that doesn't exist."; |
295 } | 299 } |
296 | 300 |
297 void BrowserActionsContainer::DeleteBrowserActionViews() { | 301 void BrowserActionsContainer::DeleteBrowserActionViews() { |
298 if (!browser_action_views_.empty()) { | 302 if (!browser_action_views_.empty()) { |
299 for (size_t i = 0; i < browser_action_views_.size(); ++i) | 303 for (size_t i = 0; i < browser_action_views_.size(); ++i) |
300 RemoveChildView(browser_action_views_[i]); | 304 RemoveChildView(browser_action_views_[i]); |
301 STLDeleteContainerPointers(browser_action_views_.begin(), | 305 STLDeleteContainerPointers(browser_action_views_.begin(), |
302 browser_action_views_.end()); | 306 browser_action_views_.end()); |
303 browser_action_views_.clear(); | 307 browser_action_views_.clear(); |
304 } | 308 } |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 std::min(static_cast<int>(browser_action_views_.size()), | 456 std::min(static_cast<int>(browser_action_views_.size()), |
453 kMinimumNumberOfVisibleBrowserActions) * kButtonSize; | 457 kMinimumNumberOfVisibleBrowserActions) * kButtonSize; |
454 | 458 |
455 // Even if available_width is <= 0, we still return at least the |min_width|. | 459 // Even if available_width is <= 0, we still return at least the |min_width|. |
456 if (available_width <= 0) | 460 if (available_width <= 0) |
457 return min_width; | 461 return min_width; |
458 | 462 |
459 return std::max(min_width, available_width - available_width % kButtonSize + | 463 return std::max(min_width, available_width - available_width % kButtonSize + |
460 kHorizontalPadding * 2); | 464 kHorizontalPadding * 2); |
461 } | 465 } |
OLD | NEW |