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

Side by Side Diff: ash/common/system/toast/toast_overlay.cc

Issue 2506583005: Hide dismiss button on toast when doing partial screenshot using stylus tools. (Closed)
Patch Set: Created 4 years, 1 month 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 | « ash/common/system/toast/toast_overlay.h ('k') | ash/system/toast/toast_manager_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "ash/common/system/toast/toast_overlay.h" 5 #include "ash/common/system/toast/toast_overlay.h"
6 6
7 #include "ash/common/shelf/wm_shelf.h" 7 #include "ash/common/shelf/wm_shelf.h"
8 #include "ash/common/wm_lookup.h" 8 #include "ash/common/wm_lookup.h"
9 #include "ash/common/wm_root_window_controller.h" 9 #include "ash/common/wm_root_window_controller.h"
10 #include "ash/common/wm_shell.h" 10 #include "ash/common/wm_shell.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 int verticalSpacing = kToastVerticalSpacing - 122 int verticalSpacing = kToastVerticalSpacing -
123 (GetPreferredSize().height() - label()->GetBaseline()); 123 (GetPreferredSize().height() - label()->GetBaseline());
124 SetBorder(views::CreateEmptyBorder(verticalSpacing, kToastHorizontalSpacing, 124 SetBorder(views::CreateEmptyBorder(verticalSpacing, kToastHorizontalSpacing,
125 verticalSpacing, kToastHorizontalSpacing)); 125 verticalSpacing, kToastHorizontalSpacing));
126 } 126 }
127 127
128 /////////////////////////////////////////////////////////////////////////////// 128 ///////////////////////////////////////////////////////////////////////////////
129 // ToastOverlayView 129 // ToastOverlayView
130 class ToastOverlayView : public views::View, public views::ButtonListener { 130 class ToastOverlayView : public views::View, public views::ButtonListener {
131 public: 131 public:
132 // This object is not owned by the views hiearchy or by the widget. 132 // This object is not owned by the views hierarchy or by the widget.
133 ToastOverlayView(ToastOverlay* overlay, 133 ToastOverlayView(ToastOverlay* overlay,
134 const base::string16& text, 134 const base::string16& text,
135 const base::string16& dismiss_text); 135 const base::Optional<base::string16>& dismiss_text);
136 ~ToastOverlayView() override; 136 ~ToastOverlayView() override;
137 137
138 // views::View overrides: 138 // views::View overrides:
139 void OnPaint(gfx::Canvas* canvas) override; 139 void OnPaint(gfx::Canvas* canvas) override;
140 140
141 ToastOverlayButton* button() { return button_; } 141 ToastOverlayButton* button() { return button_; }
142 142
143 private: 143 private:
144 ToastOverlay* overlay_; // weak 144 // views::View overrides:
145 ToastOverlayButton* button_; // weak
146
147 gfx::Size GetMaximumSize() const override; 145 gfx::Size GetMaximumSize() const override;
148 gfx::Size GetMinimumSize() const override; 146 gfx::Size GetMinimumSize() const override;
149 147
148 // views::ButtonListener overrides:
150 void ButtonPressed(views::Button* sender, const ui::Event& event) override; 149 void ButtonPressed(views::Button* sender, const ui::Event& event) override;
151 150
151 ToastOverlay* overlay_ = nullptr; // weak
152 ToastOverlayButton* button_ = nullptr; // weak
153
152 DISALLOW_COPY_AND_ASSIGN(ToastOverlayView); 154 DISALLOW_COPY_AND_ASSIGN(ToastOverlayView);
153 }; 155 };
154 156
155 ToastOverlayView::ToastOverlayView(ToastOverlay* overlay, 157 ToastOverlayView::ToastOverlayView(
156 const base::string16& text, 158 ToastOverlay* overlay,
157 const base::string16& dismiss_text) 159 const base::string16& text,
158 : overlay_(overlay), 160 const base::Optional<base::string16>& dismiss_text)
159 button_(new ToastOverlayButton( 161 : overlay_(overlay) {
160 this,
161 dismiss_text.empty()
162 ? l10n_util::GetStringUTF16(IDS_ASH_TOAST_DISMISS_BUTTON)
163 : dismiss_text)) {
164 ToastOverlayLabel* label = new ToastOverlayLabel(text);
165 label->SetMaximumWidth(
166 GetMaximumSize().width() - button_->GetPreferredSize().width() -
167 kToastHorizontalSpacing * 2 - kToastHorizontalSpacing * 2);
168 AddChildView(label);
169
170 AddChildView(button_);
171
172 auto* layout = new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0); 162 auto* layout = new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0);
173 SetLayoutManager(layout); 163 SetLayoutManager(layout);
164
165 if (dismiss_text.has_value()) {
166 button_ = new ToastOverlayButton(
167 this, dismiss_text.value().empty()
168 ? l10n_util::GetStringUTF16(IDS_ASH_TOAST_DISMISS_BUTTON)
169 : dismiss_text.value());
170 }
171
172 ToastOverlayLabel* label = new ToastOverlayLabel(text);
173 AddChildView(label);
174 layout->SetFlexForView(label, 1); 174 layout->SetFlexForView(label, 1);
175 layout->SetFlexForView(button_, 0); 175
176 if (button_) {
177 label->SetMaximumWidth(
178 GetMaximumSize().width() - button_->GetPreferredSize().width() -
179 kToastHorizontalSpacing * 2 - kToastHorizontalSpacing * 2);
180 AddChildView(button_);
181 }
176 } 182 }
177 183
178 ToastOverlayView::~ToastOverlayView() {} 184 ToastOverlayView::~ToastOverlayView() {}
179 185
180 void ToastOverlayView::OnPaint(gfx::Canvas* canvas) { 186 void ToastOverlayView::OnPaint(gfx::Canvas* canvas) {
181 SkPaint paint; 187 SkPaint paint;
182 paint.setStyle(SkPaint::kFill_Style); 188 paint.setStyle(SkPaint::kFill_Style);
183 paint.setColor(kButtonBackgroundColor); 189 paint.setColor(kButtonBackgroundColor);
184 canvas->DrawRoundRect(GetLocalBounds(), 2, paint); 190 canvas->DrawRoundRect(GetLocalBounds(), 2, paint);
185 views::View::OnPaint(canvas); 191 views::View::OnPaint(canvas);
186 } 192 }
187 193
188 gfx::Size ToastOverlayView::GetMinimumSize() const { 194 gfx::Size ToastOverlayView::GetMinimumSize() const {
189 return gfx::Size(kToastMinimumWidth, 0); 195 return gfx::Size(kToastMinimumWidth, 0);
190 } 196 }
191 197
192 gfx::Size ToastOverlayView::GetMaximumSize() const { 198 gfx::Size ToastOverlayView::GetMaximumSize() const {
193 gfx::Rect work_area_bounds = GetUserWorkAreaBounds(); 199 gfx::Rect work_area_bounds = GetUserWorkAreaBounds();
194 return gfx::Size(kToastMaximumWidth, work_area_bounds.height() - kOffset * 2); 200 return gfx::Size(kToastMaximumWidth, work_area_bounds.height() - kOffset * 2);
195 } 201 }
196 202
197 void ToastOverlayView::ButtonPressed(views::Button* sender, 203 void ToastOverlayView::ButtonPressed(views::Button* sender,
198 const ui::Event& event) { 204 const ui::Event& event) {
205 DCHECK_EQ(button_, sender);
199 overlay_->Show(false); 206 overlay_->Show(false);
200 } 207 }
201 208
202 /////////////////////////////////////////////////////////////////////////////// 209 ///////////////////////////////////////////////////////////////////////////////
203 // ToastOverlay 210 // ToastOverlay
204 ToastOverlay::ToastOverlay(Delegate* delegate, 211 ToastOverlay::ToastOverlay(Delegate* delegate,
205 const base::string16& text, 212 const base::string16& text,
206 const base::string16& dismiss_text) 213 base::Optional<base::string16> dismiss_text)
207 : delegate_(delegate), 214 : delegate_(delegate),
208 text_(text), 215 text_(text),
209 dismiss_text_(dismiss_text), 216 dismiss_text_(dismiss_text),
210 overlay_widget_(new views::Widget), 217 overlay_widget_(new views::Widget),
211 overlay_view_(new ToastOverlayView(this, text, dismiss_text)), 218 overlay_view_(new ToastOverlayView(this, text, dismiss_text)),
212 widget_size_(overlay_view_->GetPreferredSize()) { 219 widget_size_(overlay_view_->GetPreferredSize()) {
213 views::Widget::InitParams params; 220 views::Widget::InitParams params;
214 params.type = views::Widget::InitParams::TYPE_POPUP; 221 params.type = views::Widget::InitParams::TYPE_POPUP;
215 params.name = "ToastOverlay"; 222 params.name = "ToastOverlay";
216 params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW; 223 params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 293
287 void ToastOverlay::OnImplicitAnimationsCompleted() { 294 void ToastOverlay::OnImplicitAnimationsCompleted() {
288 if (!overlay_widget_->GetLayer()->GetTargetVisibility()) 295 if (!overlay_widget_->GetLayer()->GetTargetVisibility())
289 delegate_->OnClosed(); 296 delegate_->OnClosed();
290 } 297 }
291 298
292 views::Widget* ToastOverlay::widget_for_testing() { 299 views::Widget* ToastOverlay::widget_for_testing() {
293 return overlay_widget_.get(); 300 return overlay_widget_.get();
294 } 301 }
295 302
303 ToastOverlayButton* ToastOverlay::dismiss_button_for_testing() {
304 return overlay_view_->button();
305 }
306
296 void ToastOverlay::ClickDismissButtonForTesting(const ui::Event& event) { 307 void ToastOverlay::ClickDismissButtonForTesting(const ui::Event& event) {
297 overlay_view_->button()->NotifyClick(event); 308 overlay_view_->button()->NotifyClick(event);
yoshiki 2016/11/16 04:22:45 nit: Could you add DCHECK(overlay_view_->button())
jdufault 2016/11/16 19:13:56 Done.
298 } 309 }
299 310
300 } // namespace ash 311 } // namespace ash
OLDNEW
« no previous file with comments | « ash/common/system/toast/toast_overlay.h ('k') | ash/system/toast/toast_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698