mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-01 22:07:41 +00:00
Bug 1781046 - Let elements have a last remembered size. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D154322
This commit is contained in:
parent
58e7783c9d
commit
d780913e08
@ -482,6 +482,26 @@ void Element::SetShadowRoot(ShadowRoot* aShadowRoot) {
|
||||
slots->mShadowRoot = aShadowRoot;
|
||||
}
|
||||
|
||||
void Element::SetLastRememberedBSize(float aBSize) {
|
||||
ExtendedDOMSlots()->mLastRememberedBSize = Some(aBSize);
|
||||
}
|
||||
|
||||
void Element::SetLastRememberedISize(float aISize) {
|
||||
ExtendedDOMSlots()->mLastRememberedISize = Some(aISize);
|
||||
}
|
||||
|
||||
void Element::RemoveLastRememberedBSize() {
|
||||
if (nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots()) {
|
||||
slots->mLastRememberedBSize.reset();
|
||||
}
|
||||
}
|
||||
|
||||
void Element::RemoveLastRememberedISize() {
|
||||
if (nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots()) {
|
||||
slots->mLastRememberedISize.reset();
|
||||
}
|
||||
}
|
||||
|
||||
void Element::Blur(mozilla::ErrorResult& aError) {
|
||||
if (!ShouldBlur(this)) {
|
||||
return;
|
||||
|
@ -298,6 +298,11 @@ class Element : public FragmentOrElement {
|
||||
*/
|
||||
void SetShadowRoot(ShadowRoot* aShadowRoot);
|
||||
|
||||
void SetLastRememberedBSize(float aBSize);
|
||||
void SetLastRememberedISize(float aISize);
|
||||
void RemoveLastRememberedBSize();
|
||||
void RemoveLastRememberedISize();
|
||||
|
||||
/**
|
||||
* Make focus on this element.
|
||||
*/
|
||||
@ -1311,6 +1316,21 @@ class Element : public FragmentOrElement {
|
||||
return slots ? slots->mShadowRoot.get() : nullptr;
|
||||
}
|
||||
|
||||
const Maybe<float> GetLastRememberedBSize() const {
|
||||
const nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
|
||||
return slots ? slots->mLastRememberedBSize : Nothing();
|
||||
}
|
||||
const Maybe<float> GetLastRememberedISize() const {
|
||||
const nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
|
||||
return slots ? slots->mLastRememberedISize : Nothing();
|
||||
}
|
||||
bool HasLastRememberedBSize() const {
|
||||
return GetLastRememberedBSize().isSome();
|
||||
}
|
||||
bool HasLastRememberedISize() const {
|
||||
return GetLastRememberedISize().isSome();
|
||||
}
|
||||
|
||||
private:
|
||||
// DO NOT USE THIS FUNCTION directly in C++. This function is supposed to be
|
||||
// called from JS. Use PresShell::ScrollContentIntoView instead.
|
||||
|
@ -197,6 +197,13 @@ class FragmentOrElement : public nsIContent {
|
||||
* Web components custom element data.
|
||||
*/
|
||||
UniquePtr<CustomElementData> mCustomElementData;
|
||||
|
||||
/**
|
||||
* Last remembered size (in CSS pixels) for the element.
|
||||
* @see {@link https://drafts.csswg.org/css-sizing-4/#last-remembered}
|
||||
*/
|
||||
Maybe<float> mLastRememberedBSize;
|
||||
Maybe<float> mLastRememberedISize;
|
||||
};
|
||||
|
||||
class nsDOMSlots : public nsIContent::nsContentSlots {
|
||||
|
Loading…
x
Reference in New Issue
Block a user