mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
added dispatching for mousedown and mouseup events, fixes #5705
This commit is contained in:
parent
b0a7d1bf86
commit
c069d1753e
4 changed files with 79 additions and 31 deletions
|
@ -30,7 +30,7 @@ use dom::bindings::refcounted::{LiveDOMReferences, Trusted, TrustedReference};
|
|||
use dom::bindings::structuredclone::StructuredCloneData;
|
||||
use dom::bindings::trace::{JSTraceable, trace_collections, RootedVec};
|
||||
use dom::bindings::utils::{wrap_for_same_compartment, pre_wrap};
|
||||
use dom::document::{Document, IsHTMLDocument, DocumentHelpers, DocumentProgressHandler, DocumentProgressTask, DocumentSource};
|
||||
use dom::document::{Document, IsHTMLDocument, DocumentHelpers, DocumentProgressHandler, DocumentProgressTask, DocumentSource, MouseEventType};
|
||||
use dom::element::{Element, AttributeHandlers};
|
||||
use dom::event::{Event, EventHelpers, EventBubbles, EventCancelable};
|
||||
use dom::htmliframeelement::{HTMLIFrameElement, HTMLIFrameElementHelpers};
|
||||
|
@ -50,7 +50,7 @@ use webdriver_handlers;
|
|||
use devtools_traits::{DevtoolsControlChan, DevtoolsControlPort, DevtoolsPageInfo};
|
||||
use devtools_traits::{DevtoolsControlMsg, DevtoolScriptControlMsg};
|
||||
use devtools_traits::{TimelineMarker, TimelineMarkerType, TracingMetadata};
|
||||
use script_traits::CompositorEvent;
|
||||
use script_traits::{CompositorEvent, MouseButton};
|
||||
use script_traits::CompositorEvent::{ResizeEvent, ClickEvent};
|
||||
use script_traits::CompositorEvent::{MouseDownEvent, MouseUpEvent};
|
||||
use script_traits::CompositorEvent::{MouseMoveEvent, KeyEvent};
|
||||
|
@ -1229,17 +1229,17 @@ impl ScriptTask {
|
|||
}
|
||||
|
||||
ClickEvent(button, point) => {
|
||||
let _marker;
|
||||
if self.need_emit_timeline_marker(TimelineMarkerType::DOMEvent) {
|
||||
_marker = AutoDOMEventMarker::new(self);
|
||||
}
|
||||
let page = get_page(&self.root_page(), pipeline_id);
|
||||
let document = page.document().root();
|
||||
document.r().handle_click_event(self.js_runtime.rt(), button, point);
|
||||
self.handle_mouse_event(pipeline_id, MouseEventType::Click, button, point);
|
||||
}
|
||||
|
||||
MouseDownEvent(button, point) => {
|
||||
self.handle_mouse_event(pipeline_id, MouseEventType::MouseDown, button, point);
|
||||
}
|
||||
|
||||
MouseUpEvent(button, point) => {
|
||||
self.handle_mouse_event(pipeline_id, MouseEventType::MouseUp, button, point);
|
||||
}
|
||||
|
||||
MouseDownEvent(..) => {}
|
||||
MouseUpEvent(..) => {}
|
||||
MouseMoveEvent(point) => {
|
||||
let _marker;
|
||||
if self.need_emit_timeline_marker(TimelineMarkerType::DOMEvent) {
|
||||
|
@ -1267,6 +1267,16 @@ impl ScriptTask {
|
|||
}
|
||||
}
|
||||
|
||||
fn handle_mouse_event(&self, pipeline_id: PipelineId, mouse_event_type: MouseEventType, button: MouseButton, point: Point2D<f32>) {
|
||||
let _marker;
|
||||
if self.need_emit_timeline_marker(TimelineMarkerType::DOMEvent) {
|
||||
_marker = AutoDOMEventMarker::new(self);
|
||||
}
|
||||
let page = get_page(&self.root_page(), pipeline_id);
|
||||
let document = page.document().root();
|
||||
document.r().handle_mouse_event(self.js_runtime.rt(), button, point, mouse_event_type);
|
||||
}
|
||||
|
||||
/// https://html.spec.whatwg.org/multipage/#navigating-across-documents
|
||||
/// The entry point for content to notify that a new load has been requested
|
||||
/// for the given pipeline (specifically the "navigate" algorithm).
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue