1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef UI_PLATFORM_WINDOW_X11_X11_WINDOW_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define UI_PLATFORM_WINDOW_X11_X11_WINDOW_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/events/platform/platform_event_dispatcher.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/gfx/geometry/rect.h" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/gfx/x/x11_atom_cache.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/platform_window/platform_window.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/platform_window/platform_window_delegate.h" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/platform_window/x11/x11_window_export.h" 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtypedef struct _XDisplay XDisplay; 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtypedef unsigned long XID; 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace ui { 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass X11_WINDOW_EXPORT X11Window : public PlatformWindow, 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public PlatformEventDispatcher { 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch explicit X11Window(PlatformWindowDelegate* delegate); 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~X11Window(); 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void Destroy(); 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void ProcessXInput2Event(XEvent* xevent); 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // PlatformWindow: 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Show() OVERRIDE; 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Hide() OVERRIDE; 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Close() OVERRIDE; 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE; 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual gfx::Rect GetBounds() OVERRIDE; 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void SetCapture() OVERRIDE; 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void ReleaseCapture() OVERRIDE; 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void ToggleFullscreen() OVERRIDE; 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Maximize() OVERRIDE; 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Minimize() OVERRIDE; 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Restore() OVERRIDE; 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void SetCursor(PlatformCursor cursor) OVERRIDE; 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void MoveCursorTo(const gfx::Point& location) OVERRIDE; 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // PlatformEventDispatcher: 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool CanDispatchEvent(const PlatformEvent& event) OVERRIDE; 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual uint32_t DispatchEvent(const PlatformEvent& event) OVERRIDE; 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch PlatformWindowDelegate* delegate_; 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch XDisplay* xdisplay_; 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch XID xwindow_; 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch XID xroot_window_; 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch X11AtomCache atom_cache_; 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Setting the bounds is an asynchronous operation in X11. |requested_bounds_| 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // is the bounds requested using XConfigureWindow, and |confirmed_bounds_| is 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // the bounds the X11 server has set on the window. 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect requested_bounds_; 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::Rect confirmed_bounds_; 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool window_mapped_; 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DISALLOW_COPY_AND_ASSIGN(X11Window); 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace ui 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // UI_PLATFORM_WINDOW_X11_X11_WINDOW_H_ 71