зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1505489 - Implement GeckoElement::each_part. r=heycam
This should make all the pieces come together. Note that we don't need to look at the snapshot for ::part() for now (other than when selector-matching normally) because I decided to just restyle the element for now when the part attribute changes. ::part() can't affect descendants anyway (as long as we don't do the forwarding stuff), and eager pseudo-elements are handled during the normal element restyle, so it seems to me that adding all the complexity that we have for classes to part may not be worth it at least yet. Depends on D32647 Differential Revision: https://phabricator.services.mozilla.com/D32648 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
3685cf25a7
Коммит
72a9fa3730
|
@ -211,7 +211,7 @@ impl ElementSnapshot for GeckoElementSnapshot {
|
|||
return;
|
||||
}
|
||||
|
||||
snapshot_helpers::each_class(&self.mClass, callback)
|
||||
snapshot_helpers::each_class_or_part(&self.mClass, callback)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
|
|
|
@ -107,9 +107,9 @@ pub fn has_class_or_part(
|
|||
}
|
||||
|
||||
/// Given an item, a callback, and a getter, execute `callback` for each class
|
||||
/// this `item` has.
|
||||
/// or part name this `item` has.
|
||||
#[inline(always)]
|
||||
pub fn each_class<F>(attr: &structs::nsAttrValue, mut callback: F)
|
||||
pub fn each_class_or_part<F>(attr: &structs::nsAttrValue, mut callback: F)
|
||||
where
|
||||
F: FnMut(&Atom),
|
||||
{
|
||||
|
|
|
@ -1372,7 +1372,19 @@ impl<'le> TElement for GeckoElement<'le> {
|
|||
None => return,
|
||||
};
|
||||
|
||||
snapshot_helpers::each_class(attr, callback)
|
||||
snapshot_helpers::each_class_or_part(attr, callback)
|
||||
}
|
||||
|
||||
fn each_part<F>(&self, callback: F)
|
||||
where
|
||||
F: FnMut(&Atom),
|
||||
{
|
||||
let attr = match self.get_part_attr() {
|
||||
Some(c) => c,
|
||||
None => return,
|
||||
};
|
||||
|
||||
snapshot_helpers::each_class_or_part(attr, callback)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
|
|
Загрузка…
Ссылка в новой задаче