summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/frame
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-14 23:23:48 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-14 23:23:48 +0000
commitc0da1e2916de58b9a36cc70455a11af0d0031674 (patch)
treecdf300533a9c10484e0089fc1990214f53993f28 /chrome/browser/views/frame
parent97bf4edfdf217222c312da38d983ac1099c36163 (diff)
downloadchromium_src-c0da1e2916de58b9a36cc70455a11af0d0031674.zip
chromium_src-c0da1e2916de58b9a36cc70455a11af0d0031674.tar.gz
chromium_src-c0da1e2916de58b9a36cc70455a11af0d0031674.tar.bz2
Hides the control buttons for browser when maximized on chrome
os. maximized is the default state on chrome os, so this effectively gives us no window controls just as we have now. BUG=none TEST=none Review URL: http://codereview.chromium.org/273055 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29061 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views/frame')
-rw-r--r--chrome/browser/views/frame/opaque_browser_frame_view.cc46
-rw-r--r--chrome/browser/views/frame/opaque_browser_frame_view.h4
2 files changed, 39 insertions, 11 deletions
diff --git a/chrome/browser/views/frame/opaque_browser_frame_view.cc b/chrome/browser/views/frame/opaque_browser_frame_view.cc
index fd01b30..eb936ea 100644
--- a/chrome/browser/views/frame/opaque_browser_frame_view.cc
+++ b/chrome/browser/views/frame/opaque_browser_frame_view.cc
@@ -236,10 +236,14 @@ gfx::Size OpaqueBrowserFrameView::GetMinimumSize() {
(d->ShouldShowWindowIcon() ?
(IconSize(NULL, NULL, NULL) + kTitleLogoSpacing) : 0) +
((distributor_logo_ && browser_view_->ShouldShowDistributorLogo()) ?
- (distributor_logo_->width() + kLogoCaptionSpacing) : 0) +
- minimize_button_->GetMinimumSize().width() +
- restore_button_->GetMinimumSize().width() +
- close_button_->GetMinimumSize().width();
+ (distributor_logo_->width() + kLogoCaptionSpacing) : 0);
+
+#if !defined(OS_CHROMEOS)
+ min_titlebar_width +=
+ minimize_button_->GetMinimumSize().width() +
+ restore_button_->GetMinimumSize().width() +
+ close_button_->GetMinimumSize().width();
+#endif
min_size.set_width(std::max(min_size.width(), min_titlebar_width));
return min_size;
@@ -285,15 +289,19 @@ int OpaqueBrowserFrameView::NonClientHitTest(const gfx::Point& point) {
return frame_component;
// Then see if the point is within any of the window controls.
- if (close_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(point))
+ if (close_button_->IsVisible() &&
+ close_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(point))
return HTCLOSE;
- if (restore_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(
+ if (restore_button_->IsVisible() &&
+ restore_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(
point))
return HTMAXBUTTON;
- if (maximize_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(
+ if (maximize_button_->IsVisible() &&
+ maximize_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(
point))
return HTMAXBUTTON;
- if (minimize_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(
+ if (minimize_button_->IsVisible() &&
+ minimize_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(
point))
return HTMINBUTTON;
if (window_icon_ &&
@@ -530,6 +538,10 @@ int OpaqueBrowserFrameView::TitleCoordinates(int* title_top_spacing_ptr,
UnavailablePixelsAtBottomOfNonClientHeight();
}
+int OpaqueBrowserFrameView::RightEdge() const {
+ return width() - FrameBorderThickness();
+}
+
int OpaqueBrowserFrameView::IconSize(int* title_top_spacing_ptr,
int* title_thickness_ptr,
int* available_height_ptr) const {
@@ -911,11 +923,23 @@ void OpaqueBrowserFrameView::PaintRestoredClientEdge(gfx::Canvas* canvas) {
}
void OpaqueBrowserFrameView::LayoutWindowControls() {
+ bool is_maximized = frame_->GetWindow()->IsMaximized();
+#if defined(OS_CHROMEOS)
+ minimize_button_->SetVisible(!is_maximized);
+ restore_button_->SetVisible(!is_maximized);
+ maximize_button_->SetVisible(!is_maximized);
+ close_button_->SetVisible(!is_maximized);
+ if (is_maximized) {
+ // Set the bounds of the minimize button so that we don't have to change
+ // other places that rely on the bounds.
+ minimize_button_->SetBounds(RightEdge(), 0, 0, 0);
+ return;
+ }
+#endif
close_button_->SetImageAlignment(views::ImageButton::ALIGN_LEFT,
views::ImageButton::ALIGN_BOTTOM);
// Maximized buttons start at window top so that even if their images aren't
// drawn flush with the screen edge, they still obey Fitts' Law.
- bool is_maximized = frame_->GetWindow()->IsMaximized();
int frame_thickness = FrameBorderThickness();
int caption_y = is_maximized ? frame_thickness : kFrameShadowThickness;
// There should always be the same number of non-shadow pixels visible to the
@@ -924,8 +948,8 @@ void OpaqueBrowserFrameView::LayoutWindowControls() {
int right_extra_width = is_maximized ?
(kFrameBorderThickness - kFrameShadowThickness) : 0;
gfx::Size close_button_size = close_button_->GetPreferredSize();
- close_button_->SetBounds(width() - close_button_size.width() -
- right_extra_width - frame_thickness, caption_y,
+ close_button_->SetBounds(RightEdge() - close_button_size.width() -
+ right_extra_width, caption_y,
close_button_size.width() + right_extra_width,
close_button_size.height());
diff --git a/chrome/browser/views/frame/opaque_browser_frame_view.h b/chrome/browser/views/frame/opaque_browser_frame_view.h
index 720b2be5..857d783 100644
--- a/chrome/browser/views/frame/opaque_browser_frame_view.h
+++ b/chrome/browser/views/frame/opaque_browser_frame_view.h
@@ -94,6 +94,10 @@ class OpaqueBrowserFrameView : public BrowserNonClientFrameView,
int TitleCoordinates(int* title_top_spacing_ptr,
int* title_thickness_ptr) const;
+ // Returns the right edge. This is the end the close button starts at (if a
+ // close button is shown).
+ int RightEdge() const;
+
// Calculates multiple values related to icon layout. Returns the size of the
// icon (along one edge).
int IconSize(int* title_top_spacing_ptr,