Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(168)

Side by Side Diff: ui/platform_window/x11/x11_window.h

Issue 750593003: Ozone X11 platform Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleanup leftover stuff Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/ozone/public/surface_factory_ozone.cc ('k') | ui/platform_window/x11/x11_window.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_PLATFORM_WINDOW_X11_X11_WINDOW_H_ 5 #ifndef UI_PLATFORM_WINDOW_X11_X11_WINDOW_H_
6 #define UI_PLATFORM_WINDOW_X11_X11_WINDOW_H_ 6 #define UI_PLATFORM_WINDOW_X11_X11_WINDOW_H_
7 7
8 #include <map>
9
10 #include "base/callback.h"
11 #include "base/memory/ref_counted.h"
8 #include "ui/events/platform/platform_event_dispatcher.h" 12 #include "ui/events/platform/platform_event_dispatcher.h"
9 #include "ui/gfx/geometry/rect.h" 13 #include "ui/gfx/geometry/rect.h"
10 #include "ui/gfx/x/x11_atom_cache.h" 14 #include "ui/gfx/x/x11_atom_cache.h"
11 #include "ui/platform_window/platform_window.h" 15 #include "ui/platform_window/platform_window.h"
12 #include "ui/platform_window/platform_window_delegate.h" 16 #include "ui/platform_window/platform_window_delegate.h"
13 #include "ui/platform_window/x11/x11_window_export.h" 17 #include "ui/platform_window/x11/x11_window_export.h"
14 18
15 typedef struct _XDisplay XDisplay; 19 typedef struct _XDisplay XDisplay;
20 typedef union _XEvent XEvent;
16 typedef unsigned long XID; 21 typedef unsigned long XID;
17 22
18 namespace ui { 23 namespace ui {
24 class X11Window;
25 typedef base::Callback<void(XID, X11Window*)> WindowStatusCallback;
26
27 class X11_WINDOW_EXPORT X11WindowManager
28 : public base::RefCounted<X11WindowManager> {
29 public:
30 X11WindowManager();
31
32 scoped_ptr<X11Window> CreatePlatformWindow(PlatformWindowDelegate* delegate);
33 X11Window* FindWindow(XID id);
34
35 private:
36 friend class base::RefCounted<X11WindowManager>;
37
38 virtual ~X11WindowManager();
39
40 void OnWindowCreate(XID id, X11Window* window);
41 void OnWindowDestroy(XID id, X11Window* window);
42
43 std::map<XID, X11Window*> window_map_;
44
45 DISALLOW_COPY_AND_ASSIGN(X11WindowManager);
46 };
19 47
20 class X11_WINDOW_EXPORT X11Window : public PlatformWindow, 48 class X11_WINDOW_EXPORT X11Window : public PlatformWindow,
21 public PlatformEventDispatcher { 49 public PlatformEventDispatcher {
22 public: 50 public:
23 explicit X11Window(PlatformWindowDelegate* delegate); 51 explicit X11Window(PlatformWindowDelegate* delegate,
52 WindowStatusCallback on_create_callback,
53 WindowStatusCallback on_destroy_callback);
24 ~X11Window() override; 54 ~X11Window() override;
25 55
26 private: 56 void Create();
27 void Destroy();
28 57
29 void ProcessXInput2Event(XEvent* xevent); 58 void ProcessWindowEvent(XEvent* xev);
30 59
31 // PlatformWindow: 60 // PlatformWindow:
32 void Show() override; 61 void Show() override;
33 void Hide() override; 62 void Hide() override;
34 void Close() override; 63 void Close() override;
35 void SetBounds(const gfx::Rect& bounds) override; 64 void SetBounds(const gfx::Rect& bounds) override;
36 gfx::Rect GetBounds() override; 65 gfx::Rect GetBounds() override;
37 void SetCapture() override; 66 void SetCapture() override;
38 void ReleaseCapture() override; 67 void ReleaseCapture() override;
39 void ToggleFullscreen() override; 68 void ToggleFullscreen() override;
40 void Maximize() override; 69 void Maximize() override;
41 void Minimize() override; 70 void Minimize() override;
42 void Restore() override; 71 void Restore() override;
43 void SetCursor(PlatformCursor cursor) override; 72 void SetCursor(PlatformCursor cursor) override;
44 void MoveCursorTo(const gfx::Point& location) override; 73 void MoveCursorTo(const gfx::Point& location) override;
45 74
75 private:
76 void Destroy();
77
46 // PlatformEventDispatcher: 78 // PlatformEventDispatcher:
47 bool CanDispatchEvent(const PlatformEvent& event) override; 79 bool CanDispatchEvent(const PlatformEvent& event) override;
48 uint32_t DispatchEvent(const PlatformEvent& event) override; 80 uint32_t DispatchEvent(const PlatformEvent& event) override;
49 81
50 PlatformWindowDelegate* delegate_; 82 PlatformWindowDelegate* delegate_;
51 83
84 WindowStatusCallback on_create_callback_;
85 WindowStatusCallback on_destroy_callback_;
86
52 XDisplay* xdisplay_; 87 XDisplay* xdisplay_;
53 XID xwindow_; 88 XID xwindow_;
54 XID xroot_window_; 89 XID xroot_window_;
55 X11AtomCache atom_cache_; 90 X11AtomCache atom_cache_;
56 91
57 // Setting the bounds is an asynchronous operation in X11. |requested_bounds_| 92 // Setting the bounds is an asynchronous operation in X11. |requested_bounds_|
58 // is the bounds requested using XConfigureWindow, and |confirmed_bounds_| is 93 // is the bounds requested using XConfigureWindow, and |confirmed_bounds_| is
59 // the bounds the X11 server has set on the window. 94 // the bounds the X11 server has set on the window.
60 gfx::Rect requested_bounds_; 95 gfx::Rect requested_bounds_;
61 gfx::Rect confirmed_bounds_; 96 gfx::Rect confirmed_bounds_;
62 97
63 bool window_mapped_; 98 bool window_mapped_;
64 99
65 DISALLOW_COPY_AND_ASSIGN(X11Window); 100 DISALLOW_COPY_AND_ASSIGN(X11Window);
66 }; 101 };
67 102
68 } // namespace ui 103 } // namespace ui
69 104
70 #endif // UI_PLATFORM_WINDOW_X11_X11_WINDOW_H_ 105 #endif // UI_PLATFORM_WINDOW_X11_X11_WINDOW_H_
OLDNEW
« no previous file with comments | « ui/ozone/public/surface_factory_ozone.cc ('k') | ui/platform_window/x11/x11_window.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698