Commit e7191cc4 authored by weitaosu@chromium.org's avatar weitaosu@chromium.org

Issue 245137: Mouse-move events not sent after clicking on drop-down toolbar

Revert "Issue 236549: Inactive window should not be capturing mouseover"

This reverts commit bb5596a0.

See issue 246335: pepper plugin no longer gets notified on of didChangeFocus.

BUG=245137

Review URL: https://chromiumcodereview.appspot.com/16140022

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203904 0039d316-1c4b-4281-b951-d872f2087c98
parent b0c63d78
...@@ -446,12 +446,6 @@ void ChromotingInstance::DidChangeView(const pp::View& view) { ...@@ -446,12 +446,6 @@ void ChromotingInstance::DidChangeView(const pp::View& view) {
} }
} }
void ChromotingInstance::DidChangeFocus(bool has_focus) {
DCHECK(plugin_task_runner_->BelongsToCurrentThread());
input_handler_.OnFocusChanged(has_focus);
}
bool ChromotingInstance::HandleInputEvent(const pp::InputEvent& event) { bool ChromotingInstance::HandleInputEvent(const pp::InputEvent& event) {
DCHECK(plugin_task_runner_->BelongsToCurrentThread()); DCHECK(plugin_task_runner_->BelongsToCurrentThread());
......
...@@ -108,7 +108,6 @@ class ChromotingInstance : ...@@ -108,7 +108,6 @@ class ChromotingInstance :
// pp::Instance interface. // pp::Instance interface.
virtual void DidChangeView(const pp::View& view) OVERRIDE; virtual void DidChangeView(const pp::View& view) OVERRIDE;
virtual void DidChangeFocus(bool has_focus) OVERRIDE;
virtual bool Init(uint32_t argc, const char* argn[], virtual bool Init(uint32_t argc, const char* argn[],
const char* argv[]) OVERRIDE; const char* argv[]) OVERRIDE;
virtual void HandleMessage(const pp::Var& message) OVERRIDE; virtual void HandleMessage(const pp::Var& message) OVERRIDE;
......
...@@ -15,7 +15,6 @@ namespace remoting { ...@@ -15,7 +15,6 @@ namespace remoting {
PepperInputHandler::PepperInputHandler(protocol::InputStub* input_stub) PepperInputHandler::PepperInputHandler(protocol::InputStub* input_stub)
: input_stub_(input_stub), : input_stub_(input_stub),
has_focus_(false),
wheel_delta_x_(0), wheel_delta_x_(0),
wheel_delta_y_(0) { wheel_delta_y_(0) {
} }
...@@ -34,10 +33,6 @@ uint32_t GetUsbKeyCode(pp::KeyboardInputEvent pp_key_event) { ...@@ -34,10 +33,6 @@ uint32_t GetUsbKeyCode(pp::KeyboardInputEvent pp_key_event) {
return key_event_interface->GetUsbKeyCode(pp_key_event.pp_resource()); return key_event_interface->GetUsbKeyCode(pp_key_event.pp_resource());
} }
void PepperInputHandler::OnFocusChanged(bool has_focus) {
has_focus_ = has_focus;
}
bool PepperInputHandler::HandleInputEvent(const pp::InputEvent& event) { bool PepperInputHandler::HandleInputEvent(const pp::InputEvent& event) {
switch (event.GetType()) { switch (event.GetType()) {
case PP_INPUTEVENT_TYPE_CONTEXTMENU: { case PP_INPUTEVENT_TYPE_CONTEXTMENU: {
...@@ -86,45 +81,37 @@ bool PepperInputHandler::HandleInputEvent(const pp::InputEvent& event) { ...@@ -86,45 +81,37 @@ bool PepperInputHandler::HandleInputEvent(const pp::InputEvent& event) {
case PP_INPUTEVENT_TYPE_MOUSEMOVE: case PP_INPUTEVENT_TYPE_MOUSEMOVE:
case PP_INPUTEVENT_TYPE_MOUSEENTER: case PP_INPUTEVENT_TYPE_MOUSEENTER:
case PP_INPUTEVENT_TYPE_MOUSELEAVE: { case PP_INPUTEVENT_TYPE_MOUSELEAVE: {
// Don't pass these mouse events through when the pp::MouseInputEvent pp_mouse_event(event);
// client doesn't have focus. protocol::MouseEvent mouse_event;
if (has_focus_) { mouse_event.set_x(pp_mouse_event.GetPosition().x());
pp::MouseInputEvent pp_mouse_event(event); mouse_event.set_y(pp_mouse_event.GetPosition().y());
protocol::MouseEvent mouse_event; input_stub_->InjectMouseEvent(mouse_event);
mouse_event.set_x(pp_mouse_event.GetPosition().x());
mouse_event.set_y(pp_mouse_event.GetPosition().y());
input_stub_->InjectMouseEvent(mouse_event);
}
return true; return true;
} }
case PP_INPUTEVENT_TYPE_WHEEL: { case PP_INPUTEVENT_TYPE_WHEEL: {
// Don't pass wheel events through when the pp::WheelInputEvent pp_wheel_event(event);
// client doesn't have focus.
if (has_focus_) { // Don't handle scroll-by-page events, for now.
pp::WheelInputEvent pp_wheel_event(event); if (pp_wheel_event.GetScrollByPage())
return false;
// Don't handle scroll-by-page events, for now.
if (pp_wheel_event.GetScrollByPage()) // Add this event to our accumulated sub-pixel deltas.
return false; pp::FloatPoint delta = pp_wheel_event.GetDelta();
wheel_delta_x_ += delta.x();
// Add this event to our accumulated sub-pixel deltas. wheel_delta_y_ += delta.y();
pp::FloatPoint delta = pp_wheel_event.GetDelta();
wheel_delta_x_ += delta.x(); // If there is at least a pixel's movement, emit an event.
wheel_delta_y_ += delta.y(); int delta_x = static_cast<int>(wheel_delta_x_);
int delta_y = static_cast<int>(wheel_delta_y_);
// If there is at least a pixel's movement, emit an event. if (delta_x != 0 || delta_y != 0) {
int delta_x = static_cast<int>(wheel_delta_x_); wheel_delta_x_ -= delta_x;
int delta_y = static_cast<int>(wheel_delta_y_); wheel_delta_y_ -= delta_y;
if (delta_x != 0 || delta_y != 0) { protocol::MouseEvent mouse_event;
wheel_delta_x_ -= delta_x; mouse_event.set_wheel_delta_x(delta_x);
wheel_delta_y_ -= delta_y; mouse_event.set_wheel_delta_y(delta_y);
protocol::MouseEvent mouse_event;
mouse_event.set_wheel_delta_x(delta_x); input_stub_->InjectMouseEvent(mouse_event);
mouse_event.set_wheel_delta_y(delta_y);
input_stub_->InjectMouseEvent(mouse_event);
}
} }
return true; return true;
} }
......
...@@ -23,20 +23,11 @@ class PepperInputHandler { ...@@ -23,20 +23,11 @@ class PepperInputHandler {
explicit PepperInputHandler(protocol::InputStub* input_stub); explicit PepperInputHandler(protocol::InputStub* input_stub);
virtual ~PepperInputHandler(); virtual ~PepperInputHandler();
// Called by ChromotingInstance::DidChangeFocus when the instance
// goes in or out of focus. Sets or clears the has_focus_ flag
// which controls whether the client passes mouse and wheel
// events to the remoting server.
void OnFocusChanged(bool has_focus);
bool HandleInputEvent(const pp::InputEvent& event); bool HandleInputEvent(const pp::InputEvent& event);
private: private:
protocol::InputStub* input_stub_; protocol::InputStub* input_stub_;
// Flag indicating whether the calling plugin has focus.
bool has_focus_;
// Accumulated sub-pixel deltas from wheel events. // Accumulated sub-pixel deltas from wheel events.
float wheel_delta_x_; float wheel_delta_x_;
float wheel_delta_y_; float wheel_delta_y_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment