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 |
deleted file mode 100644 |
index c7184b2642fe9cd6c6b9b75603f01fc2f0c30f82..0000000000000000000000000000000000000000 |
--- a/ui/views/widget/desktop_aura/desktop_root_window_host_x11.h |
+++ /dev/null |
@@ -1,308 +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. |
- |
-#ifndef UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_ROOT_WINDOW_HOST_X11_H_ |
-#define UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_ROOT_WINDOW_HOST_X11_H_ |
- |
-#include <X11/extensions/shape.h> |
-#include <X11/Xlib.h> |
- |
-// Get rid of a macro from Xlib.h that conflicts with Aura's RootWindow class. |
-#undef RootWindow |
- |
-#include "base/basictypes.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/observer_list.h" |
-#include "ui/aura/window_tree_host.h" |
-#include "ui/base/cursor/cursor_loader_x11.h" |
-#include "ui/gfx/rect.h" |
-#include "ui/gfx/x/x11_atom_cache.h" |
-#include "ui/views/views_export.h" |
-#include "ui/views/widget/desktop_aura/desktop_root_window_host.h" |
- |
-namespace gfx { |
-class ImageSkia; |
-class ImageSkiaRep; |
-} |
- |
-namespace views { |
-class DesktopDragDropClientAuraX11; |
-class DesktopDispatcherClient; |
-class DesktopWindowTreeHostObserverX11; |
-class X11DesktopWindowMoveClient; |
-class X11ScopedCapture; |
-class X11WindowEventFilter; |
- |
-class VIEWS_EXPORT DesktopWindowTreeHostX11 : |
- public DesktopWindowTreeHost, |
- public aura::WindowTreeHost, |
- public ui::EventSource, |
- public base::MessagePumpDispatcher { |
- public: |
- DesktopWindowTreeHostX11( |
- internal::NativeWidgetDelegate* native_widget_delegate, |
- DesktopNativeWidgetAura* desktop_native_widget_aura); |
- virtual ~DesktopWindowTreeHostX11(); |
- |
- // A way of converting an X11 |xid| host window into a |content_window_|. |
- static aura::Window* GetContentWindowForXID(XID xid); |
- |
- // A way of converting an X11 |xid| host window into this object. |
- static DesktopWindowTreeHostX11* GetHostForXID(XID xid); |
- |
- // Get all open top-level windows. This includes windows that may not be |
- // visible. This list is sorted in their stacking order, i.e. the first window |
- // is the topmost window. |
- static std::vector<aura::Window*> GetAllOpenWindows(); |
- |
- // Returns the current bounds in terms of the X11 Root Window. |
- gfx::Rect GetX11RootWindowBounds() const; |
- |
- // Called by X11DesktopHandler to notify us that the native windowing system |
- // has changed our activation. |
- void HandleNativeWidgetActivationChanged(bool active); |
- |
- void AddObserver(views::DesktopWindowTreeHostObserverX11* observer); |
- void RemoveObserver(views::DesktopWindowTreeHostObserverX11* observer); |
- |
- // Deallocates the internal list of open windows. |
- static void CleanUpWindowList(); |
- |
- protected: |
- // Overridden from DesktopWindowTreeHost: |
- virtual void Init(aura::Window* content_window, |
- const Widget::InitParams& params, |
- aura::RootWindow::CreateParams* rw_create_params) OVERRIDE; |
- virtual void OnRootWindowCreated(aura::RootWindow* root, |
- const Widget::InitParams& params) OVERRIDE; |
- virtual scoped_ptr<corewm::Tooltip> CreateTooltip() OVERRIDE; |
- virtual scoped_ptr<aura::client::DragDropClient> |
- CreateDragDropClient(DesktopNativeCursorManager* cursor_manager) OVERRIDE; |
- virtual void Close() OVERRIDE; |
- virtual void CloseNow() OVERRIDE; |
- virtual aura::WindowTreeHost* AsWindowTreeHost() OVERRIDE; |
- virtual void ShowWindowWithState(ui::WindowShowState show_state) OVERRIDE; |
- virtual void ShowMaximizedWithBounds( |
- const gfx::Rect& restored_bounds) OVERRIDE; |
- virtual bool IsVisible() const OVERRIDE; |
- virtual void SetSize(const gfx::Size& size) OVERRIDE; |
- virtual void StackAtTop() OVERRIDE; |
- virtual void CenterWindow(const gfx::Size& size) OVERRIDE; |
- virtual void GetWindowPlacement( |
- gfx::Rect* bounds, |
- ui::WindowShowState* show_state) const OVERRIDE; |
- virtual gfx::Rect GetWindowBoundsInScreen() const OVERRIDE; |
- virtual gfx::Rect GetClientAreaBoundsInScreen() const OVERRIDE; |
- virtual gfx::Rect GetRestoredBounds() const OVERRIDE; |
- virtual gfx::Rect GetWorkAreaBoundsInScreen() const OVERRIDE; |
- virtual void SetShape(gfx::NativeRegion native_region) OVERRIDE; |
- virtual void Activate() OVERRIDE; |
- virtual void Deactivate() OVERRIDE; |
- virtual bool IsActive() const OVERRIDE; |
- virtual void Maximize() OVERRIDE; |
- virtual void Minimize() OVERRIDE; |
- virtual void Restore() OVERRIDE; |
- virtual bool IsMaximized() const OVERRIDE; |
- virtual bool IsMinimized() const OVERRIDE; |
- virtual bool HasCapture() const OVERRIDE; |
- virtual void SetAlwaysOnTop(bool always_on_top) OVERRIDE; |
- virtual bool IsAlwaysOnTop() const OVERRIDE; |
- virtual bool SetWindowTitle(const base::string16& title) OVERRIDE; |
- virtual void ClearNativeFocus() OVERRIDE; |
- virtual Widget::MoveLoopResult RunMoveLoop( |
- const gfx::Vector2d& drag_offset, |
- Widget::MoveLoopSource source, |
- Widget::MoveLoopEscapeBehavior escape_behavior) OVERRIDE; |
- virtual void EndMoveLoop() OVERRIDE; |
- virtual void SetVisibilityChangedAnimationsEnabled(bool value) OVERRIDE; |
- virtual bool ShouldUseNativeFrame() const OVERRIDE; |
- virtual bool ShouldWindowContentsBeTransparent() const OVERRIDE; |
- virtual void FrameTypeChanged() OVERRIDE; |
- virtual NonClientFrameView* CreateNonClientFrameView() OVERRIDE; |
- virtual void SetFullscreen(bool fullscreen) OVERRIDE; |
- virtual bool IsFullscreen() const OVERRIDE; |
- virtual void SetOpacity(unsigned char opacity) OVERRIDE; |
- virtual void SetWindowIcons(const gfx::ImageSkia& window_icon, |
- const gfx::ImageSkia& app_icon) OVERRIDE; |
- virtual void InitModalType(ui::ModalType modal_type) OVERRIDE; |
- virtual void FlashFrame(bool flash_frame) OVERRIDE; |
- virtual void OnRootViewLayout() const OVERRIDE; |
- virtual void OnNativeWidgetFocus() OVERRIDE; |
- virtual void OnNativeWidgetBlur() OVERRIDE; |
- virtual bool IsAnimatingClosed() const OVERRIDE; |
- |
- // Overridden from aura::WindowTreeHost: |
- virtual aura::RootWindow* GetRootWindow() OVERRIDE; |
- virtual gfx::AcceleratedWidget GetAcceleratedWidget() OVERRIDE; |
- virtual void Show() OVERRIDE; |
- virtual void Hide() OVERRIDE; |
- virtual void ToggleFullScreen() OVERRIDE; |
- virtual gfx::Rect GetBounds() const OVERRIDE; |
- virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE; |
- virtual gfx::Insets GetInsets() const OVERRIDE; |
- virtual void SetInsets(const gfx::Insets& insets) OVERRIDE; |
- virtual gfx::Point GetLocationOnNativeScreen() const OVERRIDE; |
- virtual void SetCapture() OVERRIDE; |
- virtual void ReleaseCapture() OVERRIDE; |
- virtual void SetCursor(gfx::NativeCursor cursor) OVERRIDE; |
- virtual bool QueryMouseLocation(gfx::Point* location_return) OVERRIDE; |
- virtual bool ConfineCursorToRootWindow() OVERRIDE; |
- virtual void UnConfineCursor() OVERRIDE; |
- virtual void OnCursorVisibilityChanged(bool show) OVERRIDE; |
- virtual void MoveCursorTo(const gfx::Point& location) OVERRIDE; |
- virtual void PostNativeEvent(const base::NativeEvent& native_event) OVERRIDE; |
- virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE; |
- virtual void PrepareForShutdown() OVERRIDE; |
- |
- // Overridden frm ui::EventSource |
- virtual ui::EventProcessor* GetEventProcessor() 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; |
- |
- // Sets whether the window's borders are provided by the window manager. |
- void SetUseNativeFrame(bool use_native_frame); |
- |
- // 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); |
- |
- // Dispatches a touch event, taking capture into account. If a different host |
- // has capture, then touch-press events are translated to its coordinate space |
- // and dispatched to that host instead. |
- void DispatchTouchEvent(ui::TouchEvent* event); |
- |
- // Resets the window region for the current widget bounds if necessary. |
- void ResetWindowRegion(); |
- |
- // Serializes an image to the format used by _NET_WM_ICON. |
- void SerializeImageRepresentation(const gfx::ImageSkiaRep& rep, |
- std::vector<unsigned long>* data); |
- |
- // See comment for variable open_windows_. |
- static std::list<XID>& open_windows(); |
- |
- // Map the window (shows it) taking into account the given |show_state|. |
- void MapWindow(ui::WindowShowState show_state); |
- |
- // Overridden from Dispatcher: |
- virtual uint32_t Dispatch(const base::NativeEvent& event) OVERRIDE; |
- |
- base::WeakPtrFactory<DesktopWindowTreeHostX11> close_widget_factory_; |
- |
- // X11 things |
- // The display and the native X window hosting the root window. |
- XDisplay* xdisplay_; |
- ::Window xwindow_; |
- |
- // The native root window. |
- ::Window x_root_window_; |
- |
- ui::X11AtomCache atom_cache_; |
- |
- // Is the window mapped to the screen? |
- bool window_mapped_; |
- |
- // The bounds of |xwindow_|. |
- gfx::Rect bounds_; |
- |
- // Whenever the bounds are set, we keep the previous set of bounds around so |
- // we can have a better chance of getting the real |restored_bounds_|. Window |
- // managers tend to send a Configure message with the maximized bounds, and |
- // then set the window maximized property. (We don't rely on this for when we |
- // request that the window be maximized, only when we detect that some other |
- // process has requested that we become the maximized window.) |
- gfx::Rect previous_bounds_; |
- |
- // The bounds of our window before we were maximized. |
- gfx::Rect restored_bounds_; |
- |
- // The window manager state bits. |
- std::set< ::Atom> window_properties_; |
- |
- // Local flag for fullscreen state to avoid a state mismatch between |
- // server and local window_properties_ during app-initiated fullscreen. |
- bool is_fullscreen_; |
- |
- // True if the window should stay on top of most other windows. |
- bool is_always_on_top_; |
- |
- // True if the window has title-bar / borders provided by the window manager. |
- bool use_native_frame_; |
- |
- // We are owned by the RootWindow, but we have to have a back pointer to it. |
- aura::RootWindow* root_window_; |
- |
- scoped_ptr<DesktopDispatcherClient> dispatcher_client_; |
- |
- DesktopDragDropClientAuraX11* drag_drop_client_; |
- |
- // Current Aura cursor. |
- gfx::NativeCursor current_cursor_; |
- |
- scoped_ptr<X11WindowEventFilter> x11_window_event_filter_; |
- scoped_ptr<X11DesktopWindowMoveClient> x11_window_move_client_; |
- |
- // TODO(beng): Consider providing an interface to DesktopNativeWidgetAura |
- // instead of providing this route back to Widget. |
- internal::NativeWidgetDelegate* native_widget_delegate_; |
- |
- DesktopNativeWidgetAura* desktop_native_widget_aura_; |
- |
- aura::Window* content_window_; |
- |
- // We can optionally have a parent which can order us to close, or own |
- // children who we're responsible for closing when we CloseNow(). |
- DesktopWindowTreeHostX11* window_parent_; |
- std::set<DesktopWindowTreeHostX11*> window_children_; |
- |
- ObserverList<DesktopWindowTreeHostObserverX11> observer_list_; |
- |
- // Copy of custom window shape specified via SetShape(), if any. |
- ::Region custom_window_shape_; |
- |
- // 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 |
- // can notify widgets when they have lost capture, which controls a bunch of |
- // things in views like hiding menus. |
- static DesktopWindowTreeHostX11* g_current_capture; |
- |
- // A list of all (top-level) windows that have been created but not yet |
- // destroyed. |
- static std::list<XID>* open_windows_; |
- |
- scoped_ptr<X11ScopedCapture> x11_capture_; |
- |
- base::string16 window_title_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DesktopWindowTreeHostX11); |
-}; |
- |
-} // namespace views |
- |
-#endif // UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_ROOT_WINDOW_HOST_X11_H_ |