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

Side by Side Diff: ui/views/window/custom_frame_view.cc

Issue 554183002: Update the maximize button when size constraints change. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
« no previous file with comments | « ui/views/window/custom_frame_view.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/views/window/custom_frame_view.h" 5 #include "ui/views/window/custom_frame_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 /////////////////////////////////////////////////////////////////////////////// 82 ///////////////////////////////////////////////////////////////////////////////
83 // CustomFrameView, public: 83 // CustomFrameView, public:
84 84
85 CustomFrameView::CustomFrameView() 85 CustomFrameView::CustomFrameView()
86 : frame_(NULL), 86 : frame_(NULL),
87 window_icon_(NULL), 87 window_icon_(NULL),
88 minimize_button_(NULL), 88 minimize_button_(NULL),
89 maximize_button_(NULL), 89 maximize_button_(NULL),
90 restore_button_(NULL), 90 restore_button_(NULL),
91 close_button_(NULL), 91 close_button_(NULL),
92 should_show_maximize_button_(false),
93 frame_background_(new FrameBackground()), 92 frame_background_(new FrameBackground()),
94 minimum_title_bar_x_(0), 93 minimum_title_bar_x_(0),
95 maximum_title_bar_x_(-1) { 94 maximum_title_bar_x_(-1) {
96 } 95 }
97 96
98 CustomFrameView::~CustomFrameView() { 97 CustomFrameView::~CustomFrameView() {
99 } 98 }
100 99
101 void CustomFrameView::Init(Widget* frame) { 100 void CustomFrameView::Init(Widget* frame) {
102 frame_ = frame; 101 frame_ = frame;
103 102
104 close_button_ = InitWindowCaptionButton(IDS_APP_ACCNAME_CLOSE, 103 close_button_ = InitWindowCaptionButton(IDS_APP_ACCNAME_CLOSE,
105 IDR_CLOSE, IDR_CLOSE_H, IDR_CLOSE_P); 104 IDR_CLOSE, IDR_CLOSE_H, IDR_CLOSE_P);
106 minimize_button_ = InitWindowCaptionButton(IDS_APP_ACCNAME_MINIMIZE, 105 minimize_button_ = InitWindowCaptionButton(IDS_APP_ACCNAME_MINIMIZE,
107 IDR_MINIMIZE, IDR_MINIMIZE_H, IDR_MINIMIZE_P); 106 IDR_MINIMIZE, IDR_MINIMIZE_H, IDR_MINIMIZE_P);
108 maximize_button_ = InitWindowCaptionButton(IDS_APP_ACCNAME_MAXIMIZE, 107 maximize_button_ = InitWindowCaptionButton(IDS_APP_ACCNAME_MAXIMIZE,
109 IDR_MAXIMIZE, IDR_MAXIMIZE_H, IDR_MAXIMIZE_P); 108 IDR_MAXIMIZE, IDR_MAXIMIZE_H, IDR_MAXIMIZE_P);
110 restore_button_ = InitWindowCaptionButton(IDS_APP_ACCNAME_RESTORE, 109 restore_button_ = InitWindowCaptionButton(IDS_APP_ACCNAME_RESTORE,
111 IDR_RESTORE, IDR_RESTORE_H, IDR_RESTORE_P); 110 IDR_RESTORE, IDR_RESTORE_H, IDR_RESTORE_P);
112 111
113 should_show_maximize_button_ = frame_->widget_delegate()->CanMaximize();
114
115 if (frame_->widget_delegate()->ShouldShowWindowIcon()) { 112 if (frame_->widget_delegate()->ShouldShowWindowIcon()) {
116 window_icon_ = new ImageButton(this); 113 window_icon_ = new ImageButton(this);
117 AddChildView(window_icon_); 114 AddChildView(window_icon_);
118 } 115 }
119 } 116 }
120 117
121 /////////////////////////////////////////////////////////////////////////////// 118 ///////////////////////////////////////////////////////////////////////////////
122 // CustomFrameView, NonClientFrameView implementation: 119 // CustomFrameView, NonClientFrameView implementation:
123 120
124 gfx::Rect CustomFrameView::GetBoundsForClientView() const { 121 gfx::Rect CustomFrameView::GetBoundsForClientView() const {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 174
178 void CustomFrameView::GetWindowMask(const gfx::Size& size, 175 void CustomFrameView::GetWindowMask(const gfx::Size& size,
179 gfx::Path* window_mask) { 176 gfx::Path* window_mask) {
180 DCHECK(window_mask); 177 DCHECK(window_mask);
181 if (frame_->IsMaximized() || !ShouldShowTitleBarAndBorder()) 178 if (frame_->IsMaximized() || !ShouldShowTitleBarAndBorder())
182 return; 179 return;
183 180
184 GetDefaultWindowMask(size, window_mask); 181 GetDefaultWindowMask(size, window_mask);
185 } 182 }
186 183
187 void CustomFrameView::ResetWindowControls() { 184 void CustomFrameView::ResetWindowControls() {
sky 2014/09/09 15:42:32 Currently ResetWindowControls is: // Tells the w
jackhou1 2014/09/10 00:49:15 Done. Is it okay to have an empty implementation
188 restore_button_->SetState(CustomButton::STATE_NORMAL); 185 restore_button_->SetState(CustomButton::STATE_NORMAL);
189 minimize_button_->SetState(CustomButton::STATE_NORMAL); 186 minimize_button_->SetState(CustomButton::STATE_NORMAL);
190 maximize_button_->SetState(CustomButton::STATE_NORMAL); 187 maximize_button_->SetState(CustomButton::STATE_NORMAL);
191 // The close button isn't affected by this constraint. 188 // The close button isn't affected by this constraint.
189
190 LayoutWindowControls();
192 } 191 }
193 192
194 void CustomFrameView::UpdateWindowIcon() { 193 void CustomFrameView::UpdateWindowIcon() {
195 if (window_icon_) 194 if (window_icon_)
196 window_icon_->SchedulePaint(); 195 window_icon_->SchedulePaint();
197 } 196 }
198 197
199 void CustomFrameView::UpdateWindowTitle() { 198 void CustomFrameView::UpdateWindowTitle() {
200 if (frame_->widget_delegate()->ShouldShowWindowTitle()) 199 if (frame_->widget_delegate()->ShouldShowWindowTitle())
201 SchedulePaintInRect(title_bounds_); 200 SchedulePaintInRect(title_bounds_);
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 ImageButton* CustomFrameView::GetImageButton(views::FrameButton frame_button) { 594 ImageButton* CustomFrameView::GetImageButton(views::FrameButton frame_button) {
596 ImageButton* button = NULL; 595 ImageButton* button = NULL;
597 switch (frame_button) { 596 switch (frame_button) {
598 case views::FRAME_BUTTON_MINIMIZE: { 597 case views::FRAME_BUTTON_MINIMIZE: {
599 button = minimize_button_; 598 button = minimize_button_;
600 break; 599 break;
601 } 600 }
602 case views::FRAME_BUTTON_MAXIMIZE: { 601 case views::FRAME_BUTTON_MAXIMIZE: {
603 bool is_restored = !frame_->IsMaximized() && !frame_->IsMinimized(); 602 bool is_restored = !frame_->IsMaximized() && !frame_->IsMinimized();
604 button = is_restored ? maximize_button_ : restore_button_; 603 button = is_restored ? maximize_button_ : restore_button_;
605 if (!should_show_maximize_button_) { 604 // If we should not show the maximize/restore button, then we return
606 // If we should not show the maximize/restore button, then we return 605 // NULL as we don't want this button to become visible and to be laid
607 // NULL as we don't want this button to become visible and to be laid 606 // out.
608 // out. 607 bool should_show = frame_->widget_delegate()->CanMaximize();
609 button->SetVisible(false); 608 button->SetVisible(should_show);
609 if (!should_show)
610 return NULL; 610 return NULL;
611 } 611
612 break; 612 break;
613 } 613 }
614 case views::FRAME_BUTTON_CLOSE: { 614 case views::FRAME_BUTTON_CLOSE: {
615 button = close_button_; 615 button = close_button_;
616 break; 616 break;
617 } 617 }
618 } 618 }
619 return button; 619 return button;
620 } 620 }
621 621
622 } // namespace views 622 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/window/custom_frame_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698