| Index: views/widget/native_widget_views.cc
|
| ===================================================================
|
| --- views/widget/native_widget_views.cc (revision 110826)
|
| +++ views/widget/native_widget_views.cc (working copy)
|
| @@ -1,648 +0,0 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "views/widget/native_widget_views.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "ui/base/hit_test.h"
|
| -#include "ui/gfx/compositor/compositor.h"
|
| -#include "ui/gfx/compositor/layer.h"
|
| -#include "ui/gfx/compositor/layer_animator.h"
|
| -#include "views/view.h"
|
| -#include "views/views_delegate.h"
|
| -#include "views/widget/native_widget_view.h"
|
| -#include "views/widget/root_view.h"
|
| -#include "views/widget/tooltip_manager_views.h"
|
| -#include "views/widget/window_manager.h"
|
| -
|
| -#if defined(HAVE_IBUS)
|
| -#include "ui/views/ime/input_method_ibus.h"
|
| -#else
|
| -#include "ui/views/ime/mock_input_method.h"
|
| -#endif
|
| -
|
| -namespace {
|
| -
|
| -gfx::Rect AdjustRectOriginForParentWidget(const gfx::Rect& rect,
|
| - const views::Widget* parent) {
|
| - if (!parent)
|
| - return rect;
|
| -
|
| - gfx::Rect adjusted = rect;
|
| - gfx::Rect parent_bounds = parent->GetWindowScreenBounds();
|
| - adjusted.Offset(-parent_bounds.x(), -parent_bounds.y());
|
| - return adjusted;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -namespace views {
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// NativeWidgetViews, public:
|
| -
|
| -NativeWidgetViews::NativeWidgetViews(internal::NativeWidgetDelegate* delegate)
|
| - : delegate_(delegate),
|
| - parent_(NULL),
|
| - view_(NULL),
|
| - active_(false),
|
| - window_state_(ui::SHOW_STATE_DEFAULT),
|
| - always_on_top_(false),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(close_widget_factory_(this)),
|
| - ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET),
|
| - delete_native_view_(true) {
|
| -}
|
| -
|
| -NativeWidgetViews::~NativeWidgetViews() {
|
| - delegate_->OnNativeWidgetDestroying();
|
| -
|
| - if (view_ && delete_native_view_) {
|
| - // We must prevent the NativeWidgetView from attempting to delete us.
|
| - view_->set_delete_native_widget(false);
|
| - delete view_;
|
| - }
|
| -
|
| - delegate_->OnNativeWidgetDestroyed();
|
| - if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET)
|
| - delete delegate_;
|
| -}
|
| -
|
| -View* NativeWidgetViews::GetView() {
|
| - return view_;
|
| -}
|
| -
|
| -const View* NativeWidgetViews::GetView() const {
|
| - return view_;
|
| -}
|
| -
|
| -void NativeWidgetViews::OnActivate(bool active) {
|
| - // TODO(oshima): find out if we should check toplevel here.
|
| - if (active_ == active)
|
| - return;
|
| - active_ = active;
|
| - delegate_->OnNativeWidgetActivationChanged(active);
|
| -
|
| - // TODO(oshima): Focus change should be separated from window activation.
|
| - // This will be fixed when we have WM API.
|
| - Widget* widget = GetWidget();
|
| - if (widget->is_top_level()) {
|
| - InputMethod* input_method = widget->GetInputMethod();
|
| - if (active) {
|
| - input_method->OnFocus();
|
| - // See description of got_initial_focus_in_ for details on this.
|
| - widget->GetFocusManager()->RestoreFocusedView();
|
| - } else {
|
| - input_method->OnBlur();
|
| - widget->GetFocusManager()->StoreFocusedView();
|
| - }
|
| - }
|
| - view_->SchedulePaint();
|
| -}
|
| -
|
| -bool NativeWidgetViews::OnKeyEvent(const KeyEvent& key_event) {
|
| - InputMethod* input_method = GetWidget()->GetInputMethod();
|
| - DCHECK(input_method);
|
| - input_method->DispatchKeyEvent(key_event);
|
| - return true;
|
| -}
|
| -
|
| -void NativeWidgetViews::DispatchKeyEventPostIME(const KeyEvent& key) {
|
| - // TODO(oshima): GTK impl handles menu_key in special way. This may be
|
| - // necessary when running under NativeWidgetX.
|
| - if (delegate_->OnKeyEvent(key))
|
| - return;
|
| - if (key.type() == ui::ET_KEY_PRESSED && GetWidget()->GetFocusManager())
|
| - GetWidget()->GetFocusManager()->OnKeyEvent(key);
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// NativeWidgetViews, protected:
|
| -
|
| -void NativeWidgetViews::OnBoundsChanged(const gfx::Rect& new_bounds,
|
| - const gfx::Rect& old_bounds) {
|
| - delegate_->OnNativeWidgetSizeChanged(new_bounds.size());
|
| -}
|
| -
|
| -bool NativeWidgetViews::OnMouseEvent(const MouseEvent& event) {
|
| -#if defined(TOUCH_UI) || defined(USE_AURA)
|
| - TooltipManagerViews* tooltip_manager =
|
| - static_cast<TooltipManagerViews*>(GetTooltipManager());
|
| - if (tooltip_manager)
|
| - tooltip_manager->UpdateForMouseEvent(event);
|
| -#endif
|
| - return HandleWindowOperation(event) ? true : delegate_->OnMouseEvent(event);
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// NativeWidgetViews, NativeWidget implementation:
|
| -
|
| -void NativeWidgetViews::InitNativeWidget(const Widget::InitParams& params) {
|
| - parent_ = params.parent_widget;
|
| - ownership_ = params.ownership;
|
| - always_on_top_ = params.keep_on_top;
|
| - View* parent_view = NULL;
|
| - if (params.parent_widget) {
|
| - parent_view = params.parent_widget->GetChildViewParent();
|
| - } else if (ViewsDelegate::views_delegate &&
|
| - ViewsDelegate::views_delegate->GetDefaultParentView() &&
|
| - !params.child) {
|
| - parent_view = ViewsDelegate::views_delegate->GetDefaultParentView();
|
| - } else if (params.parent) {
|
| - Widget* widget = Widget::GetWidgetForNativeView(params.parent);
|
| - parent_view = widget->GetChildViewParent();
|
| - }
|
| -
|
| - gfx::Rect bounds = GetWidget()->is_top_level() ?
|
| - AdjustRectOriginForParentWidget(params.bounds, parent_) : params.bounds;
|
| - view_ = new internal::NativeWidgetView(this);
|
| - view_->SetBoundsRect(bounds);
|
| - view_->SetVisible(params.type == Widget::InitParams::TYPE_CONTROL);
|
| -
|
| - // With the default NATIVE_WIDGET_OWNS_WIDGET ownership, the
|
| - // deletion of either of the NativeWidgetViews or NativeWidgetView
|
| - // (e.g. via View hierarchy destruction) will delete the other.
|
| - // With WIDGET_OWNS_NATIVE_WIDGET, NativeWidgetViews should only
|
| - // be deleted by its Widget.
|
| - if (ownership_ == Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET)
|
| - view_->set_delete_native_widget(false);
|
| -
|
| - if (parent_view)
|
| - parent_view->AddChildView(view_);
|
| - view_->SetPaintToLayer(true);
|
| - if (View::get_use_acceleration_when_possible())
|
| - view_->SetFillsBoundsOpaquely(!params.transparent);
|
| - // TODO(beng): SetInitParams().
|
| -}
|
| -
|
| -NonClientFrameView* NativeWidgetViews::CreateNonClientFrameView() {
|
| - return NULL;
|
| -}
|
| -
|
| -void NativeWidgetViews::UpdateFrameAfterFrameChange() {
|
| -}
|
| -
|
| -bool NativeWidgetViews::ShouldUseNativeFrame() const {
|
| -// NOTIMPLEMENTED();
|
| - return false;
|
| -}
|
| -
|
| -void NativeWidgetViews::FrameTypeChanged() {
|
| -}
|
| -
|
| -Widget* NativeWidgetViews::GetWidget() {
|
| - return delegate_->AsWidget();
|
| -}
|
| -
|
| -const Widget* NativeWidgetViews::GetWidget() const {
|
| - return delegate_->AsWidget();
|
| -}
|
| -
|
| -gfx::NativeView NativeWidgetViews::GetNativeView() const {
|
| - return GetParentNativeWidget() ?
|
| - GetParentNativeWidget()->GetNativeView() : NULL;
|
| -}
|
| -
|
| -gfx::NativeWindow NativeWidgetViews::GetNativeWindow() const {
|
| - return GetParentNativeWidget() ?
|
| - GetParentNativeWidget()->GetNativeWindow() : NULL;
|
| -}
|
| -
|
| -Widget* NativeWidgetViews::GetTopLevelWidget() {
|
| - // This can get called when this is in the process of being destroyed, and
|
| - // view_ has already been unset.
|
| - if (!view_)
|
| - return GetWidget();
|
| - if (ViewsDelegate::views_delegate &&
|
| - view_->parent() == ViewsDelegate::views_delegate->GetDefaultParentView())
|
| - return GetWidget();
|
| - // During Widget destruction, this function may be called after |view_| is
|
| - // detached from a Widget, at which point this NativeWidget's Widget becomes
|
| - // the effective toplevel.
|
| - Widget* containing_widget = view_->GetWidget();
|
| - return containing_widget ? containing_widget->GetTopLevelWidget()
|
| - : GetWidget();
|
| -}
|
| -
|
| -const ui::Compositor* NativeWidgetViews::GetCompositor() const {
|
| - return view_->GetWidget() ? view_->GetWidget()->GetCompositor() : NULL;
|
| -}
|
| -
|
| -ui::Compositor* NativeWidgetViews::GetCompositor() {
|
| - return view_->GetWidget() ? view_->GetWidget()->GetCompositor() : NULL;
|
| -}
|
| -
|
| -void NativeWidgetViews::CalculateOffsetToAncestorWithLayer(
|
| - gfx::Point* offset,
|
| - ui::Layer** layer_parent) {
|
| - view_->CalculateOffsetToAncestorWithLayer(offset, layer_parent);
|
| -}
|
| -
|
| -void NativeWidgetViews::ReorderLayers() {
|
| - view_->ReorderLayers();
|
| -}
|
| -
|
| -void NativeWidgetViews::ViewRemoved(View* view) {
|
| - internal::NativeWidgetPrivate* parent = GetParentNativeWidget();
|
| - if (parent)
|
| - parent->ViewRemoved(view);
|
| -}
|
| -
|
| -void NativeWidgetViews::SetNativeWindowProperty(const char* name, void* value) {
|
| - if (value)
|
| - props_map_[name] = value;
|
| - else
|
| - props_map_.erase(name);
|
| -}
|
| -
|
| -void* NativeWidgetViews::GetNativeWindowProperty(const char* name) const {
|
| - PropsMap::const_iterator iter = props_map_.find(name);
|
| - return iter != props_map_.end() ? iter->second : NULL;
|
| -}
|
| -
|
| -TooltipManager* NativeWidgetViews::GetTooltipManager() const {
|
| - const internal::NativeWidgetPrivate* parent = GetParentNativeWidget();
|
| - return parent ? parent->GetTooltipManager() : NULL;
|
| -}
|
| -
|
| -bool NativeWidgetViews::IsScreenReaderActive() const {
|
| - return GetParentNativeWidget()->IsScreenReaderActive();
|
| -}
|
| -
|
| -void NativeWidgetViews::SendNativeAccessibilityEvent(
|
| - View* view,
|
| - ui::AccessibilityTypes::Event event_type) {
|
| - return GetParentNativeWidget()->SendNativeAccessibilityEvent(view,
|
| - event_type);
|
| -}
|
| -
|
| -void NativeWidgetViews::SetMouseCapture() {
|
| - WindowManager::Get()->SetMouseCapture(GetWidget());
|
| -}
|
| -
|
| -void NativeWidgetViews::ReleaseMouseCapture() {
|
| - WindowManager::Get()->ReleaseMouseCapture(GetWidget());
|
| -}
|
| -
|
| -bool NativeWidgetViews::HasMouseCapture() const {
|
| - return WindowManager::Get()->HasMouseCapture(GetWidget());
|
| -}
|
| -
|
| -InputMethod* NativeWidgetViews::CreateInputMethod() {
|
| -#if defined(HAVE_IBUS)
|
| - InputMethod* input_method = new InputMethodIBus(this);
|
| -#else
|
| - InputMethod* input_method = new MockInputMethod(this);
|
| -#endif
|
| - input_method->Init(GetWidget());
|
| - return input_method;
|
| -}
|
| -
|
| -void NativeWidgetViews::CenterWindow(const gfx::Size& size) {
|
| - const gfx::Size parent_size = GetView()->parent()->size();
|
| - GetView()->SetBounds((parent_size.width() - size.width())/2,
|
| - (parent_size.height() - size.height())/2,
|
| - size.width(), size.height());
|
| -}
|
| -
|
| -void NativeWidgetViews::GetWindowPlacement(
|
| - gfx::Rect* bounds,
|
| - ui::WindowShowState* show_state) const {
|
| - *bounds = GetView()->bounds();
|
| - *show_state = ui::SHOW_STATE_NORMAL;
|
| -}
|
| -
|
| -void NativeWidgetViews::SetWindowTitle(const string16& title) {
|
| -}
|
| -
|
| -void NativeWidgetViews::SetWindowIcons(const SkBitmap& window_icon,
|
| - const SkBitmap& app_icon) {
|
| -}
|
| -
|
| -void NativeWidgetViews::SetAccessibleName(const string16& name) {
|
| -}
|
| -
|
| -void NativeWidgetViews::SetAccessibleRole(ui::AccessibilityTypes::Role role) {
|
| -}
|
| -
|
| -void NativeWidgetViews::SetAccessibleState(
|
| - ui::AccessibilityTypes::State state) {
|
| -}
|
| -
|
| -void NativeWidgetViews::BecomeModal() {
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -gfx::Rect NativeWidgetViews::GetWindowScreenBounds() const {
|
| - if (GetWidget() == GetWidget()->GetTopLevelWidget() &&
|
| - !parent_)
|
| - return view_->bounds();
|
| - gfx::Point origin = view_->bounds().origin();
|
| - View::ConvertPointToScreen(view_->parent(), &origin);
|
| - return gfx::Rect(origin.x(), origin.y(), view_->width(), view_->height());
|
| -}
|
| -
|
| -gfx::Rect NativeWidgetViews::GetClientAreaScreenBounds() const {
|
| - return GetWindowScreenBounds();
|
| -}
|
| -
|
| -gfx::Rect NativeWidgetViews::GetRestoredBounds() const {
|
| - return GetWindowScreenBounds();
|
| -}
|
| -
|
| -void NativeWidgetViews::SetBounds(const gfx::Rect& bounds) {
|
| - // |bounds| are supplied in the coordinates of the parent.
|
| - if (GetWidget()->is_top_level())
|
| - view_->SetBoundsRect(AdjustRectOriginForParentWidget(bounds, parent_));
|
| - else
|
| - view_->SetBoundsRect(bounds);
|
| -}
|
| -
|
| -void NativeWidgetViews::SetSize(const gfx::Size& size) {
|
| - view_->SetSize(size);
|
| -}
|
| -
|
| -void NativeWidgetViews::MoveAbove(gfx::NativeView native_view) {
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -void NativeWidgetViews::MoveToTop() {
|
| - view_->parent()->ReorderChildView(view_, -1);
|
| -}
|
| -
|
| -void NativeWidgetViews::SetShape(gfx::NativeRegion region) {
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -void NativeWidgetViews::Close() {
|
| - Hide();
|
| - if (!close_widget_factory_.HasWeakPtrs()) {
|
| - MessageLoop::current()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&NativeWidgetViews::CloseNow,
|
| - close_widget_factory_.GetWeakPtr()));
|
| - }
|
| -}
|
| -
|
| -void NativeWidgetViews::CloseNow() {
|
| - delete view_;
|
| - view_ = NULL;
|
| -}
|
| -
|
| -void NativeWidgetViews::EnableClose(bool enable) {
|
| -}
|
| -
|
| -void NativeWidgetViews::Show() {
|
| - if (always_on_top_)
|
| - MoveToTop();
|
| - view_->SetVisible(true);
|
| - GetWidget()->SetInitialFocus();
|
| -}
|
| -
|
| -void NativeWidgetViews::Hide() {
|
| - view_->SetVisible(false);
|
| - if (HasMouseCapture())
|
| - ReleaseMouseCapture();
|
| -
|
| - // This is necessary because views desktop's window manager doesn't
|
| - // set the focus back to parent.
|
| - if (GetWidget()->is_top_level()) {
|
| - Widget* parent_widget = view_->GetWidget();
|
| - if (parent_widget && parent_widget->GetInputMethod())
|
| - parent_widget->GetInputMethod()->OnFocus();
|
| - }
|
| -}
|
| -
|
| -void NativeWidgetViews::ShowWithWindowState(ui::WindowShowState show_state) {
|
| - Show();
|
| -}
|
| -
|
| -void NativeWidgetViews::ShowMaximizedWithBounds(
|
| - const gfx::Rect& restored_bounds) {
|
| - Show();
|
| -}
|
| -
|
| -bool NativeWidgetViews::IsVisible() const {
|
| - return view_->IsVisible() && (GetWidget()->is_top_level() ||
|
| - GetWidget()->GetTopLevelWidget()->IsVisible());
|
| -}
|
| -
|
| -void NativeWidgetViews::Activate() {
|
| - // Enable WidgetObserverTest.ActivationChange when this is implemented.
|
| - MoveToTop();
|
| - OnActivate(true);
|
| -}
|
| -
|
| -void NativeWidgetViews::Deactivate() {
|
| - OnActivate(false);
|
| -}
|
| -
|
| -bool NativeWidgetViews::IsActive() const {
|
| - return active_;
|
| -}
|
| -
|
| -void NativeWidgetViews::SetAlwaysOnTop(bool on_top) {
|
| - always_on_top_ = on_top;
|
| - // This is not complete yet. At least |MoveToTop| will need to be updated to
|
| - // make sure a 'normal' window does not get on top of a window with
|
| - // |always_on_top_| set.
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -void NativeWidgetViews::Maximize() {
|
| - if (window_state_ == ui::SHOW_STATE_MAXIMIZED)
|
| - return;
|
| -
|
| - if (window_state_ != ui::SHOW_STATE_MINIMIZED) {
|
| - // Remember bounds and transform to use when unmaximized.
|
| - restored_bounds_ = view_->bounds();
|
| - restored_transform_ = view_->GetTransform();
|
| - }
|
| -
|
| - window_state_ = ui::SHOW_STATE_MAXIMIZED;
|
| - gfx::Size size = GetParentNativeWidget()->GetWindowScreenBounds().size();
|
| - SetBounds(gfx::Rect(gfx::Point(), size));
|
| -}
|
| -
|
| -void NativeWidgetViews::Minimize() {
|
| - if (view_->layer() && view_->layer()->GetAnimator()->is_animating())
|
| - return;
|
| -
|
| - gfx::Rect view_bounds = view_->bounds();
|
| - gfx::Rect parent_bounds = view_->parent()->bounds();
|
| -
|
| - if (window_state_ != ui::SHOW_STATE_MAXIMIZED) {
|
| - restored_bounds_ = view_bounds;
|
| - restored_transform_ = view_->GetTransform();
|
| - }
|
| -
|
| - float aspect_ratio = static_cast<float>(view_bounds.width()) /
|
| - static_cast<float>(view_bounds.height());
|
| - int target_size = 100;
|
| - int target_height = target_size;
|
| - int target_width = static_cast<int>(aspect_ratio * target_height);
|
| - if (target_width > target_size) {
|
| - target_width = target_size;
|
| - target_height = static_cast<int>(target_width / aspect_ratio);
|
| - }
|
| -
|
| - int target_x = 20;
|
| - int target_y = parent_bounds.height() - target_size - 20;
|
| -
|
| - view_->SetBounds(
|
| - target_x, target_y, view_bounds.width(), view_bounds.height());
|
| -
|
| - ui::Transform transform;
|
| - transform.SetScale((float)target_width / (float)view_bounds.width(),
|
| - (float)target_height / (float)view_bounds.height());
|
| - view_->SetTransform(transform);
|
| -
|
| - window_state_ = ui::SHOW_STATE_MINIMIZED;
|
| -}
|
| -
|
| -bool NativeWidgetViews::IsMaximized() const {
|
| - return window_state_ == ui::SHOW_STATE_MAXIMIZED;
|
| -}
|
| -
|
| -bool NativeWidgetViews::IsMinimized() const {
|
| - return window_state_ == ui::SHOW_STATE_MINIMIZED;
|
| -}
|
| -
|
| -void NativeWidgetViews::Restore() {
|
| - if (view_->layer() && view_->layer()->GetAnimator()->is_animating())
|
| - return;
|
| -
|
| - window_state_ = ui::SHOW_STATE_NORMAL;
|
| - view_->SetBoundsRect(restored_bounds_);
|
| - view_->SetTransform(restored_transform_);
|
| -}
|
| -
|
| -void NativeWidgetViews::SetFullscreen(bool fullscreen) {
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -bool NativeWidgetViews::IsFullscreen() const {
|
| - // NOTIMPLEMENTED();
|
| - return false;
|
| -}
|
| -
|
| -void NativeWidgetViews::SetOpacity(unsigned char opacity) {
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -void NativeWidgetViews::SetUseDragFrame(bool use_drag_frame) {
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -bool NativeWidgetViews::IsAccessibleWidget() const {
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| -}
|
| -
|
| -void NativeWidgetViews::RunShellDrag(View* view,
|
| - const ui::OSExchangeData& data,
|
| - int operation) {
|
| - GetParentNativeWidget()->RunShellDrag(view, data, operation);
|
| -}
|
| -
|
| -void NativeWidgetViews::SchedulePaintInRect(const gfx::Rect& rect) {
|
| - view_->SchedulePaintInRect(rect);
|
| -}
|
| -
|
| -void NativeWidgetViews::SetCursor(gfx::NativeCursor cursor) {
|
| - view_->set_cursor(cursor);
|
| - GetParentNativeWidget()->SetCursor(cursor);
|
| -}
|
| -
|
| -void NativeWidgetViews::ClearNativeFocus() {
|
| - GetParentNativeWidget()->ClearNativeFocus();
|
| -}
|
| -
|
| -void NativeWidgetViews::FocusNativeView(gfx::NativeView native_view) {
|
| - GetParentNativeWidget()->FocusNativeView(native_view);
|
| -}
|
| -
|
| -bool NativeWidgetViews::ConvertPointFromAncestor(
|
| - const Widget* ancestor, gfx::Point* point) const {
|
| - // This method converts the point from ancestor's coordinates to
|
| - // this widget's coordinate using recursion as the widget hierachy
|
| - // is usually shallow.
|
| -
|
| - if (ancestor == GetWidget())
|
| - return true; // no conversion necessary
|
| -
|
| - const Widget* parent_widget = view_->GetWidget();
|
| - if (!parent_widget) // couldn't reach the ancestor.
|
| - return false;
|
| -
|
| - if (parent_widget == ancestor ||
|
| - parent_widget->ConvertPointFromAncestor(ancestor, point)) {
|
| - View::ConvertPointToView(parent_widget->GetRootView(), GetView(), point);
|
| - return true;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -gfx::Rect NativeWidgetViews::GetWorkAreaBoundsInScreen() const {
|
| - return GetParentNativeWidget()->GetWorkAreaBoundsInScreen();
|
| -}
|
| -
|
| -void NativeWidgetViews::SetInactiveRenderingDisabled(bool value) {
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// NativeWidgetViews, private:
|
| -
|
| -internal::NativeWidgetPrivate* NativeWidgetViews::GetParentNativeWidget() {
|
| - Widget* containing_widget = view_ ? view_->GetWidget() : NULL;
|
| - return containing_widget ? static_cast<internal::NativeWidgetPrivate*>(
|
| - containing_widget->native_widget()) :
|
| - NULL;
|
| -}
|
| -
|
| -const internal::NativeWidgetPrivate*
|
| - NativeWidgetViews::GetParentNativeWidget() const {
|
| - const Widget* containing_widget = view_ ? view_->GetWidget() : NULL;
|
| - return containing_widget ? static_cast<const internal::NativeWidgetPrivate*>(
|
| - containing_widget->native_widget()) :
|
| - NULL;
|
| -}
|
| -
|
| -bool NativeWidgetViews::HandleWindowOperation(const MouseEvent& event) {
|
| - if (event.type() != ui::ET_MOUSE_PRESSED)
|
| - return false;
|
| -
|
| - Widget* widget = GetWidget();
|
| - if (widget->non_client_view()) {
|
| - int hittest_code = widget->non_client_view()->NonClientHitTest(
|
| - event.location());
|
| - switch (hittest_code) {
|
| - case HTCAPTION: {
|
| - if (!event.IsOnlyRightMouseButton()) {
|
| - WindowManager::Get()->StartMoveDrag(widget, event.location());
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case HTBOTTOM:
|
| - case HTBOTTOMLEFT:
|
| - case HTBOTTOMRIGHT:
|
| - case HTGROWBOX:
|
| - case HTLEFT:
|
| - case HTRIGHT:
|
| - case HTTOP:
|
| - case HTTOPLEFT:
|
| - case HTTOPRIGHT: {
|
| - WindowManager::Get()->StartResizeDrag(
|
| - widget, event.location(), hittest_code);
|
| - return true;
|
| - }
|
| - default:
|
| - // Everything else falls into standard client event handling.
|
| - break;
|
| - }
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -} // namespace views
|
|
|