1a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// found in the LICENSE file. 4a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 5a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#ifndef ASH_HOST_ASH_WINDOW_TREE_HOST_X11_H_ 6a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#define ASH_HOST_ASH_WINDOW_TREE_HOST_X11_H_ 7a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 8a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ash/ash_export.h" 9a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ash/host/ash_window_tree_host.h" 10a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ash/host/transformer_helper.h" 11a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "base/memory/scoped_ptr.h" 12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ui/aura/env_observer.h" 13a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ui/aura/window_tree_host_x11.h" 14a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace ash { 16a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass RootWindowTransformer; 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class MouseCursorEventFilter; 18a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 19a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass ASH_EXPORT AshWindowTreeHostX11 : public AshWindowTreeHost, 20a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public aura::WindowTreeHostX11, 21a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public aura::EnvObserver { 22a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public: 23a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch explicit AshWindowTreeHostX11(const gfx::Rect& initial_bounds); 24a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual ~AshWindowTreeHostX11(); 25a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 26a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch private: 27a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // AshWindowTreeHost: 28a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void ToggleFullScreen() OVERRIDE; 29a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual bool ConfineCursorToRootWindow() OVERRIDE; 30a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void UnConfineCursor() OVERRIDE; 31a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void SetRootWindowTransformer( 32a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch scoped_ptr<RootWindowTransformer> transformer) OVERRIDE; 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual gfx::Insets GetHostInsets() const OVERRIDE; 34a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual aura::WindowTreeHost* AsWindowTreeHost() OVERRIDE; 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void UpdateDisplayID(int64 id1, int64 id2) OVERRIDE; 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void PrepareForShutdown() OVERRIDE; 37a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // aura::WindowTreehost: 39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE; 40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual gfx::Transform GetRootTransform() const OVERRIDE; 41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void SetRootTransform(const gfx::Transform& transform) OVERRIDE; 42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual gfx::Transform GetInverseRootTransform() const OVERRIDE; 43a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void UpdateRootWindowSize(const gfx::Size& host_size) OVERRIDE; 44a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void OnCursorVisibilityChangedNative(bool show) OVERRIDE; 45a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 46a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // aura::WindowTreeHostX11: 47a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void OnConfigureNotify() OVERRIDE; 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual bool CanDispatchEvent(const ui::PlatformEvent& event) OVERRIDE; 49a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void TranslateAndDispatchLocatedEvent(ui::LocatedEvent* event) 50a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch OVERRIDE; 51a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 52a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // EnvObserver overrides. 53a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void OnWindowInitialized(aura::Window* window) OVERRIDE; 54a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void OnHostInitialized(aura::WindowTreeHost* host) OVERRIDE; 55a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(OS_CHROMEOS) 57a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // Set the CrOS touchpad "tap paused" property. It is used to temporarily 58a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // turn off the Tap-to-click feature when the mouse pointer is invisible. 59a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch void SetCrOSTapPaused(bool state); 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif 61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 62a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch scoped_ptr<XID[]> pointer_barriers_; 63a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 64a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch TransformerHelper transformer_helper_; 65a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // The display IDs associated with this root window. 67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // In single monitor or extended mode dual monitor case, the root window 68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // is associated with one display. 69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // In mirror mode dual monitors case, the root window is associated with 70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // both displays. 71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) std::pair<int64, int64> display_ids_; 72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 73a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch DISALLOW_COPY_AND_ASSIGN(AshWindowTreeHostX11); 74a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}; 75a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 76a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch} // namespace ash 77a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 78a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif // ASH_HOST_ASH_WINDOW_TREE_HOST_X11_H_ 79