dialog_delegate.cc revision 90dce4d38c5ff5333bea97d859d4e484e27edf0c
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/window/dialog_delegate.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "grit/ui_strings.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 10b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include "ui/base/ui_base_switches_util.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/bubble/bubble_border.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/bubble/bubble_frame_view.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/controls/button/label_button.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/widget/widget_observer.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/window/dialog_client_view.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_AURA) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/corewm/shadow_types.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)//////////////////////////////////////////////////////////////////////////////// 25b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// DialogDelegate: 26b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 27b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)DialogDelegate::~DialogDelegate() { 28b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 29b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 30b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// static 31b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)bool DialogDelegate::UseNewStyle() { 32b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return switches::IsNewDialogStyleEnabled(); 33b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 35b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// static 36b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)Widget* DialogDelegate::CreateDialogWidget(DialogDelegate* dialog, 37b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) gfx::NativeWindow context, 38b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) gfx::NativeWindow parent) { 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views::Widget* widget = new views::Widget; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views::Widget::InitParams params; 41b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) params.delegate = dialog; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (DialogDelegate::UseNewStyle()) { 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Note: Transparent widgets cannot host native Windows textfield controls. 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) params.transparent = true; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) params.remove_standard_frame = true; 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) params.context = context; 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) params.parent = parent; 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) params.top_level = true; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) widget->Init(params); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (DialogDelegate::UseNewStyle()) { 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_AURA) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TODO(msw): Add a matching shadow type and remove the bubble frame border? 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) corewm::SetShadowType(widget->GetNativeWindow(), corewm::SHADOW_TYPE_NONE); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return widget; 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 60a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)View* DialogDelegate::CreateExtraView() { 61a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return NULL; 62a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 63a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 64a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)View* DialogDelegate::CreateTitlebarExtraView() { 65a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return NULL; 66a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 67a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 68a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)View* DialogDelegate::CreateFootnoteView() { 69a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return NULL; 70a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 71a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 72a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::Cancel() { 73a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return true; 74a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 75a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 76a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::Accept(bool window_closing) { 77a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return Accept(); 78a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 79a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 80a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::Accept() { 81a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return true; 82a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 83a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 84a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)base::string16 DialogDelegate::GetDialogLabel() const { 85a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return base::string16(); 86a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 87a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 88a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)base::string16 DialogDelegate::GetDialogTitle() const { 89a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return base::string16(); 90a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 91a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int DialogDelegate::GetDialogButtons() const { 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int DialogDelegate::GetDefaultDialogButton() const { 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (GetDialogButtons() & ui::DIALOG_BUTTON_OK) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ui::DIALOG_BUTTON_OK; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (GetDialogButtons() & ui::DIALOG_BUTTON_CANCEL) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ui::DIALOG_BUTTON_CANCEL; 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ui::DIALOG_BUTTON_NONE; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 104a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)base::string16 DialogDelegate::GetDialogButtonLabel( 105a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) ui::DialogButton button) const { 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (button == ui::DIALOG_BUTTON_OK) 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return l10n_util::GetStringUTF16(IDS_APP_OK); 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (button == ui::DIALOG_BUTTON_CANCEL) { 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (GetDialogButtons() & ui::DIALOG_BUTTON_OK) 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return l10n_util::GetStringUTF16(IDS_APP_CANCEL); 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return l10n_util::GetStringUTF16(IDS_APP_CLOSE); 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NOTREACHED(); 114a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return base::string16(); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool DialogDelegate::IsDialogButtonEnabled(ui::DialogButton button) const { 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 121a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::OnDialogButtonActivated(ui::DialogButton button) { 122a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) if (button == ui::DIALOG_BUTTON_OK) 123a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return Accept(); 124a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) if (button == ui::DIALOG_BUTTON_CANCEL) 125a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return Cancel(); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)View* DialogDelegate::GetInitiallyFocusedView() { 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Focus the default button if any. 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const DialogClientView* dcv = GetDialogClientView(); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int default_button = GetDefaultDialogButton(); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (default_button == ui::DIALOG_BUTTON_NONE) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((default_button & GetDialogButtons()) == 0) { 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The default button is a button we don't have. 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (default_button & ui::DIALOG_BUTTON_OK) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return dcv->ok_button(); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (default_button & ui::DIALOG_BUTTON_CANCEL) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return dcv->cancel_button(); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DialogDelegate* DialogDelegate::AsDialogDelegate() { 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return this; 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ClientView* DialogDelegate::CreateClientView(Widget* widget) { 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return new DialogClientView(widget, GetContentsView()); 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)NonClientFrameView* DialogDelegate::CreateNonClientFrameView(Widget* widget) { 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return UseNewStyle() ? CreateNewStyleFrameView(widget) : 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WidgetDelegate::CreateNonClientFrameView(widget); 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)NonClientFrameView* DialogDelegate::CreateNewStyleFrameView(Widget* widget) { 164b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return CreateNewStyleFrameView(widget, false); 165b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 166b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 167b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)NonClientFrameView* DialogDelegate::CreateNewStyleFrameView( 168b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) Widget* widget, 169b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) bool force_opaque_border) { 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) BubbleFrameView* frame = new BubbleFrameView(gfx::Insets()); 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const SkColor color = widget->GetNativeTheme()->GetSystemColor( 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui::NativeTheme::kColorId_DialogBackground); 173b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) if (force_opaque_border) { 174b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) frame->SetBubbleBorder(new BubbleBorder( 175b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) BubbleBorder::NONE, 176b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) BubbleBorder::NO_SHADOW_OPAQUE_BORDER, 177b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) color)); 178b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } else { 179b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) frame->SetBubbleBorder(new BubbleBorder(BubbleBorder::FLOAT, 180b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) BubbleBorder::SMALL_SHADOW, 181b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) color)); 182b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) frame->SetTitle(widget->widget_delegate()->GetWindowTitle()); 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DialogDelegate* delegate = widget->widget_delegate()->AsDialogDelegate(); 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (delegate) { 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) View* titlebar_view = delegate->CreateTitlebarExtraView(); 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (titlebar_view) 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) frame->SetTitlebarExtraView(titlebar_view); 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 19090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) frame->SetShowCloseButton(widget->widget_delegate()->ShouldShowCloseButton()); 191b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) if (force_opaque_border) 192b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) widget->set_frame_type(views::Widget::FRAME_TYPE_FORCE_CUSTOM); 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return frame; 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const DialogClientView* DialogDelegate::GetDialogClientView() const { 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetWidget()->client_view()->AsDialogClientView(); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DialogClientView* DialogDelegate::GetDialogClientView() { 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetWidget()->client_view()->AsDialogClientView(); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ui::AccessibilityTypes::Role DialogDelegate::GetAccessibleWindowRole() const { 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ui::AccessibilityTypes::ROLE_DIALOG; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//////////////////////////////////////////////////////////////////////////////// 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DialogDelegateView: 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DialogDelegateView::DialogDelegateView() { 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // A WidgetDelegate should be deleted on DeleteDelegate. 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) set_owned_by_client(); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DialogDelegateView::~DialogDelegateView() {} 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DialogDelegateView::DeleteDelegate() { 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delete this; 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Widget* DialogDelegateView::GetWidget() { 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return View::GetWidget(); 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const Widget* DialogDelegateView::GetWidget() const { 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return View::GetWidget(); 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)View* DialogDelegateView::GetContentsView() { 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return this; 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace views 235