| Index: aura/desktop_host_linux.cc
|
| ===================================================================
|
| --- aura/desktop_host_linux.cc (revision 100961)
|
| +++ aura/desktop_host_linux.cc (working copy)
|
| @@ -1,122 +0,0 @@
|
| -// Copyright (c) 2011 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.
|
| -
|
| -#include "aura/desktop_host.h"
|
| -
|
| -#include "aura/desktop.h"
|
| -#include "aura/event.h"
|
| -#include "base/message_loop.h"
|
| -#include "base/message_pump_x.h"
|
| -
|
| -#include <X11/Xlib.h>
|
| -
|
| -namespace aura {
|
| -
|
| -namespace {
|
| -
|
| -class DesktopHostLinux : public DesktopHost {
|
| - public:
|
| - explicit DesktopHostLinux(const gfx::Rect& bounds);
|
| - virtual ~DesktopHostLinux();
|
| -
|
| - private:
|
| - // base::MessageLoop::Dispatcher Override.
|
| - virtual DispatchStatus Dispatch(XEvent* xev) OVERRIDE;
|
| -
|
| - // DesktopHost Overrides.
|
| - virtual void SetDesktop(Desktop* desktop) OVERRIDE;
|
| - virtual gfx::AcceleratedWidget GetAcceleratedWidget() OVERRIDE;
|
| - virtual void Show() OVERRIDE;
|
| - virtual gfx::Size GetSize() OVERRIDE;
|
| - virtual void SetSize(const gfx::Size& size) OVERRIDE;
|
| -
|
| - Desktop* desktop_;
|
| -
|
| - // The display and the native X window hosting the desktop.
|
| - Display* xdisplay_;
|
| - ::Window xwindow_;
|
| -
|
| - // The size of |xwindow_|.
|
| - gfx::Rect bounds_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(DesktopHostLinux);
|
| -};
|
| -
|
| -DesktopHostLinux::DesktopHostLinux(const gfx::Rect& bounds)
|
| - : desktop_(NULL),
|
| - xdisplay_(NULL),
|
| - xwindow_(0),
|
| - bounds_(bounds) {
|
| - // This assumes that the message-pump creates and owns the display.
|
| - xdisplay_ = base::MessagePumpX::GetDefaultXDisplay();
|
| - xwindow_ = XCreateSimpleWindow(xdisplay_, DefaultRootWindow(xdisplay_),
|
| - bounds.x(), bounds.y(),
|
| - bounds.width(), bounds.height(),
|
| - 0, 0, 0);
|
| - XMapWindow(xdisplay_, xwindow_);
|
| -
|
| - long event_mask = ButtonPressMask | ButtonReleaseMask |
|
| - KeyPressMask | KeyReleaseMask |
|
| - ExposureMask | VisibilityChangeMask |
|
| - StructureNotifyMask | PropertyChangeMask;
|
| - XSelectInput(xdisplay_, xwindow_, event_mask);
|
| - XFlush(xdisplay_);
|
| -}
|
| -
|
| -DesktopHostLinux::~DesktopHostLinux() {
|
| - XDestroyWindow(xdisplay_, xwindow_);
|
| -}
|
| -
|
| -base::MessagePumpDispatcher::DispatchStatus DesktopHostLinux::Dispatch(
|
| - XEvent* xev) {
|
| - bool handled = false;
|
| - switch (xev->type) {
|
| - case Expose:
|
| - desktop_->Draw();
|
| - handled = true;
|
| - break;
|
| - case KeyPress:
|
| - case KeyRelease: {
|
| - KeyEvent keyev(xev);
|
| - handled = desktop_->OnKeyEvent(keyev);
|
| - break;
|
| - }
|
| - case ButtonPress:
|
| - case ButtonRelease:
|
| - case MotionNotify: {
|
| - MouseEvent mouseev(xev);
|
| - handled = desktop_->OnMouseEvent(mouseev);
|
| - break;
|
| - }
|
| - }
|
| - return handled ? EVENT_PROCESSED : EVENT_IGNORED;
|
| -}
|
| -
|
| -void DesktopHostLinux::SetDesktop(Desktop* desktop) {
|
| - desktop_ = desktop;
|
| -}
|
| -
|
| -gfx::AcceleratedWidget DesktopHostLinux::GetAcceleratedWidget() {
|
| - return xwindow_;
|
| -}
|
| -
|
| -void DesktopHostLinux::Show() {
|
| -}
|
| -
|
| -gfx::Size DesktopHostLinux::GetSize() {
|
| - return bounds_.size();
|
| -}
|
| -
|
| -void DesktopHostLinux::SetSize(const gfx::Size& size) {
|
| - XResizeWindow(xdisplay_, xwindow_, size.width(), size.height());
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// static
|
| -DesktopHost* DesktopHost::Create(const gfx::Rect& bounds) {
|
| - return new DesktopHostLinux(bounds);
|
| -}
|
| -
|
| -} // namespace aura
|
|
|