OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/ui/views/toolbar/toolbar_view.h" | 5 #include "chrome/browser/ui/views/toolbar/toolbar_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/i18n/number_formatting.h" | 10 #include "base/i18n/number_formatting.h" |
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
605 home_->SetBounds(next_element_x, child_y, | 605 home_->SetBounds(next_element_x, child_y, |
606 home_->GetPreferredSize().width(), child_height); | 606 home_->GetPreferredSize().width(), child_height); |
607 } else { | 607 } else { |
608 home_->SetVisible(false); | 608 home_->SetVisible(false); |
609 home_->SetBounds(next_element_x, child_y, 0, child_height); | 609 home_->SetBounds(next_element_x, child_y, 0, child_height); |
610 } | 610 } |
611 next_element_x = home_->bounds().right() + | 611 next_element_x = home_->bounds().right() + |
612 theme_provider->GetDisplayProperty( | 612 theme_provider->GetDisplayProperty( |
613 ThemeProperties::PROPERTY_TOOLBAR_VIEW_STANDARD_SPACING); | 613 ThemeProperties::PROPERTY_TOOLBAR_VIEW_STANDARD_SPACING); |
614 | 614 |
615 int browser_actions_width = browser_actions_->GetPreferredSize().width(); | 615 int browser_actions_desired_width = |
616 browser_actions_->GetPreferredSize().width(); | |
616 int app_menu_width = app_menu_->GetPreferredSize().width(); | 617 int app_menu_width = app_menu_->GetPreferredSize().width(); |
617 const int right_edge_spacing = theme_provider->GetDisplayProperty( | 618 const int right_edge_spacing = theme_provider->GetDisplayProperty( |
618 ThemeProperties::PROPERTY_TOOLBAR_VIEW_RIGHT_EDGE_SPACING); | 619 ThemeProperties::PROPERTY_TOOLBAR_VIEW_RIGHT_EDGE_SPACING); |
619 const int location_bar_right_padding = theme_provider->GetDisplayProperty( | 620 const int location_bar_right_padding = theme_provider->GetDisplayProperty( |
620 ThemeProperties::PROPERTY_TOOLBAR_VIEW_LOCATION_BAR_RIGHT_PADDING); | 621 ThemeProperties::PROPERTY_TOOLBAR_VIEW_LOCATION_BAR_RIGHT_PADDING); |
622 | |
623 // Don't allow the omnibox to shrink to the point of non-existence, so | |
624 // subtract its minimum width from the available width to reserve it. | |
625 int minimum_location_bar_width = location_bar_->GetMinimumSize().width(); | |
621 int available_width = std::max( | 626 int available_width = std::max( |
622 0, width() - right_edge_spacing - app_menu_width - browser_actions_width - | 627 0, width() - right_edge_spacing - app_menu_width - |
623 (browser_actions_width > 0 ? element_padding : 0) - | 628 (browser_actions_desired_width > 0 ? element_padding : 0) - |
624 location_bar_right_padding - next_element_x); | 629 location_bar_right_padding - next_element_x - |
630 minimum_location_bar_width); | |
631 int browser_actions_width = | |
632 std::min(available_width, browser_actions_desired_width); | |
633 available_width -= browser_actions_width; | |
634 // The location bar takes whatever's left, plus the minimum width we "set | |
635 // aside" above. | |
Peter Kasting
2015/09/17 00:18:04
This helps, but I think instead of subtracting the
Devlin
2015/09/17 17:00:27
Done.
| |
636 int location_bar_width = minimum_location_bar_width + available_width; | |
625 | 637 |
626 int location_height = location_bar_->GetPreferredSize().height(); | 638 int location_height = location_bar_->GetPreferredSize().height(); |
627 int location_y = CenteredChildY(height(), location_height); | 639 int location_y = CenteredChildY(height(), location_height); |
628 | 640 |
629 location_bar_->SetBounds(next_element_x, location_y, | 641 location_bar_->SetBounds(next_element_x, location_y, |
630 std::max(available_width, 0), location_height); | 642 location_bar_width, location_height); |
631 next_element_x = location_bar_->bounds().right() + location_bar_right_padding; | 643 next_element_x = location_bar_->bounds().right() + location_bar_right_padding; |
632 | 644 |
633 browser_actions_->SetBounds( | 645 browser_actions_->SetBounds( |
634 next_element_x, child_y, browser_actions_width, child_height); | 646 next_element_x, child_y, browser_actions_width, child_height); |
635 next_element_x = browser_actions_->bounds().right(); | 647 next_element_x = browser_actions_->bounds().right(); |
636 if (browser_actions_width > 0) | 648 if (browser_actions_width > 0) |
637 next_element_x += element_padding; | 649 next_element_x += element_padding; |
638 | 650 |
639 // The browser actions need to do a layout explicitly, because when an | 651 // The browser actions need to do a layout explicitly, because when an |
640 // extension is loaded/unloaded/changed, BrowserActionContainer removes and | 652 // extension is loaded/unloaded/changed, BrowserActionContainer removes and |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
852 SchedulePaint(); | 864 SchedulePaint(); |
853 } | 865 } |
854 | 866 |
855 int ToolbarView::content_shadow_height() const { | 867 int ToolbarView::content_shadow_height() const { |
856 ui::ThemeProvider* theme_provider = GetThemeProvider(); | 868 ui::ThemeProvider* theme_provider = GetThemeProvider(); |
857 return theme_provider->GetDisplayProperty( | 869 return theme_provider->GetDisplayProperty( |
858 browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH | 870 browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH |
859 ? ThemeProperties::PROPERTY_TOOLBAR_VIEW_CONTENT_SHADOW_HEIGHT_ASH | 871 ? ThemeProperties::PROPERTY_TOOLBAR_VIEW_CONTENT_SHADOW_HEIGHT_ASH |
860 : ThemeProperties::PROPERTY_TOOLBAR_VIEW_CONTENT_SHADOW_HEIGHT); | 872 : ThemeProperties::PROPERTY_TOOLBAR_VIEW_CONTENT_SHADOW_HEIGHT); |
861 } | 873 } |
OLD | NEW |