Bug 1332193 - Fix several properties to return NeutralChange hint. r=heycam

MozReview-Commit-ID: GDNRy6vqmL8

--HG--
extra : rebase_source : 8705d493d33f6593846bea93ccb0b39c269688dd
This commit is contained in:
Xidorn Quan 2017-01-19 19:13:02 +11:00
Родитель 97f33ec2f8
Коммит 1305bbb18d
2 изменённых файлов: 19 добавлений и 3 удалений

Просмотреть файл

@ -489,8 +489,7 @@ nsStyleBorder::CalcDifference(const nsStyleBorder& aNewData) const
mBorderImageRepeatV != aNewData.mBorderImageRepeatV ||
mBorderImageSlice != aNewData.mBorderImageSlice ||
mBorderImageFill != aNewData.mBorderImageFill ||
mBorderImageWidth != aNewData.mBorderImageWidth ||
mBorderImageOutset != aNewData.mBorderImageOutset) {
mBorderImageWidth != aNewData.mBorderImageWidth) {
return nsChangeHint_RepaintFrame;
}
}
@ -513,6 +512,18 @@ nsStyleBorder::CalcDifference(const nsStyleBorder& aNewData) const
return nsChangeHint_NeutralChange;
}
// mBorderImage* fields are checked only when border image was
// actualy loaded. But we need to return neutral change even when
// they are not actually used.
if (mBorderImageSource != aNewData.mBorderImageSource ||
mBorderImageRepeatH != aNewData.mBorderImageRepeatH ||
mBorderImageRepeatV != aNewData.mBorderImageRepeatV ||
mBorderImageSlice != aNewData.mBorderImageSlice ||
mBorderImageFill != aNewData.mBorderImageFill ||
mBorderImageWidth != aNewData.mBorderImageWidth) {
return nsChangeHint_NeutralChange;
}
return nsChangeHint(0);
}
@ -4135,6 +4146,10 @@ nsStyleUIReset::CalcDifference(const nsStyleUIReset& aNewData) const
return nsChangeHint_SchedulePaint;
}
if (mIMEMode != aNewData.mIMEMode) {
return nsChangeHint_NeutralChange;
}
return nsChangeHint(0);
}

Просмотреть файл

@ -3405,7 +3405,8 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleUIReset
nsChangeHint CalcDifference(const nsStyleUIReset& aNewData) const;
static nsChangeHint MaxDifference() {
return nsChangeHint_ReconstructFrame |
NS_STYLE_HINT_REFLOW;
NS_STYLE_HINT_REFLOW |
nsChangeHint_NeutralChange;
}
static nsChangeHint DifferenceAlwaysHandledForDescendants() {
// CalcDifference never returns the reflow hints that are sometimes