mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Issue 7720: Add target selector and update when scrolling to fragment
This commit is contained in:
parent
7807895d58
commit
04f5369577
10 changed files with 105 additions and 59 deletions
|
@ -241,6 +241,8 @@ pub struct Document {
|
|||
referrer_policy: Cell<Option<ReferrerPolicy>>,
|
||||
/// https://html.spec.whatwg.org/multipage/#dom-document-referrer
|
||||
referrer: Option<String>,
|
||||
/// https://html.spec.whatwg.org/multipage/#target-element
|
||||
target_element: MutNullableHeap<JS<Element>>,
|
||||
}
|
||||
|
||||
#[derive(JSTraceable, HeapSizeOf)]
|
||||
|
@ -1735,6 +1737,7 @@ impl Document {
|
|||
origin: origin,
|
||||
referrer: referrer,
|
||||
referrer_policy: Cell::new(referrer_policy),
|
||||
target_element: MutNullableHeap::new(None),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1886,6 +1889,22 @@ impl Document {
|
|||
pub fn get_referrer_policy(&self) -> Option<ReferrerPolicy> {
|
||||
return self.referrer_policy.get();
|
||||
}
|
||||
|
||||
pub fn set_target_element(&self, node: Option<&Element>) {
|
||||
if let Some(ref element) = self.target_element.get() {
|
||||
element.set_target_state(false);
|
||||
}
|
||||
|
||||
self.target_element.set(node);
|
||||
|
||||
if let Some(ref element) = self.target_element.get() {
|
||||
element.set_target_state(true);
|
||||
}
|
||||
|
||||
self.window.reflow(ReflowGoal::ForDisplay,
|
||||
ReflowQueryType::NoQuery,
|
||||
ReflowReason::ElementStateChanged);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue