/chromium-webcl/src/ui/views/widget/widget_delegate.cc

https://bitbucket.org/peixuan/chromium_r197479_base · C++ · 186 lines · 131 code · 45 blank · 10 comment · 7 complexity · a74f9aaa9b7c95798a09cb7eea58de13 MD5 · raw file

  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. #include "ui/views/widget/widget_delegate.h"
  5. #include "base/utf_string_conversions.h"
  6. #include "ui/gfx/image/image_skia.h"
  7. #include "ui/views/bubble/bubble_delegate.h"
  8. #include "ui/views/view.h"
  9. #include "ui/views/views_delegate.h"
  10. #include "ui/views/widget/widget.h"
  11. #include "ui/views/window/client_view.h"
  12. namespace views {
  13. ////////////////////////////////////////////////////////////////////////////////
  14. // WidgetDelegate:
  15. WidgetDelegate::WidgetDelegate() : default_contents_view_(NULL) {
  16. }
  17. void WidgetDelegate::OnWidgetMove() {
  18. }
  19. void WidgetDelegate::OnDisplayChanged() {
  20. }
  21. void WidgetDelegate::OnWorkAreaChanged() {
  22. }
  23. View* WidgetDelegate::GetInitiallyFocusedView() {
  24. return NULL;
  25. }
  26. BubbleDelegateView* WidgetDelegate::AsBubbleDelegate() {
  27. return NULL;
  28. }
  29. DialogDelegate* WidgetDelegate::AsDialogDelegate() {
  30. return NULL;
  31. }
  32. bool WidgetDelegate::CanResize() const {
  33. return false;
  34. }
  35. bool WidgetDelegate::CanMaximize() const {
  36. return false;
  37. }
  38. bool WidgetDelegate::CanActivate() const {
  39. return true;
  40. }
  41. ui::ModalType WidgetDelegate::GetModalType() const {
  42. return ui::MODAL_TYPE_NONE;
  43. }
  44. ui::AccessibilityTypes::Role WidgetDelegate::GetAccessibleWindowRole() const {
  45. return ui::AccessibilityTypes::ROLE_WINDOW;
  46. }
  47. string16 WidgetDelegate::GetAccessibleWindowTitle() const {
  48. return GetWindowTitle();
  49. }
  50. string16 WidgetDelegate::GetWindowTitle() const {
  51. return string16();
  52. }
  53. bool WidgetDelegate::ShouldShowWindowTitle() const {
  54. return true;
  55. }
  56. bool WidgetDelegate::ShouldHandleSystemCommands() const {
  57. const Widget* widget = GetWidget();
  58. if (!widget)
  59. return false;
  60. return widget->non_client_view() != NULL;
  61. }
  62. gfx::ImageSkia WidgetDelegate::GetWindowAppIcon() {
  63. // Use the window icon as app icon by default.
  64. return GetWindowIcon();
  65. }
  66. // Returns the icon to be displayed in the window.
  67. gfx::ImageSkia WidgetDelegate::GetWindowIcon() {
  68. return gfx::ImageSkia();
  69. }
  70. bool WidgetDelegate::ShouldShowWindowIcon() const {
  71. return false;
  72. }
  73. bool WidgetDelegate::ExecuteWindowsCommand(int command_id) {
  74. return false;
  75. }
  76. std::string WidgetDelegate::GetWindowName() const {
  77. return std::string();
  78. }
  79. void WidgetDelegate::SaveWindowPlacement(const gfx::Rect& bounds,
  80. ui::WindowShowState show_state) {
  81. std::string window_name = GetWindowName();
  82. if (!ViewsDelegate::views_delegate || window_name.empty())
  83. return;
  84. ViewsDelegate::views_delegate->SaveWindowPlacement(
  85. GetWidget(), window_name, bounds, show_state);
  86. }
  87. bool WidgetDelegate::GetSavedWindowPlacement(
  88. gfx::Rect* bounds,
  89. ui::WindowShowState* show_state) const {
  90. std::string window_name = GetWindowName();
  91. if (!ViewsDelegate::views_delegate || window_name.empty())
  92. return false;
  93. return ViewsDelegate::views_delegate->GetSavedWindowPlacement(
  94. window_name, bounds, show_state);
  95. }
  96. bool WidgetDelegate::ShouldRestoreWindowSize() const {
  97. return true;
  98. }
  99. View* WidgetDelegate::GetContentsView() {
  100. if (!default_contents_view_)
  101. default_contents_view_ = new View;
  102. return default_contents_view_;
  103. }
  104. ClientView* WidgetDelegate::CreateClientView(Widget* widget) {
  105. return new ClientView(widget, GetContentsView());
  106. }
  107. NonClientFrameView* WidgetDelegate::CreateNonClientFrameView(Widget* widget) {
  108. return NULL;
  109. }
  110. bool WidgetDelegate::WillProcessWorkAreaChange() const {
  111. return false;
  112. }
  113. bool WidgetDelegate::WidgetHasHitTestMask() const {
  114. return false;
  115. }
  116. void WidgetDelegate::GetWidgetHitTestMask(gfx::Path* mask) const {
  117. DCHECK(mask);
  118. }
  119. bool WidgetDelegate::ShouldDescendIntoChildForEventHandling(
  120. gfx::NativeView child,
  121. const gfx::Point& location) {
  122. return true;
  123. }
  124. ////////////////////////////////////////////////////////////////////////////////
  125. // WidgetDelegateView:
  126. WidgetDelegateView::WidgetDelegateView() {
  127. // A WidgetDelegate should be deleted on DeleteDelegate.
  128. set_owned_by_client();
  129. }
  130. WidgetDelegateView::~WidgetDelegateView() {
  131. }
  132. void WidgetDelegateView::DeleteDelegate() {
  133. delete this;
  134. }
  135. Widget* WidgetDelegateView::GetWidget() {
  136. return View::GetWidget();
  137. }
  138. const Widget* WidgetDelegateView::GetWidget() const {
  139. return View::GetWidget();
  140. }
  141. } // namespace views