Commit d5d0c8bf authored by dtapuska's avatar dtapuska Committed by Commit bot

Send the WebMouseWheelEvents unconverted if Shift is down.

WebMouseWheelEvents were converted based on Shift getting set. This should
not happen. Instead swap the X&Y before we goto generate the scroll
gesture.

BUG=646109

Review-Url: https://codereview.chromium.org/2359463002
Cr-Commit-Position: refs/heads/master@{#419966}
parent 50de68f4
......@@ -99,10 +99,21 @@ void MouseWheelEventQueue::ProcessMouseWheelAck(
scroll_update.type = WebInputEvent::GestureScrollUpdate;
scroll_update.sourceDevice = blink::WebGestureDeviceTouchpad;
scroll_update.resendingPluginId = -1;
scroll_update.data.scrollUpdate.deltaX =
event_sent_for_gesture_ack_->event.deltaX;
scroll_update.data.scrollUpdate.deltaY =
event_sent_for_gesture_ack_->event.deltaY;
// Swap X & Y if Shift is down and when there is no horizontal movement.
if ((event_sent_for_gesture_ack_->event.modifiers &
WebInputEvent::ShiftKey) != 0 &&
event_sent_for_gesture_ack_->event.deltaX == 0) {
scroll_update.data.scrollUpdate.deltaX =
event_sent_for_gesture_ack_->event.deltaY;
scroll_update.data.scrollUpdate.deltaY =
event_sent_for_gesture_ack_->event.deltaX;
} else {
scroll_update.data.scrollUpdate.deltaX =
event_sent_for_gesture_ack_->event.deltaX;
scroll_update.data.scrollUpdate.deltaY =
event_sent_for_gesture_ack_->event.deltaY;
}
// Only OSX populates the phase and momentumPhase; so
// |inertialPhase| will be UnknownMomentumPhase on all other platforms.
if (event_sent_for_gesture_ack_->event.momentumPhase !=
......
......@@ -136,19 +136,10 @@ blink::WebMouseWheelEvent MakeWebMouseWheelEventFromUiEvent(
webkit_event.timeStampSeconds = EventTimeStampToSeconds(event.time_stamp());
webkit_event.hasPreciseScrollingDeltas = true;
float offset_ordinal_x = 0.f;
float offset_ordinal_y = 0.f;
if ((event.flags() & EF_SHIFT_DOWN) != 0 && event.x_offset() == 0) {
webkit_event.deltaX = event.y_offset();
webkit_event.deltaY = 0;
offset_ordinal_x = event.y_offset_ordinal();
offset_ordinal_y = event.x_offset_ordinal();
} else {
webkit_event.deltaX = event.x_offset();
webkit_event.deltaY = event.y_offset();
offset_ordinal_x = event.x_offset_ordinal();
offset_ordinal_y = event.y_offset_ordinal();
}
float offset_ordinal_x = event.x_offset_ordinal();
float offset_ordinal_y = event.y_offset_ordinal();
webkit_event.deltaX = event.x_offset();
webkit_event.deltaY = event.y_offset();
if (offset_ordinal_x != 0.f && webkit_event.deltaX != 0.f)
webkit_event.accelerationRatioX = offset_ordinal_x / webkit_event.deltaX;
......@@ -437,13 +428,8 @@ blink::WebMouseWheelEvent MakeWebMouseWheelEventFromUiEvent(
webkit_event.modifiers = EventFlagsToWebEventModifiers(event.flags());
webkit_event.timeStampSeconds = EventTimeStampToSeconds(event.time_stamp());
if ((event.flags() & EF_SHIFT_DOWN) != 0 && event.x_offset() == 0) {
webkit_event.deltaX = event.y_offset();
webkit_event.deltaY = 0;
} else {
webkit_event.deltaX = event.x_offset();
webkit_event.deltaY = event.y_offset();
}
webkit_event.deltaX = event.x_offset();
webkit_event.deltaY = event.y_offset();
webkit_event.wheelTicksX = webkit_event.deltaX / MouseWheelEvent::kWheelDelta;
webkit_event.wheelTicksY = webkit_event.deltaY / MouseWheelEvent::kWheelDelta;
......
......@@ -303,8 +303,6 @@ WebMouseWheelEvent WebMouseWheelEventBuilder::Build(
wheel_delta = -wheel_delta; // Windows is <- -/+ ->, WebKit <- +/- ->.
}
}
if (key_state & MK_SHIFT)
horizontal_scroll = true;
// Set modifiers based on key state.
result.modifiers =
......
......@@ -501,34 +501,6 @@ TEST(WebInputEventTest, TestMakeWebMouseWheelEvent) {
EXPECT_EQ(321, webkit_event.y);
EXPECT_EQ(321, webkit_event.windowY);
}
{
// Mouse wheel with shift and no x offset.
base::TimeTicks timestamp = EventTimeForNow();
MouseWheelEvent ui_event(
gfx::Vector2d(0, -MouseWheelEvent::kWheelDelta * 2),
gfx::Point(123, 321), gfx::Point(123, 321), timestamp, EF_SHIFT_DOWN,
0);
blink::WebMouseWheelEvent webkit_event = MakeWebMouseWheelEvent(
ui_event, base::Bind(&GetScreenLocationFromEvent));
EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
webkit_event.modifiers);
EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
webkit_event.timeStampSeconds);
EXPECT_EQ(blink::WebMouseEvent::Button::NoButton, webkit_event.button);
EXPECT_EQ(blink::WebInputEvent::MouseWheel, webkit_event.type);
EXPECT_FLOAT_EQ(ui_event.y_offset() / MouseWheelEvent::kWheelDelta,
webkit_event.wheelTicksX);
EXPECT_FLOAT_EQ(0, webkit_event.wheelTicksY);
EXPECT_EQ(blink::WebPointerProperties::PointerType::Mouse,
webkit_event.pointerType);
EXPECT_EQ(0, webkit_event.tiltX);
EXPECT_EQ(0, webkit_event.tiltY);
EXPECT_TRUE(std::isnan(webkit_event.force));
EXPECT_EQ(123, webkit_event.x);
EXPECT_EQ(123, webkit_event.windowX);
EXPECT_EQ(321, webkit_event.y);
EXPECT_EQ(321, webkit_event.windowY);
}
}
TEST(WebInputEventTest, KeyEvent) {
......
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