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

Side by Side Diff: ui/views/bubble/bubble_dialog_delegate.cc

Issue 2907983002: Allow dialogs to use a custom View as their title. (Closed)
Patch Set: WIP: second iteration Created 3 years, 6 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
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 "ui/views/bubble/bubble_dialog_delegate.h" 5 #include "ui/views/bubble/bubble_dialog_delegate.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/metrics/histogram_macros.h" 8 #include "base/metrics/histogram_macros.h"
9 #include "build/build_config.h" 9 #include "build/build_config.h"
10 #include "ui/accessibility/ax_node_data.h" 10 #include "ui/accessibility/ax_node_data.h"
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 GetWidget()->Close(); 151 GetWidget()->Close();
152 } 152 }
153 153
154 void BubbleDialogDelegateView::OnWidgetBoundsChanged( 154 void BubbleDialogDelegateView::OnWidgetBoundsChanged(
155 Widget* widget, 155 Widget* widget,
156 const gfx::Rect& new_bounds) { 156 const gfx::Rect& new_bounds) {
157 if (GetBubbleFrameView() && anchor_widget() == widget) 157 if (GetBubbleFrameView() && anchor_widget() == widget)
158 SizeToContents(); 158 SizeToContents();
159 } 159 }
160 160
161 void BubbleDialogDelegateView::AddedToWidget() {
162 View* title_view = CreateTitleView();
163 if (title_view) {
164 GetBubbleFrameView()->SetTitleView(title_view);
165 PropagateUpdateTitleView(title_view);
166 }
167 }
168
161 View* BubbleDialogDelegateView::GetAnchorView() const { 169 View* BubbleDialogDelegateView::GetAnchorView() const {
162 return anchor_view_tracker_->view(); 170 return anchor_view_tracker_->view();
163 } 171 }
164 172
165 gfx::Rect BubbleDialogDelegateView::GetAnchorRect() const { 173 gfx::Rect BubbleDialogDelegateView::GetAnchorRect() const {
166 if (!GetAnchorView()) 174 if (!GetAnchorView())
167 return anchor_rect_; 175 return anchor_rect_;
168 176
169 anchor_rect_ = GetAnchorView()->GetBoundsInScreen(); 177 anchor_rect_ = GetAnchorView()->GetBoundsInScreen();
170 anchor_rect_.Inset(anchor_view_insets_); 178 anchor_rect_.Inset(anchor_view_insets_);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 adjust_if_offscreen_ && !anchor_minimized); 242 adjust_if_offscreen_ && !anchor_minimized);
235 } 243 }
236 244
237 const gfx::FontList& BubbleDialogDelegateView::GetTitleFontList() const { 245 const gfx::FontList& BubbleDialogDelegateView::GetTitleFontList() const {
238 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 246 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
239 if (ui::MaterialDesignController::IsSecondaryUiMaterial()) 247 if (ui::MaterialDesignController::IsSecondaryUiMaterial())
240 return rb.GetFontListWithDelta(ui::kTitleFontSizeDelta); 248 return rb.GetFontListWithDelta(ui::kTitleFontSizeDelta);
241 return rb.GetFontList(ui::ResourceBundle::MediumFont); 249 return rb.GetFontList(ui::ResourceBundle::MediumFont);
242 } 250 }
243 251
252 View* BubbleDialogDelegateView::CreateTitleView() {
253 return nullptr;
254 }
255
256 void BubbleDialogDelegateView::PropagateUpdateTitleView(View* title_view) {
257 if (title_view)
258 UpdateTitleView(title_view, GetWindowTitle(), ShouldShowWindowTitle());
259 }
260
244 void BubbleDialogDelegateView::OnNativeThemeChanged( 261 void BubbleDialogDelegateView::OnNativeThemeChanged(
245 const ui::NativeTheme* theme) { 262 const ui::NativeTheme* theme) {
246 UpdateColorsFromTheme(theme); 263 UpdateColorsFromTheme(theme);
247 } 264 }
248 265
249 void BubbleDialogDelegateView::Init() {} 266 void BubbleDialogDelegateView::Init() {}
250 267
251 void BubbleDialogDelegateView::SetAnchorView(View* anchor_view) { 268 void BubbleDialogDelegateView::SetAnchorView(View* anchor_view) {
252 // When the anchor view gets set the associated anchor widget might 269 // When the anchor view gets set the associated anchor widget might
253 // change as well. 270 // change as well.
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 // http://crbug.com/474622 for details. 334 // http://crbug.com/474622 for details.
318 if (widget == GetWidget() && visible) { 335 if (widget == GetWidget() && visible) {
319 ui::AXNodeData node_data; 336 ui::AXNodeData node_data;
320 GetAccessibleNodeData(&node_data); 337 GetAccessibleNodeData(&node_data);
321 if (node_data.role == ui::AX_ROLE_ALERT_DIALOG) 338 if (node_data.role == ui::AX_ROLE_ALERT_DIALOG)
322 NotifyAccessibilityEvent(ui::AX_EVENT_ALERT, true); 339 NotifyAccessibilityEvent(ui::AX_EVENT_ALERT, true);
323 } 340 }
324 } 341 }
325 342
326 } // namespace views 343 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698