OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef UI_AURA_DESKTOP_HOST_WIN_H_ | 5 #ifndef UI_AURA_DESKTOP_HOST_WIN_H_ |
6 #define UI_AURA_DESKTOP_HOST_WIN_H_ | 6 #define UI_AURA_DESKTOP_HOST_WIN_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/memory/scoped_ptr.h" | |
11 #include "ui/aura/desktop_host.h" | 10 #include "ui/aura/desktop_host.h" |
12 #include "ui/base/win/window_impl.h" | 11 #include "ui/base/win/window_impl.h" |
13 | 12 |
14 namespace ui { | |
15 class InputMethod; | |
16 } // namespace ui | |
17 | |
18 namespace aura { | 13 namespace aura { |
19 | 14 |
20 class DesktopHostWin : public DesktopHost, | 15 class DesktopHostWin : public DesktopHost, public ui::WindowImpl { |
21 public ui::WindowImpl { | |
22 public: | 16 public: |
23 explicit DesktopHostWin(const gfx::Rect& bounds); | 17 explicit DesktopHostWin(const gfx::Rect& bounds); |
24 virtual ~DesktopHostWin(); | 18 virtual ~DesktopHostWin(); |
25 | 19 |
26 // MessageLoop::Dispatcher: | 20 // MessageLoop::Dispatcher: |
27 virtual bool Dispatch(const MSG& msg); | 21 virtual bool Dispatch(const MSG& msg); |
28 | 22 |
29 // DesktopHost: | 23 // DesktopHost: |
30 virtual void SetDesktop(Desktop* desktop) OVERRIDE; | 24 virtual void SetDesktop(Desktop* desktop) OVERRIDE; |
31 virtual gfx::AcceleratedWidget GetAcceleratedWidget() OVERRIDE; | 25 virtual gfx::AcceleratedWidget GetAcceleratedWidget() OVERRIDE; |
32 virtual void Show() OVERRIDE; | 26 virtual void Show() OVERRIDE; |
33 virtual void ToggleFullScreen() OVERRIDE; | 27 virtual void ToggleFullScreen() OVERRIDE; |
34 virtual gfx::Size GetSize() const OVERRIDE; | 28 virtual gfx::Size GetSize() const OVERRIDE; |
35 virtual void SetSize(const gfx::Size& size) OVERRIDE; | 29 virtual void SetSize(const gfx::Size& size) OVERRIDE; |
36 virtual gfx::Point GetLocationOnNativeScreen() const OVERRIDE; | 30 virtual gfx::Point GetLocationOnNativeScreen() const OVERRIDE; |
37 virtual void SetCursor(gfx::NativeCursor cursor) OVERRIDE; | 31 virtual void SetCursor(gfx::NativeCursor cursor) OVERRIDE; |
38 virtual gfx::Point QueryMouseLocation() OVERRIDE; | 32 virtual gfx::Point QueryMouseLocation() OVERRIDE; |
39 virtual void PostNativeEvent(const base::NativeEvent& native_event) OVERRIDE; | 33 virtual void PostNativeEvent(const base::NativeEvent& native_event) OVERRIDE; |
40 | 34 |
41 virtual void SetInputMethod(ui::InputMethod* input_method) OVERRIDE; | |
42 virtual ui::InputMethod* GetInputMethod() const OVERRIDE; | |
43 | |
44 // ui::internal::InputMethodDelegate Override. | |
45 virtual void DispatchKeyEventPostIME(const base::NativeEvent& event) OVERRIDE; | |
46 virtual void DispatchFabricatedKeyEventPostIME( | |
47 ui::EventType type, ui::KeyboardCode key_code, int flags) OVERRIDE; | |
48 | |
49 private: | 35 private: |
50 BEGIN_MSG_MAP_EX(DesktopHostWin) | 36 BEGIN_MSG_MAP_EX(DesktopHostWin) |
51 // Range handlers must go first! | 37 // Range handlers must go first! |
52 MESSAGE_RANGE_HANDLER_EX(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseRange) | 38 MESSAGE_RANGE_HANDLER_EX(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseRange) |
53 MESSAGE_RANGE_HANDLER_EX(WM_NCMOUSEMOVE, WM_NCXBUTTONDBLCLK, OnMouseRange) | 39 MESSAGE_RANGE_HANDLER_EX(WM_NCMOUSEMOVE, WM_NCXBUTTONDBLCLK, OnMouseRange) |
54 | 40 |
55 // Key events. | 41 // Key events. |
56 MESSAGE_HANDLER_EX(WM_KEYDOWN, OnKeyEvent) | 42 MESSAGE_HANDLER_EX(WM_KEYDOWN, OnKeyEvent) |
57 MESSAGE_HANDLER_EX(WM_KEYUP, OnKeyEvent) | 43 MESSAGE_HANDLER_EX(WM_KEYUP, OnKeyEvent) |
58 MESSAGE_HANDLER_EX(WM_SYSKEYDOWN, OnKeyEvent) | 44 MESSAGE_HANDLER_EX(WM_SYSKEYDOWN, OnKeyEvent) |
59 MESSAGE_HANDLER_EX(WM_SYSKEYUP, OnKeyEvent) | 45 MESSAGE_HANDLER_EX(WM_SYSKEYUP, OnKeyEvent) |
60 MESSAGE_HANDLER_EX(WM_CHAR, OnKeyEvent) | 46 MESSAGE_HANDLER_EX(WM_CHAR, OnKeyEvent) |
61 MESSAGE_HANDLER_EX(WM_SYSCHAR, OnKeyEvent) | 47 MESSAGE_HANDLER_EX(WM_SYSCHAR, OnKeyEvent) |
62 MESSAGE_HANDLER_EX(WM_IME_CHAR, OnKeyEvent) | 48 MESSAGE_HANDLER_EX(WM_IME_CHAR, OnKeyEvent) |
63 | 49 |
64 MSG_WM_CLOSE(OnClose) | 50 MSG_WM_CLOSE(OnClose) |
65 MSG_WM_PAINT(OnPaint) | 51 MSG_WM_PAINT(OnPaint) |
66 MSG_WM_SIZE(OnSize) | 52 MSG_WM_SIZE(OnSize) |
67 END_MSG_MAP() | 53 END_MSG_MAP() |
68 | 54 |
69 void OnClose(); | 55 void OnClose(); |
70 LRESULT OnKeyEvent(UINT message, WPARAM w_param, LPARAM l_param); | 56 LRESULT OnKeyEvent(UINT message, WPARAM w_param, LPARAM l_param); |
71 LRESULT OnMouseRange(UINT message, WPARAM w_param, LPARAM l_param); | 57 LRESULT OnMouseRange(UINT message, WPARAM w_param, LPARAM l_param); |
72 void OnPaint(HDC dc); | 58 void OnPaint(HDC dc); |
73 void OnSize(UINT param, const CSize& size); | 59 void OnSize(UINT param, const CSize& size); |
74 | 60 |
75 Desktop* desktop_; | 61 Desktop* desktop_; |
76 | 62 |
77 scoped_ptr<ui::InputMethod> input_method_; | |
78 | |
79 bool fullscreen_; | 63 bool fullscreen_; |
80 RECT saved_window_rect_; | 64 RECT saved_window_rect_; |
81 DWORD saved_window_style_; | 65 DWORD saved_window_style_; |
82 DWORD saved_window_ex_style_; | 66 DWORD saved_window_ex_style_; |
83 | 67 |
84 DISALLOW_COPY_AND_ASSIGN(DesktopHostWin); | 68 DISALLOW_COPY_AND_ASSIGN(DesktopHostWin); |
85 }; | 69 }; |
86 | 70 |
87 } // namespace aura | 71 } // namespace aura |
88 | 72 |
89 #endif // UI_AURA_DESKTOP_HOST_WIN_H_ | 73 #endif // UI_AURA_DESKTOP_HOST_WIN_H_ |
OLD | NEW |