| Index: remoting/client/x11_input_handler.cc
|
| diff --git a/remoting/client/x11_input_handler.cc b/remoting/client/x11_input_handler.cc
|
| index 900b49230471b0d9d51bd50d9916e9cd53ef8fd3..f7900ca2d19d9e1d8b208e0b66f40f85f60a24f3 100644
|
| --- a/remoting/client/x11_input_handler.cc
|
| +++ b/remoting/client/x11_input_handler.cc
|
| @@ -6,7 +6,6 @@
|
|
|
| #include "base/message_loop.h"
|
| #include "remoting/client/client_context.h"
|
| -#include "remoting/client/host_connection.h"
|
| #include "remoting/client/x11_view.h"
|
| #include "remoting/jingle_glue/jingle_thread.h"
|
|
|
| @@ -31,19 +30,33 @@ void X11InputHandler::Initialize() {
|
|
|
| void X11InputHandler::DoProcessX11Events() {
|
| DCHECK_EQ(context_->jingle_thread()->message_loop(), MessageLoop::current());
|
| +
|
| Display* display = static_cast<X11View*>(view_)->display();
|
| if (XPending(display)) {
|
| XEvent e;
|
| XNextEvent(display, &e);
|
| - if (e.type == Expose) {
|
| - // Tell the view to paint again.
|
| - view_->Paint();
|
| - } else if (e.type == ButtonPress) {
|
| - // TODO(hclam): Implement.
|
| - NOTIMPLEMENTED();
|
| - } else {
|
| - // TODO(hclam): Implement.
|
| - NOTIMPLEMENTED();
|
| + switch (e.type) {
|
| + case Expose:
|
| + // Tell the view to paint again.
|
| + view_->Paint();
|
| + break;
|
| + case KeyPress:
|
| + case KeyRelease:
|
| + // TODO(garykac) Implement.
|
| + break;
|
| + case ButtonPress:
|
| + HandleMouseButtonEvent(true, e.xbutton.button);
|
| + HandleMouseMoveEvent(e.xbutton.x, e.xbutton.y);
|
| + break;
|
| + case ButtonRelease:
|
| + HandleMouseButtonEvent(false, e.xbutton.button);
|
| + HandleMouseMoveEvent(e.xbutton.x, e.xbutton.y);
|
| + break;
|
| + case MotionNotify:
|
| + SendMouseMoveEvent(e.xmotion.x, e.xmotion.y);
|
| + break;
|
| + default:
|
| + LOG(WARNING) << "Unknown event type: " << e.type;
|
| }
|
| }
|
|
|
| @@ -60,4 +73,23 @@ void X11InputHandler::ScheduleX11EventHandler() {
|
| kProcessEventsInterval);
|
| }
|
|
|
| +void X11InputHandler::HandleMouseMoveEvent(int x, int y) {
|
| + SendMouseMoveEvent(x, y);
|
| +}
|
| +
|
| +void X11InputHandler::HandleMouseButtonEvent(bool button_down, int xbutton_id) {
|
| + MouseButton button = MouseButtonUndefined;
|
| + if (xbutton_id == 1) {
|
| + button = MouseButtonLeft;
|
| + } else if (xbutton_id == 2) {
|
| + button = MouseButtonMiddle;
|
| + } else if (xbutton_id == 3) {
|
| + button = MouseButtonRight;
|
| + }
|
| +
|
| + if (button != MouseButtonUndefined) {
|
| + SendMouseButtonEvent(button_down, button);
|
| + }
|
| +}
|
| +
|
| } // namespace remoting
|
|
|