| Index: views/widget/widget.cc
|
| ===================================================================
|
| --- views/widget/widget.cc (revision 85284)
|
| +++ views/widget/widget.cc (working copy)
|
| @@ -9,6 +9,7 @@
|
| #include "ui/gfx/compositor/compositor.h"
|
| #include "views/focus/view_storage.h"
|
| #include "views/ime/input_method.h"
|
| +#include "views/views_delegate.h"
|
| #include "views/widget/default_theme_provider.h"
|
| #include "views/widget/root_view.h"
|
| #include "views/widget/native_widget.h"
|
| @@ -21,6 +22,7 @@
|
| Widget::InitParams::InitParams()
|
| : type(TYPE_WINDOW),
|
| child(false),
|
| + transient(false),
|
| transparent(false),
|
| accept_events(true),
|
| can_activate(true),
|
| @@ -37,6 +39,7 @@
|
| Widget::InitParams::InitParams(Type type)
|
| : type(type),
|
| child(type == TYPE_CONTROL),
|
| + transient(type == TYPE_POPUP || type == TYPE_MENU),
|
| transparent(false),
|
| accept_events(true),
|
| can_activate(type != TYPE_POPUP && type != TYPE_MENU),
|
| @@ -63,41 +66,50 @@
|
| last_mouse_event_was_move_(false),
|
| native_widget_(NULL),
|
| widget_delegate_(NULL),
|
| - dragged_view_(NULL) {
|
| + dragged_view_(NULL),
|
| + delete_on_destroy_(false),
|
| + is_secondary_widget_(true) {
|
| }
|
|
|
| Widget::~Widget() {
|
| + DestroyRootView();
|
| +
|
| + if (!delete_on_destroy_)
|
| + delete native_widget_;
|
| }
|
|
|
| void Widget::Init(const InitParams& params) {
|
| + delete_on_destroy_ = params.delete_on_destroy;
|
| + native_widget_ =
|
| + params.native_widget ? params.native_widget
|
| + : NativeWidget::CreateNativeWidget(this);
|
| GetRootView();
|
| default_theme_provider_.reset(new DefaultThemeProvider);
|
| + if (params.type == InitParams::TYPE_MENU)
|
| + is_mouse_button_pressed_ = native_widget_->IsMouseButtonDown();
|
| native_widget_->InitNativeWidget(params);
|
| }
|
|
|
| // Unconverted methods (see header) --------------------------------------------
|
|
|
| gfx::NativeView Widget::GetNativeView() const {
|
| - return NULL;
|
| + return native_widget_->GetNativeView();
|
| }
|
|
|
| gfx::NativeWindow Widget::GetNativeWindow() const {
|
| - return NULL;
|
| + return native_widget_->GetNativeWindow();
|
| }
|
|
|
| -void Widget::GenerateMousePressedForView(View* view, const gfx::Point& point) {
|
| -}
|
| -
|
| bool Widget::GetAccelerator(int cmd_id, ui::Accelerator* accelerator) {
|
| return false;
|
| }
|
|
|
| -Window* Widget::GetWindow() {
|
| - return NULL;
|
| +Window* Widget::GetContainingWindow() {
|
| + return native_widget_->GetContainingWindow();
|
| }
|
|
|
| -const Window* Widget::GetWindow() const {
|
| - return NULL;
|
| +const Window* Widget::GetContainingWindow() const {
|
| + return native_widget_->GetContainingWindow();
|
| }
|
|
|
| void Widget::ViewHierarchyChanged(bool is_add, View* parent, View* child) {
|
| @@ -108,7 +120,8 @@
|
| FocusManager* focus_manager = GetFocusManager();
|
| if (focus_manager)
|
| focus_manager->ViewRemoved(child);
|
| - ViewStorage::GetInstance()->ViewRemoved(parent, child);
|
| + ViewStorage::GetInstance()->ViewRemoved(child);
|
| + native_widget_->ViewRemoved(child);
|
| }
|
| }
|
|
|
| @@ -273,6 +286,10 @@
|
| native_widget_->SetCursor(cursor);
|
| }
|
|
|
| +void Widget::ResetLastMouseMoveFlag() {
|
| + last_mouse_event_was_move_ = false;
|
| +}
|
| +
|
| FocusTraversable* Widget::GetFocusTraversable() {
|
| return root_view_.get();
|
| }
|
| @@ -293,6 +310,18 @@
|
| root_view_->SetFocusTraversableParentView(parent_view);
|
| }
|
|
|
| +void Widget::NotifyAccessibilityEvent(
|
| + View* view,
|
| + ui::AccessibilityTypes::Event event_type,
|
| + bool send_native_event) {
|
| + // Send the notification to the delegate.
|
| + if (ViewsDelegate::views_delegate)
|
| + ViewsDelegate::views_delegate->NotifyAccessibilityEvent(view, event_type);
|
| +
|
| + if (send_native_event)
|
| + native_widget_->SendNativeAccessibilityEvent(view, event_type);
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // Widget, NativeWidgetDelegate implementation:
|
|
|
| @@ -407,6 +436,14 @@
|
| is_mouse_button_pressed_ = false;
|
| }
|
|
|
| +Widget* Widget::AsWidget() {
|
| + return this;
|
| +}
|
| +
|
| +const Widget* Widget::AsWidget() const {
|
| + return this;
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // Widget, FocusTraversable implementation:
|
|
|
|
|