| Index: ui/views/widget/desktop_root_window_host_win.cc
|
| ===================================================================
|
| --- ui/views/widget/desktop_root_window_host_win.cc (revision 167419)
|
| +++ ui/views/widget/desktop_root_window_host_win.cc (working copy)
|
| @@ -1,784 +0,0 @@
|
| -// Copyright (c) 2012 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 "ui/views/widget/desktop_root_window_host_win.h"
|
| -
|
| -#include "third_party/skia/include/core/SkPath.h"
|
| -#include "third_party/skia/include/core/SkRegion.h"
|
| -#include "ui/aura/client/aura_constants.h"
|
| -#include "ui/aura/client/default_capture_client.h"
|
| -#include "ui/aura/focus_manager.h"
|
| -#include "ui/aura/root_window.h"
|
| -#include "ui/views/corewm/compound_event_filter.h"
|
| -#include "ui/views/corewm/input_method_event_filter.h"
|
| -#include "ui/aura/window_property.h"
|
| -#include "ui/base/cursor/cursor_loader_win.h"
|
| -#include "ui/base/native_theme/native_theme_aura.h"
|
| -#include "ui/base/native_theme/native_theme_win.h"
|
| -#include "ui/base/win/shell.h"
|
| -#include "ui/gfx/native_widget_types.h"
|
| -#include "ui/gfx/path_win.h"
|
| -#include "ui/views/ime/input_method_win.h"
|
| -#include "ui/views/widget/desktop_aura/desktop_activation_client.h"
|
| -#include "ui/views/widget/desktop_aura/desktop_cursor_client.h"
|
| -#include "ui/views/widget/desktop_aura/desktop_dispatcher_client.h"
|
| -#include "ui/views/widget/desktop_native_widget_aura.h"
|
| -#include "ui/views/widget/desktop_screen_position_client.h"
|
| -#include "ui/views/widget/widget_delegate.h"
|
| -#include "ui/views/widget/widget_hwnd_utils.h"
|
| -#include "ui/views/win/fullscreen_handler.h"
|
| -#include "ui/views/win/hwnd_message_handler.h"
|
| -#include "ui/views/window/native_frame_view.h"
|
| -
|
| -namespace views {
|
| -
|
| -DEFINE_WINDOW_PROPERTY_KEY(aura::Window*, kContentWindowForRootWindow, NULL);
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// DesktopRootWindowHostWin, public:
|
| -
|
| -DesktopRootWindowHostWin::DesktopRootWindowHostWin(
|
| - internal::NativeWidgetDelegate* native_widget_delegate,
|
| - DesktopNativeWidgetAura* desktop_native_widget_aura,
|
| - const gfx::Rect& initial_bounds)
|
| - : ALLOW_THIS_IN_INITIALIZER_LIST(
|
| - message_handler_(new HWNDMessageHandler(this))),
|
| - native_widget_delegate_(native_widget_delegate),
|
| - desktop_native_widget_aura_(desktop_native_widget_aura),
|
| - root_window_host_delegate_(NULL),
|
| - content_window_(NULL) {
|
| -}
|
| -
|
| -DesktopRootWindowHostWin::~DesktopRootWindowHostWin() {
|
| -}
|
| -
|
| -// static
|
| -aura::Window* DesktopRootWindowHostWin::GetContentWindowForHWND(HWND hwnd) {
|
| - aura::RootWindow* root = aura::RootWindow::GetForAcceleratedWidget(hwnd);
|
| - return root ? root->GetProperty(kContentWindowForRootWindow) : NULL;
|
| -}
|
| -
|
| -// static
|
| -ui::NativeTheme* DesktopRootWindowHost::GetNativeTheme(aura::Window* window) {
|
| - // Use NativeThemeWin for windows shown on the desktop, those not on the
|
| - // desktop come from Ash and get NativeThemeAura.
|
| - aura::RootWindow* root = window->GetRootWindow();
|
| - if (root) {
|
| - HWND root_hwnd = root->GetAcceleratedWidget();
|
| - if (root_hwnd &&
|
| - DesktopRootWindowHostWin::GetContentWindowForHWND(root_hwnd)) {
|
| - return ui::NativeThemeWin::instance();
|
| - }
|
| - }
|
| - return ui::NativeThemeAura::instance();
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// DesktopRootWindowHostWin, DesktopRootWindowHost implementation:
|
| -
|
| -aura::RootWindow* DesktopRootWindowHostWin::Init(
|
| - aura::Window* content_window,
|
| - const Widget::InitParams& params) {
|
| - // TODO(beng): SetInitParams().
|
| - content_window_ = content_window;
|
| -
|
| - ConfigureWindowStyles(message_handler_.get(), params,
|
| - GetWidget()->widget_delegate(),
|
| - native_widget_delegate_);
|
| -
|
| - message_handler_->Init(NULL, params.bounds);
|
| -
|
| - message_handler_->set_remove_standard_frame(!ShouldUseNativeFrame());
|
| -
|
| - aura::RootWindow::CreateParams rw_params(params.bounds);
|
| - rw_params.host = this;
|
| - root_window_ = new aura::RootWindow(rw_params);
|
| -
|
| - // TODO(beng): We probably need to move these two calls to some function that
|
| - // can change depending on the native-ness of the frame. For right
|
| - // now in the hack-n-slash days of win-aura, we can just
|
| - // unilaterally turn this on.
|
| - root_window_->compositor()->SetHostHasTransparentBackground(true);
|
| - root_window_->SetTransparent(true);
|
| -
|
| - root_window_->Init();
|
| - root_window_->AddChild(content_window_);
|
| -
|
| - native_widget_delegate_->OnNativeWidgetCreated();
|
| -
|
| - capture_client_.reset(new aura::client::DefaultCaptureClient(root_window_));
|
| - aura::client::SetCaptureClient(root_window_, capture_client_.get());
|
| -
|
| - focus_manager_.reset(new aura::FocusManager);
|
| - root_window_->set_focus_manager(focus_manager_.get());
|
| -
|
| - activation_client_.reset(
|
| - new DesktopActivationClient(root_window_->GetFocusManager()));
|
| - aura::client::SetActivationClient(root_window_,
|
| - activation_client_.get());
|
| -
|
| - dispatcher_client_.reset(new DesktopDispatcherClient);
|
| - aura::client::SetDispatcherClient(root_window_,
|
| - dispatcher_client_.get());
|
| -
|
| - cursor_client_.reset(new DesktopCursorClient(root_window_));
|
| - aura::client::SetCursorClient(root_window_, cursor_client_.get());
|
| -
|
| -
|
| - position_client_.reset(new DesktopScreenPositionClient());
|
| - aura::client::SetScreenPositionClient(root_window_,
|
| - position_client_.get());
|
| -
|
| - // CEF sets focus to the window the user clicks down on.
|
| - // TODO(beng): see if we can't do this some other way. CEF seems a heavy-
|
| - // handed way of accomplishing focus.
|
| - root_window_event_filter_ = new views::corewm::CompoundEventFilter;
|
| - root_window_->SetEventFilter(root_window_event_filter_);
|
| -
|
| - input_method_filter_.reset(new views::corewm::InputMethodEventFilter);
|
| - input_method_filter_->SetInputMethodPropertyInRootWindow(root_window_);
|
| - root_window_event_filter_->AddFilter(input_method_filter_.get());
|
| -
|
| - focus_manager_->SetFocusedWindow(content_window_, NULL);
|
| - root_window_->SetProperty(kContentWindowForRootWindow, content_window_);
|
| - return root_window_;
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::Close() {
|
| - message_handler_->Close();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::CloseNow() {
|
| - message_handler_->CloseNow();
|
| -}
|
| -
|
| -aura::RootWindowHost* DesktopRootWindowHostWin::AsRootWindowHost() {
|
| - return this;
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::ShowWindowWithState(
|
| - ui::WindowShowState show_state) {
|
| - message_handler_->ShowWindowWithState(show_state);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::ShowMaximizedWithBounds(
|
| - const gfx::Rect& restored_bounds) {
|
| - message_handler_->ShowMaximizedWithBounds(restored_bounds);
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::IsVisible() const {
|
| - return message_handler_->IsVisible();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetSize(const gfx::Size& size) {
|
| - message_handler_->SetSize(size);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::CenterWindow(const gfx::Size& size) {
|
| - message_handler_->CenterWindow(size);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::GetWindowPlacement(
|
| - gfx::Rect* bounds,
|
| - ui::WindowShowState* show_state) const {
|
| - message_handler_->GetWindowPlacement(bounds, show_state);
|
| -}
|
| -
|
| -gfx::Rect DesktopRootWindowHostWin::GetWindowBoundsInScreen() const {
|
| - return message_handler_->GetWindowBoundsInScreen();
|
| -}
|
| -
|
| -gfx::Rect DesktopRootWindowHostWin::GetClientAreaBoundsInScreen() const {
|
| - return message_handler_->GetClientAreaBoundsInScreen();
|
| -}
|
| -
|
| -gfx::Rect DesktopRootWindowHostWin::GetRestoredBounds() const {
|
| - return message_handler_->GetRestoredBounds();
|
| -}
|
| -
|
| -gfx::Rect DesktopRootWindowHostWin::GetWorkAreaBoundsInScreen() const {
|
| - MONITORINFO monitor_info;
|
| - monitor_info.cbSize = sizeof(monitor_info);
|
| - GetMonitorInfo(MonitorFromWindow(message_handler_->hwnd(),
|
| - MONITOR_DEFAULTTONEAREST),
|
| - &monitor_info);
|
| - return gfx::Rect(monitor_info.rcWork);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetShape(gfx::NativeRegion native_region) {
|
| - SkPath path;
|
| - native_region->getBoundaryPath(&path);
|
| - message_handler_->SetRegion(gfx::CreateHRGNFromSkPath(path));
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::Activate() {
|
| - message_handler_->Activate();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::Deactivate() {
|
| - message_handler_->Deactivate();
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::IsActive() const {
|
| - return message_handler_->IsActive();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::Maximize() {
|
| - message_handler_->Maximize();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::Minimize() {
|
| - message_handler_->Minimize();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::Restore() {
|
| - message_handler_->Restore();
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::IsMaximized() const {
|
| - return message_handler_->IsMaximized();
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::IsMinimized() const {
|
| - return message_handler_->IsMinimized();
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::HasCapture() const {
|
| - return message_handler_->HasCapture();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetAlwaysOnTop(bool always_on_top) {
|
| - message_handler_->SetAlwaysOnTop(always_on_top);
|
| -}
|
| -
|
| -InputMethod* DesktopRootWindowHostWin::CreateInputMethod() {
|
| - // TODO(ime): This is wrong. We need to hook up the native win32 IME on the
|
| - // InputMethodEventFilter, and instead create an InputMethodBridge
|
| - // per-NativeWidget implementation. Once we achieve that we can get rid of
|
| - // this function on this object and DesktopRootWindowHostLinux and just
|
| - // create the InputMethodBridge directly in DesktopNativeWidgetAura. Also
|
| - // at that time DNWA can become the InputMethodDelegate.
|
| - ui::InputMethod* host =
|
| - root_window_->GetProperty(aura::client::kRootWindowInputMethodKey);
|
| - return new InputMethodWin(message_handler_.get(),
|
| - message_handler_->hwnd(),
|
| - host);
|
| -}
|
| -
|
| -internal::InputMethodDelegate*
|
| - DesktopRootWindowHostWin::GetInputMethodDelegate() {
|
| - return message_handler_.get();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetWindowTitle(const string16& title) {
|
| - message_handler_->SetTitle(title);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::ClearNativeFocus() {
|
| - message_handler_->ClearNativeFocus();
|
| -}
|
| -
|
| -Widget::MoveLoopResult DesktopRootWindowHostWin::RunMoveLoop(
|
| - const gfx::Vector2d& drag_offset) {
|
| - return message_handler_->RunMoveLoop(drag_offset) ?
|
| - Widget::MOVE_LOOP_SUCCESSFUL : Widget::MOVE_LOOP_CANCELED;
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::EndMoveLoop() {
|
| - message_handler_->EndMoveLoop();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetVisibilityChangedAnimationsEnabled(
|
| - bool value) {
|
| - message_handler_->SetVisibilityChangedAnimationsEnabled(value);
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::ShouldUseNativeFrame() {
|
| - return ui::win::IsAeroGlassEnabled();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::FrameTypeChanged() {
|
| - message_handler_->FrameTypeChanged();
|
| -}
|
| -
|
| -NonClientFrameView* DesktopRootWindowHostWin::CreateNonClientFrameView() {
|
| - return GetWidget()->ShouldUseNativeFrame() ?
|
| - new NativeFrameView(GetWidget()) : NULL;
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetFullscreen(bool fullscreen) {
|
| - message_handler_->fullscreen_handler()->SetFullscreen(fullscreen);
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::IsFullscreen() const {
|
| - return message_handler_->fullscreen_handler()->fullscreen();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetOpacity(unsigned char opacity) {
|
| - message_handler_->SetOpacity(static_cast<BYTE>(opacity));
|
| - GetWidget()->GetRootView()->SchedulePaint();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetWindowIcons(
|
| - const gfx::ImageSkia& window_icon, const gfx::ImageSkia& app_icon) {
|
| - message_handler_->SetWindowIcons(window_icon, app_icon);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetAccessibleName(const string16& name) {
|
| - message_handler_->SetAccessibleName(name);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetAccessibleRole(
|
| - ui::AccessibilityTypes::Role role) {
|
| - message_handler_->SetAccessibleRole(role);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetAccessibleState(
|
| - ui::AccessibilityTypes::State state) {
|
| - message_handler_->SetAccessibleState(state);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::InitModalType(ui::ModalType modal_type) {
|
| - message_handler_->InitModalType(modal_type);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::FlashFrame(bool flash_frame) {
|
| - message_handler_->FlashFrame(flash_frame);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::OnNativeWidgetFocus() {
|
| - // HWNDMessageHandler will perform the proper updating on its own.
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::OnNativeWidgetBlur() {
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// DesktopRootWindowHostWin, RootWindowHost implementation:
|
| -
|
| -
|
| -void DesktopRootWindowHostWin::SetDelegate(
|
| - aura::RootWindowHostDelegate* delegate) {
|
| - root_window_host_delegate_ = delegate;
|
| -}
|
| -
|
| -aura::RootWindow* DesktopRootWindowHostWin::GetRootWindow() {
|
| - return root_window_;
|
| -}
|
| -
|
| -gfx::AcceleratedWidget DesktopRootWindowHostWin::GetAcceleratedWidget() {
|
| - return message_handler_->hwnd();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::Show() {
|
| - message_handler_->Show();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::Hide() {
|
| - message_handler_->Hide();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::ToggleFullScreen() {
|
| -}
|
| -
|
| -gfx::Rect DesktopRootWindowHostWin::GetBounds() const {
|
| - return GetClientAreaBoundsInScreen();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetBounds(const gfx::Rect& bounds) {
|
| - message_handler_->SetBounds(bounds);
|
| -}
|
| -
|
| -gfx::Point DesktopRootWindowHostWin::GetLocationOnNativeScreen() const {
|
| - return gfx::Point(1, 1);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetCapture() {
|
| - message_handler_->SetCapture();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::ReleaseCapture() {
|
| - message_handler_->ReleaseCapture();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetCursor(gfx::NativeCursor cursor) {
|
| - // Custom web cursors are handled directly.
|
| - if (cursor == ui::kCursorCustom)
|
| - return;
|
| - ui::CursorLoaderWin cursor_loader;
|
| - cursor_loader.SetPlatformCursor(&cursor);
|
| -
|
| - message_handler_->SetCursor(cursor.platform());
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::QueryMouseLocation(gfx::Point* location_return) {
|
| - return false;
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::ConfineCursorToRootWindow() {
|
| - return false;
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::UnConfineCursor() {
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::MoveCursorTo(const gfx::Point& location) {
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SetFocusWhenShown(bool focus_when_shown) {
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::CopyAreaToSkCanvas(
|
| - const gfx::Rect& source_bounds,
|
| - const gfx::Point& dest_offset,
|
| - SkCanvas* canvas) {
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::GrabSnapshot(
|
| - const gfx::Rect& snapshot_bounds,
|
| - std::vector<unsigned char>* png_representation) {
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::PostNativeEvent(
|
| - const base::NativeEvent& native_event) {
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::OnDeviceScaleFactorChanged(
|
| - float device_scale_factor) {
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::PrepareForShutdown() {
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// DesktopRootWindowHostWin, HWNDMessageHandlerDelegate implementation:
|
| -
|
| -bool DesktopRootWindowHostWin::IsWidgetWindow() const {
|
| - return true;
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::IsUsingCustomFrame() const {
|
| - return !GetWidget()->ShouldUseNativeFrame();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SchedulePaint() {
|
| - GetWidget()->GetRootView()->SchedulePaint();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::EnableInactiveRendering() {
|
| - native_widget_delegate_->EnableInactiveRendering();
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::IsInactiveRenderingDisabled() {
|
| - return native_widget_delegate_->IsInactiveRenderingDisabled();
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::CanResize() const {
|
| - return GetWidget()->widget_delegate()->CanResize();
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::CanMaximize() const {
|
| - return GetWidget()->widget_delegate()->CanMaximize();
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::CanActivate() const {
|
| - return native_widget_delegate_->CanActivate();
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::WidgetSizeIsClientSize() const {
|
| - const Widget* widget = GetWidget()->GetTopLevelWidget();
|
| - return IsMaximized() || (widget && widget->ShouldUseNativeFrame());
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::CanSaveFocus() const {
|
| - return GetWidget()->is_top_level();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::SaveFocusOnDeactivate() {
|
| - GetWidget()->GetFocusManager()->StoreFocusedView();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::RestoreFocusOnActivate() {
|
| - RestoreFocusOnEnable();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::RestoreFocusOnEnable() {
|
| - GetWidget()->GetFocusManager()->RestoreFocusedView();
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::IsModal() const {
|
| - return native_widget_delegate_->IsModal();
|
| -}
|
| -
|
| -int DesktopRootWindowHostWin::GetInitialShowState() const {
|
| - return SW_SHOWNORMAL;
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::WillProcessWorkAreaChange() const {
|
| - return GetWidget()->widget_delegate()->WillProcessWorkAreaChange();
|
| -}
|
| -
|
| -int DesktopRootWindowHostWin::GetNonClientComponent(
|
| - const gfx::Point& point) const {
|
| - return native_widget_delegate_->GetNonClientComponent(point);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::GetWindowMask(const gfx::Size& size,
|
| - gfx::Path* path) {
|
| - if (GetWidget()->non_client_view())
|
| - GetWidget()->non_client_view()->GetWindowMask(size, path);
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::GetClientAreaInsets(gfx::Insets* insets) const {
|
| - return false;
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::GetMinMaxSize(gfx::Size* min_size,
|
| - gfx::Size* max_size) const {
|
| - *min_size = native_widget_delegate_->GetMinimumSize();
|
| - *max_size = native_widget_delegate_->GetMaximumSize();
|
| -}
|
| -
|
| -gfx::Size DesktopRootWindowHostWin::GetRootViewSize() const {
|
| - return GetWidget()->GetRootView()->size();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::ResetWindowControls() {
|
| - GetWidget()->non_client_view()->ResetWindowControls();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::PaintLayeredWindow(gfx::Canvas* canvas) {
|
| - GetWidget()->GetRootView()->Paint(canvas);
|
| -}
|
| -
|
| -gfx::NativeViewAccessible DesktopRootWindowHostWin::GetNativeViewAccessible() {
|
| - return GetWidget()->GetRootView()->GetNativeViewAccessible();
|
| -}
|
| -
|
| -InputMethod* DesktopRootWindowHostWin::GetInputMethod() {
|
| - return GetWidget()->GetInputMethodDirect();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleAppDeactivated() {
|
| - native_widget_delegate_->EnableInactiveRendering();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleActivationChanged(bool active) {
|
| - native_widget_delegate_->OnNativeWidgetActivationChanged(active);
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::HandleAppCommand(short command) {
|
| - // We treat APPCOMMAND ids as an extension of our command namespace, and just
|
| - // let the delegate figure out what to do...
|
| - return GetWidget()->widget_delegate() &&
|
| - GetWidget()->widget_delegate()->ExecuteWindowsCommand(command);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleCaptureLost() {
|
| - native_widget_delegate_->OnMouseCaptureLost();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleClose() {
|
| - GetWidget()->Close();
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::HandleCommand(int command) {
|
| - return GetWidget()->widget_delegate()->ExecuteWindowsCommand(command);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleAccelerator(
|
| - const ui::Accelerator& accelerator) {
|
| - GetWidget()->GetFocusManager()->ProcessAccelerator(accelerator);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleCreate() {
|
| - // TODO(beng): moar
|
| - NOTIMPLEMENTED();
|
| -
|
| - native_widget_delegate_->OnNativeWidgetCreated();
|
| -
|
| - // 1. Window property association
|
| - // 2. MouseWheel.
|
| - // 3. Drop target.
|
| - // 4. Tooltip Manager.
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleDestroying() {
|
| - native_widget_delegate_->OnNativeWidgetDestroying();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleDestroyed() {
|
| - root_window_event_filter_->RemoveFilter(input_method_filter_.get());
|
| - desktop_native_widget_aura_->OnHostClosed();
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::HandleInitialFocus() {
|
| - return GetWidget()->SetInitialFocus();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleDisplayChange() {
|
| - GetWidget()->widget_delegate()->OnDisplayChanged();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleBeginWMSizeMove() {
|
| - native_widget_delegate_->OnNativeWidgetBeginUserBoundsChange();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleEndWMSizeMove() {
|
| - native_widget_delegate_->OnNativeWidgetEndUserBoundsChange();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleMove() {
|
| - native_widget_delegate_->OnNativeWidgetMove();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleWorkAreaChanged() {
|
| - GetWidget()->widget_delegate()->OnWorkAreaChanged();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleVisibilityChanged(bool visible) {
|
| - native_widget_delegate_->OnNativeWidgetVisibilityChanged(visible);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleClientSizeChanged(
|
| - const gfx::Size& new_size) {
|
| - if (root_window_host_delegate_)
|
| - root_window_host_delegate_->OnHostResized(new_size);
|
| - // TODO(beng): replace with a layout manager??
|
| - content_window_->SetBounds(gfx::Rect(new_size));
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleFrameChanged() {
|
| - // Replace the frame and layout the contents.
|
| - GetWidget()->non_client_view()->UpdateFrame(true);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleNativeFocus(HWND last_focused_window) {
|
| - // TODO(beng): inform the native_widget_delegate_.
|
| - InputMethod* input_method = GetInputMethod();
|
| - if (input_method)
|
| - input_method->OnFocus();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleNativeBlur(HWND focused_window) {
|
| - // TODO(beng): inform the native_widget_delegate_.
|
| - InputMethod* input_method = GetInputMethod();
|
| - if (input_method)
|
| - input_method->OnBlur();
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::HandleMouseEvent(const ui::MouseEvent& event) {
|
| - if (event.flags() & ui::EF_IS_NON_CLIENT)
|
| - return false;
|
| - return root_window_host_delegate_->OnHostMouseEvent(
|
| - const_cast<ui::MouseEvent*>(&event));
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::HandleKeyEvent(const ui::KeyEvent& event) {
|
| - return root_window_host_delegate_->OnHostKeyEvent(
|
| - const_cast<ui::KeyEvent*>(&event));
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::HandleUntranslatedKeyEvent(
|
| - const ui::KeyEvent& event) {
|
| - InputMethod* input_method = GetInputMethod();
|
| - if (input_method)
|
| - input_method->DispatchKeyEvent(event);
|
| - return !!input_method;
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::HandleIMEMessage(UINT message,
|
| - WPARAM w_param,
|
| - LPARAM l_param,
|
| - LRESULT* result) {
|
| - InputMethod* input_method = GetInputMethod();
|
| - if (!input_method || input_method->IsMock()) {
|
| - *result = 0;
|
| - return false;
|
| - }
|
| -
|
| - InputMethodWin* ime_win = static_cast<InputMethodWin*>(input_method);
|
| - BOOL handled = FALSE;
|
| - *result = ime_win->OnImeMessages(message, w_param, l_param, &handled);
|
| - return !!handled;
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleInputLanguageChange(
|
| - DWORD character_set,
|
| - HKL input_language_id) {
|
| - InputMethod* input_method = GetInputMethod();
|
| - if (input_method && !input_method->IsMock()) {
|
| - static_cast<InputMethodWin*>(input_method)->OnInputLangChange(
|
| - character_set, input_language_id);
|
| - }
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::HandlePaintAccelerated(
|
| - const gfx::Rect& invalid_rect) {
|
| - return native_widget_delegate_->OnNativeWidgetPaintAccelerated(invalid_rect);
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandlePaint(gfx::Canvas* canvas) {
|
| - root_window_host_delegate_->OnHostPaint();
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleScreenReaderDetected() {
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::HandleTooltipNotify(int w_param,
|
| - NMHDR* l_param,
|
| - LRESULT* l_result) {
|
| - return false;
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::HandleTooltipMouseMove(UINT message,
|
| - WPARAM w_param,
|
| - LPARAM l_param) {
|
| -}
|
| -
|
| -bool DesktopRootWindowHostWin::PreHandleMSG(UINT message,
|
| - WPARAM w_param,
|
| - LPARAM l_param,
|
| - LRESULT* result) {
|
| - return false;
|
| -}
|
| -
|
| -void DesktopRootWindowHostWin::PostHandleMSG(UINT message,
|
| - WPARAM w_param,
|
| - LPARAM l_param) {
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// DesktopRootWindowHostWin, private:
|
| -
|
| -Widget* DesktopRootWindowHostWin::GetWidget() {
|
| - return native_widget_delegate_->AsWidget();
|
| -}
|
| -
|
| -const Widget* DesktopRootWindowHostWin::GetWidget() const {
|
| - return native_widget_delegate_->AsWidget();
|
| -}
|
| -
|
| -HWND DesktopRootWindowHostWin::GetHWND() const {
|
| - return message_handler_->hwnd();
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// DesktopRootWindowHost, public:
|
| -
|
| -// static
|
| -DesktopRootWindowHost* DesktopRootWindowHost::Create(
|
| - internal::NativeWidgetDelegate* native_widget_delegate,
|
| - DesktopNativeWidgetAura* desktop_native_widget_aura,
|
| - const gfx::Rect& initial_bounds) {
|
| - return new DesktopRootWindowHostWin(native_widget_delegate,
|
| - desktop_native_widget_aura,
|
| - initial_bounds);
|
| -}
|
| -
|
| -} // namespace views
|
|
|