| Index: ui/views/widget/desktop_aura/desktop_root_window_host_x11.h
|
| diff --git a/ui/views/widget/desktop_aura/desktop_root_window_host_x11.h b/ui/views/widget/desktop_aura/desktop_root_window_host_x11.h
|
| index 8bdfffa9a2a62e46d408f44afe5c721f86d25b33..e1dcc766930db5bc2348fbb56485d345de99bbd0 100644
|
| --- a/ui/views/widget/desktop_aura/desktop_root_window_host_x11.h
|
| +++ b/ui/views/widget/desktop_aura/desktop_root_window_host_x11.h
|
| @@ -12,6 +12,7 @@
|
|
|
| #include "base/basictypes.h"
|
| #include "base/memory/weak_ptr.h"
|
| +#include "base/observer_list.h"
|
| #include "ui/aura/client/cursor_client.h"
|
| #include "ui/aura/root_window_host.h"
|
| #include "ui/base/cursor/cursor_loader_x11.h"
|
| @@ -32,6 +33,7 @@ class DesktopActivationClient;
|
| class DesktopCaptureClient;
|
| class DesktopDragDropClientAuraX11;
|
| class DesktopDispatcherClient;
|
| +class DesktopRootWindowHostObserverX11;
|
| class X11DesktopWindowMoveClient;
|
| class X11WindowEventFilter;
|
|
|
| @@ -64,42 +66,13 @@ class VIEWS_EXPORT DesktopRootWindowHostX11 :
|
| // has changed our activation.
|
| void HandleNativeWidgetActivationChanged(bool active);
|
|
|
| + void AddObserver(views::DesktopRootWindowHostObserverX11* observer);
|
| + void RemoveObserver(views::DesktopRootWindowHostObserverX11* observer);
|
| +
|
| // Deallocates the internal list of open windows.
|
| static void CleanUpWindowList();
|
|
|
| - private:
|
| - // Initializes our X11 surface to draw on. This method performs all
|
| - // initialization related to talking to the X11 server.
|
| - void InitX11Window(const Widget::InitParams& params);
|
| -
|
| - // Creates an aura::RootWindow to contain the |content_window|, along with
|
| - // all aura client objects that direct behavior.
|
| - aura::RootWindow* InitRootWindow(const Widget::InitParams& params);
|
| -
|
| - // Returns true if there's an X window manager present... in most cases. Some
|
| - // window managers (notably, ion3) don't implement enough of ICCCM for us to
|
| - // detect that they're there.
|
| - bool IsWindowManagerPresent();
|
| -
|
| - // Sends a message to the x11 window manager, enabling or disabling the
|
| - // states |state1| and |state2|.
|
| - void SetWMSpecState(bool enabled, ::Atom state1, ::Atom state2);
|
| -
|
| - // Checks if the window manager has set a specific state.
|
| - bool HasWMSpecProperty(const char* property) const;
|
| -
|
| - // Called when another DRWHL takes capture, or when capture is released
|
| - // entirely.
|
| - void OnCaptureReleased();
|
| -
|
| - // Dispatches a mouse event, taking mouse capture into account. If a
|
| - // different host has capture, we translate the event to its coordinate space
|
| - // and dispatch it to that host instead.
|
| - void DispatchMouseEvent(ui::MouseEvent* event);
|
| -
|
| - // See comment for variable open_windows_.
|
| - static std::list<XID>& open_windows();
|
| -
|
| + protected:
|
| // Overridden from DesktopRootWindowHost:
|
| virtual aura::RootWindow* Init(aura::Window* content_window,
|
| const Widget::InitParams& params) OVERRIDE;
|
| @@ -180,6 +153,39 @@ class VIEWS_EXPORT DesktopRootWindowHostX11 :
|
| virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE;
|
| virtual void PrepareForShutdown() OVERRIDE;
|
|
|
| +private:
|
| + // Initializes our X11 surface to draw on. This method performs all
|
| + // initialization related to talking to the X11 server.
|
| + void InitX11Window(const Widget::InitParams& params);
|
| +
|
| + // Creates an aura::RootWindow to contain the |content_window|, along with
|
| + // all aura client objects that direct behavior.
|
| + aura::RootWindow* InitRootWindow(const Widget::InitParams& params);
|
| +
|
| + // Returns true if there's an X window manager present... in most cases. Some
|
| + // window managers (notably, ion3) don't implement enough of ICCCM for us to
|
| + // detect that they're there.
|
| + bool IsWindowManagerPresent();
|
| +
|
| + // Sends a message to the x11 window manager, enabling or disabling the
|
| + // states |state1| and |state2|.
|
| + void SetWMSpecState(bool enabled, ::Atom state1, ::Atom state2);
|
| +
|
| + // Checks if the window manager has set a specific state.
|
| + bool HasWMSpecProperty(const char* property) const;
|
| +
|
| + // Called when another DRWHL takes capture, or when capture is released
|
| + // entirely.
|
| + void OnCaptureReleased();
|
| +
|
| + // Dispatches a mouse event, taking mouse capture into account. If a
|
| + // different host has capture, we translate the event to its coordinate space
|
| + // and dispatch it to that host instead.
|
| + void DispatchMouseEvent(ui::MouseEvent* event);
|
| +
|
| + // See comment for variable open_windows_.
|
| + static std::list<XID>& open_windows();
|
| +
|
| // Overridden from Dispatcher:
|
| virtual bool Dispatch(const base::NativeEvent& event) OVERRIDE;
|
|
|
| @@ -245,6 +251,8 @@ class VIEWS_EXPORT DesktopRootWindowHostX11 :
|
| aura::RootWindowHostDelegate* root_window_host_delegate_;
|
| aura::Window* content_window_;
|
|
|
| + ObserverList<DesktopRootWindowHostObserverX11> observer_list_;
|
| +
|
| // The current root window host that has capture. While X11 has something
|
| // like Windows SetCapture()/ReleaseCapture(), it is entirely implicit and
|
| // there are no notifications when this changes. We need to track this so we
|
|
|