widget_delegate.cc revision 58537e28ecd584eab876aee8be7156509866d23a
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 3// found in the LICENSE file. 4 5#include "ui/views/widget/widget_delegate.h" 6 7#include "base/strings/utf_string_conversions.h" 8#include "ui/gfx/image/image_skia.h" 9#include "ui/views/bubble/bubble_delegate.h" 10#include "ui/views/view.h" 11#include "ui/views/views_delegate.h" 12#include "ui/views/widget/widget.h" 13#include "ui/views/window/client_view.h" 14 15namespace views { 16 17//////////////////////////////////////////////////////////////////////////////// 18// WidgetDelegate: 19 20WidgetDelegate::WidgetDelegate() : default_contents_view_(NULL) { 21} 22 23void WidgetDelegate::OnWidgetMove() { 24} 25 26void WidgetDelegate::OnDisplayChanged() { 27} 28 29void WidgetDelegate::OnWorkAreaChanged() { 30} 31 32View* WidgetDelegate::GetInitiallyFocusedView() { 33 return NULL; 34} 35 36BubbleDelegateView* WidgetDelegate::AsBubbleDelegate() { 37 return NULL; 38} 39 40DialogDelegate* WidgetDelegate::AsDialogDelegate() { 41 return NULL; 42} 43 44bool WidgetDelegate::CanResize() const { 45 return false; 46} 47 48bool WidgetDelegate::CanMaximize() const { 49 return false; 50} 51 52bool WidgetDelegate::CanActivate() const { 53 return true; 54} 55 56ui::ModalType WidgetDelegate::GetModalType() const { 57 return ui::MODAL_TYPE_NONE; 58} 59 60ui::AccessibilityTypes::Role WidgetDelegate::GetAccessibleWindowRole() const { 61 return ui::AccessibilityTypes::ROLE_WINDOW; 62} 63 64string16 WidgetDelegate::GetAccessibleWindowTitle() const { 65 return GetWindowTitle(); 66} 67 68string16 WidgetDelegate::GetWindowTitle() const { 69 return string16(); 70} 71 72bool WidgetDelegate::ShouldShowWindowTitle() const { 73 return true; 74} 75 76bool WidgetDelegate::ShouldShowCloseButton() const { 77 return true; 78} 79 80bool WidgetDelegate::ShouldHandleSystemCommands() const { 81 const Widget* widget = GetWidget(); 82 if (!widget) 83 return false; 84 85 return widget->non_client_view() != NULL; 86} 87 88gfx::ImageSkia WidgetDelegate::GetWindowAppIcon() { 89 // Use the window icon as app icon by default. 90 return GetWindowIcon(); 91} 92 93// Returns the icon to be displayed in the window. 94gfx::ImageSkia WidgetDelegate::GetWindowIcon() { 95 return gfx::ImageSkia(); 96} 97 98bool WidgetDelegate::ShouldShowWindowIcon() const { 99 return false; 100} 101 102bool WidgetDelegate::ExecuteWindowsCommand(int command_id) { 103 return false; 104} 105 106std::string WidgetDelegate::GetWindowName() const { 107 return std::string(); 108} 109 110void WidgetDelegate::SaveWindowPlacement(const gfx::Rect& bounds, 111 ui::WindowShowState show_state) { 112 std::string window_name = GetWindowName(); 113 if (!ViewsDelegate::views_delegate || window_name.empty()) 114 return; 115 116 ViewsDelegate::views_delegate->SaveWindowPlacement( 117 GetWidget(), window_name, bounds, show_state); 118} 119 120bool WidgetDelegate::GetSavedWindowPlacement( 121 gfx::Rect* bounds, 122 ui::WindowShowState* show_state) const { 123 std::string window_name = GetWindowName(); 124 if (!ViewsDelegate::views_delegate || window_name.empty()) 125 return false; 126 127 return ViewsDelegate::views_delegate->GetSavedWindowPlacement( 128 window_name, bounds, show_state); 129} 130 131bool WidgetDelegate::ShouldRestoreWindowSize() const { 132 return true; 133} 134 135View* WidgetDelegate::GetContentsView() { 136 if (!default_contents_view_) 137 default_contents_view_ = new View; 138 return default_contents_view_; 139} 140 141ClientView* WidgetDelegate::CreateClientView(Widget* widget) { 142 return new ClientView(widget, GetContentsView()); 143} 144 145NonClientFrameView* WidgetDelegate::CreateNonClientFrameView(Widget* widget) { 146 return NULL; 147} 148 149View* WidgetDelegate::CreateOverlayView() { 150 return NULL; 151} 152 153bool WidgetDelegate::WillProcessWorkAreaChange() const { 154 return false; 155} 156 157bool WidgetDelegate::WidgetHasHitTestMask() const { 158 return false; 159} 160 161void WidgetDelegate::GetWidgetHitTestMask(gfx::Path* mask) const { 162 DCHECK(mask); 163} 164 165bool WidgetDelegate::ShouldAdvanceFocusToTopLevelWidget() const { 166 return false; 167} 168 169bool WidgetDelegate::ShouldDescendIntoChildForEventHandling( 170 gfx::NativeView child, 171 const gfx::Point& location) { 172 return true; 173} 174 175//////////////////////////////////////////////////////////////////////////////// 176// WidgetDelegateView: 177 178WidgetDelegateView::WidgetDelegateView() { 179 // A WidgetDelegate should be deleted on DeleteDelegate. 180 set_owned_by_client(); 181} 182 183WidgetDelegateView::~WidgetDelegateView() { 184} 185 186void WidgetDelegateView::DeleteDelegate() { 187 delete this; 188} 189 190Widget* WidgetDelegateView::GetWidget() { 191 return View::GetWidget(); 192} 193 194const Widget* WidgetDelegateView::GetWidget() const { 195 return View::GetWidget(); 196} 197 198} // namespace views 199