PageRenderTime 25ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/ui/views/widget/widget_delegate.cc

https://gitlab.com/jonnialva90/iridium-browser
C++ | 212 lines | 150 code | 51 blank | 11 comment | 7 complexity | a87dda33fc393cb59abc2bbf240581c7 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/strings/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()
  16. : default_contents_view_(NULL),
  17. can_activate_(true) {
  18. }
  19. void WidgetDelegate::OnWidgetMove() {
  20. }
  21. void WidgetDelegate::OnDisplayChanged() {
  22. }
  23. void WidgetDelegate::OnWorkAreaChanged() {
  24. }
  25. View* WidgetDelegate::GetInitiallyFocusedView() {
  26. return NULL;
  27. }
  28. BubbleDelegateView* WidgetDelegate::AsBubbleDelegate() {
  29. return NULL;
  30. }
  31. DialogDelegate* WidgetDelegate::AsDialogDelegate() {
  32. return NULL;
  33. }
  34. bool WidgetDelegate::CanResize() const {
  35. return false;
  36. }
  37. bool WidgetDelegate::CanMaximize() const {
  38. return false;
  39. }
  40. bool WidgetDelegate::CanMinimize() const {
  41. return false;
  42. }
  43. bool WidgetDelegate::CanActivate() const {
  44. return can_activate_;
  45. }
  46. ui::ModalType WidgetDelegate::GetModalType() const {
  47. return ui::MODAL_TYPE_NONE;
  48. }
  49. ui::AXRole WidgetDelegate::GetAccessibleWindowRole() const {
  50. return ui::AX_ROLE_WINDOW;
  51. }
  52. base::string16 WidgetDelegate::GetAccessibleWindowTitle() const {
  53. return GetWindowTitle();
  54. }
  55. base::string16 WidgetDelegate::GetWindowTitle() const {
  56. return base::string16();
  57. }
  58. bool WidgetDelegate::ShouldShowWindowTitle() const {
  59. return true;
  60. }
  61. bool WidgetDelegate::ShouldShowCloseButton() const {
  62. return true;
  63. }
  64. bool WidgetDelegate::ShouldHandleSystemCommands() const {
  65. const Widget* widget = GetWidget();
  66. if (!widget)
  67. return false;
  68. return widget->non_client_view() != NULL;
  69. }
  70. gfx::ImageSkia WidgetDelegate::GetWindowAppIcon() {
  71. // Use the window icon as app icon by default.
  72. return GetWindowIcon();
  73. }
  74. // Returns the icon to be displayed in the window.
  75. gfx::ImageSkia WidgetDelegate::GetWindowIcon() {
  76. return gfx::ImageSkia();
  77. }
  78. bool WidgetDelegate::ShouldShowWindowIcon() const {
  79. return false;
  80. }
  81. bool WidgetDelegate::ExecuteWindowsCommand(int command_id) {
  82. return false;
  83. }
  84. std::string WidgetDelegate::GetWindowName() const {
  85. return std::string();
  86. }
  87. void WidgetDelegate::SaveWindowPlacement(const gfx::Rect& bounds,
  88. ui::WindowShowState show_state) {
  89. std::string window_name = GetWindowName();
  90. if (!ViewsDelegate::GetInstance() || window_name.empty())
  91. return;
  92. ViewsDelegate::GetInstance()->SaveWindowPlacement(GetWidget(), window_name,
  93. bounds, show_state);
  94. }
  95. bool WidgetDelegate::GetSavedWindowPlacement(
  96. const Widget* widget,
  97. gfx::Rect* bounds,
  98. ui::WindowShowState* show_state) const {
  99. std::string window_name = GetWindowName();
  100. if (!ViewsDelegate::GetInstance() || window_name.empty())
  101. return false;
  102. return ViewsDelegate::GetInstance()->GetSavedWindowPlacement(
  103. widget, window_name, bounds, show_state);
  104. }
  105. bool WidgetDelegate::ShouldRestoreWindowSize() const {
  106. return true;
  107. }
  108. View* WidgetDelegate::GetContentsView() {
  109. if (!default_contents_view_)
  110. default_contents_view_ = new View;
  111. return default_contents_view_;
  112. }
  113. ClientView* WidgetDelegate::CreateClientView(Widget* widget) {
  114. return new ClientView(widget, GetContentsView());
  115. }
  116. NonClientFrameView* WidgetDelegate::CreateNonClientFrameView(Widget* widget) {
  117. return NULL;
  118. }
  119. View* WidgetDelegate::CreateOverlayView() {
  120. return NULL;
  121. }
  122. bool WidgetDelegate::WillProcessWorkAreaChange() const {
  123. return false;
  124. }
  125. bool WidgetDelegate::WidgetHasHitTestMask() const {
  126. return false;
  127. }
  128. void WidgetDelegate::GetWidgetHitTestMask(gfx::Path* mask) const {
  129. DCHECK(mask);
  130. }
  131. bool WidgetDelegate::ShouldAdvanceFocusToTopLevelWidget() const {
  132. return false;
  133. }
  134. bool WidgetDelegate::ShouldDescendIntoChildForEventHandling(
  135. gfx::NativeView child,
  136. const gfx::Point& location) {
  137. return true;
  138. }
  139. ////////////////////////////////////////////////////////////////////////////////
  140. // WidgetDelegateView:
  141. // static
  142. const char WidgetDelegateView::kViewClassName[] = "WidgetDelegateView";
  143. WidgetDelegateView::WidgetDelegateView() {
  144. // A WidgetDelegate should be deleted on DeleteDelegate.
  145. set_owned_by_client();
  146. }
  147. WidgetDelegateView::~WidgetDelegateView() {
  148. }
  149. void WidgetDelegateView::DeleteDelegate() {
  150. delete this;
  151. }
  152. Widget* WidgetDelegateView::GetWidget() {
  153. return View::GetWidget();
  154. }
  155. const Widget* WidgetDelegateView::GetWidget() const {
  156. return View::GetWidget();
  157. }
  158. const char* WidgetDelegateView::GetClassName() const {
  159. return kViewClassName;
  160. }
  161. } // namespace views