| Index: ui/platform_window/x11/x11_window.h
|
| diff --git a/ui/platform_window/x11/x11_window.h b/ui/platform_window/x11/x11_window.h
|
| index eb759121260de89ee648883985f66232558e9c17..de14f96e8eb1026c467c30d95a5e47dea3222c90 100644
|
| --- a/ui/platform_window/x11/x11_window.h
|
| +++ b/ui/platform_window/x11/x11_window.h
|
| @@ -5,6 +5,10 @@
|
| #ifndef UI_PLATFORM_WINDOW_X11_X11_WINDOW_H_
|
| #define UI_PLATFORM_WINDOW_X11_X11_WINDOW_H_
|
|
|
| +#include <map>
|
| +
|
| +#include "base/callback.h"
|
| +#include "base/memory/ref_counted.h"
|
| #include "ui/events/platform/platform_event_dispatcher.h"
|
| #include "ui/gfx/geometry/rect.h"
|
| #include "ui/gfx/x/x11_atom_cache.h"
|
| @@ -13,20 +17,45 @@
|
| #include "ui/platform_window/x11/x11_window_export.h"
|
|
|
| typedef struct _XDisplay XDisplay;
|
| +typedef union _XEvent XEvent;
|
| typedef unsigned long XID;
|
|
|
| namespace ui {
|
| +class X11Window;
|
| +typedef base::Callback<void(XID, X11Window*)> WindowStatusCallback;
|
| +
|
| +class X11_WINDOW_EXPORT X11WindowManager
|
| + : public base::RefCounted<X11WindowManager> {
|
| + public:
|
| + X11WindowManager();
|
| +
|
| + scoped_ptr<X11Window> CreatePlatformWindow(PlatformWindowDelegate* delegate);
|
| + X11Window* FindWindow(XID id);
|
| +
|
| + private:
|
| + friend class base::RefCounted<X11WindowManager>;
|
| +
|
| + virtual ~X11WindowManager();
|
| +
|
| + void OnWindowCreate(XID id, X11Window* window);
|
| + void OnWindowDestroy(XID id, X11Window* window);
|
| +
|
| + std::map<XID, X11Window*> window_map_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(X11WindowManager);
|
| +};
|
|
|
| class X11_WINDOW_EXPORT X11Window : public PlatformWindow,
|
| public PlatformEventDispatcher {
|
| public:
|
| - explicit X11Window(PlatformWindowDelegate* delegate);
|
| + explicit X11Window(PlatformWindowDelegate* delegate,
|
| + WindowStatusCallback on_create_callback,
|
| + WindowStatusCallback on_destroy_callback);
|
| ~X11Window() override;
|
|
|
| - private:
|
| - void Destroy();
|
| + void Create();
|
|
|
| - void ProcessXInput2Event(XEvent* xevent);
|
| + void ProcessWindowEvent(XEvent* xev);
|
|
|
| // PlatformWindow:
|
| void Show() override;
|
| @@ -43,12 +72,18 @@ class X11_WINDOW_EXPORT X11Window : public PlatformWindow,
|
| void SetCursor(PlatformCursor cursor) override;
|
| void MoveCursorTo(const gfx::Point& location) override;
|
|
|
| + private:
|
| + void Destroy();
|
| +
|
| // PlatformEventDispatcher:
|
| bool CanDispatchEvent(const PlatformEvent& event) override;
|
| uint32_t DispatchEvent(const PlatformEvent& event) override;
|
|
|
| PlatformWindowDelegate* delegate_;
|
|
|
| + WindowStatusCallback on_create_callback_;
|
| + WindowStatusCallback on_destroy_callback_;
|
| +
|
| XDisplay* xdisplay_;
|
| XID xwindow_;
|
| XID xroot_window_;
|
|
|