summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/wrench_menu.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/views/wrench_menu.cc')
-rw-r--r--chrome/browser/views/wrench_menu.cc63
1 files changed, 24 insertions, 39 deletions
diff --git a/chrome/browser/views/wrench_menu.cc b/chrome/browser/views/wrench_menu.cc
index bc7ee5a..e145f0e 100644
--- a/chrome/browser/views/wrench_menu.cc
+++ b/chrome/browser/views/wrench_menu.cc
@@ -12,7 +12,6 @@
#include "base/utf_string_conversions.h"
#include "chrome/app/chrome_dll_resource.h"
#include "chrome/browser/browser.h"
-#include "chrome/browser/host_zoom_map.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/common/notification_observer.h"
@@ -466,44 +465,19 @@ class WrenchMenu::ZoomView : public ScheduleAllView,
private:
void UpdateZoomControls() {
- bool enable_increment, enable_decrement;
- int zoom_percent =
- static_cast<int>(GetZoom(&enable_increment, &enable_decrement));
- enable_increment = enable_increment &&
- menu_model_->IsEnabledAt(increment_button_->tag());
- enable_decrement = enable_decrement &&
- menu_model_->IsEnabledAt(decrement_button_->tag());
+ bool enable_increment = false;
+ bool enable_decrement = false;
+ TabContents* selected_tab = menu_->browser_->GetSelectedTabContents();
+ int zoom = 100;
+ if (selected_tab)
+ zoom = selected_tab->GetZoomPercent(&enable_increment, &enable_decrement);
increment_button_->SetEnabled(enable_increment);
decrement_button_->SetEnabled(enable_decrement);
zoom_label_->SetText(l10n_util::GetStringF(
IDS_ZOOM_PERCENT,
- UTF8ToWide(base::IntToString(zoom_percent))));
- // If both increment and decrement are disabled, then we disable the zoom
- // label too.
- zoom_label_->SetEnabled(enable_increment || enable_decrement);
- }
-
- double GetZoom(bool* enable_increment, bool* enable_decrement) {
- // TODO(sky): move this somewhere it can be shared.
- TabContents* selected_tab = menu_->browser_->GetSelectedTabContents();
- *enable_decrement = *enable_increment = false;
- if (!selected_tab)
- return 1;
-
- HostZoomMap* zoom_map = selected_tab->profile()->GetHostZoomMap();
- if (!zoom_map)
- return 1;
-
- int zoom_level = zoom_map->GetZoomLevel(selected_tab->GetURL());
- double value = ZoomPercentFromZoomLevel(zoom_level);
- *enable_decrement = (value != 50);
- *enable_increment = (value != 300);
- return value;
- }
+ UTF8ToWide(base::IntToString(zoom))));
- double ZoomPercentFromZoomLevel(int level) {
- return static_cast<double>(
- std::max(std::min(std::pow(1.2, level), 3.0), .5)) * 100;
+ zoom_label_width_ = MaxWidthForZoomLabel();
}
// Calculates the max width the zoom string can be.
@@ -512,13 +486,24 @@ class WrenchMenu::ZoomView : public ScheduleAllView,
gfx::Insets insets;
if (zoom_label_->border())
zoom_label_->border()->GetInsets(&insets);
+
int max_w = 0;
- for (int i = -4; i <= 7; ++i) {
- int zoom_percent = static_cast<int>(ZoomPercentFromZoomLevel(i));
- int w = font.GetStringWidth(
- l10n_util::GetStringF(IDS_ZOOM_PERCENT, zoom_percent));
- max_w = std::max(w, max_w);
+
+ TabContents* selected_tab = menu_->browser_->GetSelectedTabContents();
+ if (selected_tab) {
+ int min_percent = selected_tab->minimum_zoom_percent();
+ int max_percent = selected_tab->maximum_zoom_percent();
+
+ int step = (max_percent - min_percent) / 10;
+ for (int i = min_percent; i <= max_percent; i += step) {
+ int w = font.GetStringWidth(l10n_util::GetStringF(IDS_ZOOM_PERCENT, i));
+ max_w = std::max(w, max_w);
+ }
+ } else {
+ int max_w =
+ font.GetStringWidth(l10n_util::GetStringF(IDS_ZOOM_PERCENT, 100));
}
+
return max_w + insets.width();
}