Bug 302188 - Support :read-only and :read-write pseudoclasses. patch by allan, r/sr=bz

This commit is contained in:
doronr%us.ibm.com 2005-10-18 21:16:27 +00:00
Родитель 36cc87edeb
Коммит 573c3b6d32
3 изменённых файлов: 33 добавлений и 20 удалений

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

@ -152,33 +152,36 @@ public:
NS_IMETHOD ShiftFocus(PRBool aDirection, nsIContent* aStart)=0; NS_IMETHOD ShiftFocus(PRBool aDirection, nsIContent* aStart)=0;
}; };
#define NS_EVENT_STATE_ACTIVE 0x00000001 // mouse is down on content #define NS_EVENT_STATE_ACTIVE 0x00000001 // mouse is down on content
#define NS_EVENT_STATE_FOCUS 0x00000002 // content has focus #define NS_EVENT_STATE_FOCUS 0x00000002 // content has focus
#define NS_EVENT_STATE_HOVER 0x00000004 // mouse is hovering over content #define NS_EVENT_STATE_HOVER 0x00000004 // mouse is hovering over content
#define NS_EVENT_STATE_DRAGOVER 0x00000008 // drag is hovering over content #define NS_EVENT_STATE_DRAGOVER 0x00000008 // drag is hovering over content
#define NS_EVENT_STATE_URLTARGET 0x00000010 // content is URL's target (ref) #define NS_EVENT_STATE_URLTARGET 0x00000010 // content is URL's target (ref)
// The following states are used only for ContentStatesChanged // The following states are used only for ContentStatesChanged
#define NS_EVENT_STATE_CHECKED 0x00000020 // CSS3-Selectors #define NS_EVENT_STATE_CHECKED 0x00000020 // CSS3-Selectors
#define NS_EVENT_STATE_ENABLED 0x00000040 // CSS3-Selectors #define NS_EVENT_STATE_ENABLED 0x00000040 // CSS3-Selectors
#define NS_EVENT_STATE_DISABLED 0x00000080 // CSS3-Selectors #define NS_EVENT_STATE_DISABLED 0x00000080 // CSS3-Selectors
#define NS_EVENT_STATE_REQUIRED 0x00000100 // CSS3-UI #define NS_EVENT_STATE_REQUIRED 0x00000100 // CSS3-UI
#define NS_EVENT_STATE_OPTIONAL 0x00000200 // CSS3-UI #define NS_EVENT_STATE_OPTIONAL 0x00000200 // CSS3-UI
#define NS_EVENT_STATE_VISITED 0x00000400 // CSS2 #define NS_EVENT_STATE_VISITED 0x00000400 // CSS2
#define NS_EVENT_STATE_VALID 0x00000800 // CSS3-UI #define NS_EVENT_STATE_VALID 0x00000800 // CSS3-UI
#define NS_EVENT_STATE_INVALID 0x00001000 // CSS3-UI #define NS_EVENT_STATE_INVALID 0x00001000 // CSS3-UI
#define NS_EVENT_STATE_INRANGE 0x00002000 // CSS3-UI #define NS_EVENT_STATE_INRANGE 0x00002000 // CSS3-UI
#define NS_EVENT_STATE_OUTOFRANGE 0x00004000 // CSS3-UI #define NS_EVENT_STATE_OUTOFRANGE 0x00004000 // CSS3-UI
// these two are temporary (see bug 302188)
#define NS_EVENT_STATE_MOZ_READONLY 0x00008000 // CSS3-UI
#define NS_EVENT_STATE_MOZ_READWRITE 0x00010000 // CSS3-UI
// Content could not be rendered (image/object/etc). // Content could not be rendered (image/object/etc).
#define NS_EVENT_STATE_BROKEN 0x00008000 #define NS_EVENT_STATE_BROKEN 0x00020000
// Content disabled by the user (images turned off, say) // Content disabled by the user (images turned off, say)
#define NS_EVENT_STATE_USERDISABLED 0x00010000 #define NS_EVENT_STATE_USERDISABLED 0x00040000
// Content suppressed by the user (ad blocking, etc) // Content suppressed by the user (ad blocking, etc)
#define NS_EVENT_STATE_SUPPRESSED 0x00020000 #define NS_EVENT_STATE_SUPPRESSED 0x00080000
// Content is still loading such that there is nothing to show the // Content is still loading such that there is nothing to show the
// user (eg an image which hasn't started coming in yet) // user (eg an image which hasn't started coming in yet)
#define NS_EVENT_STATE_LOADING 0x00040000 #define NS_EVENT_STATE_LOADING 0x00100000
#endif // nsIEventStateManager_h__ #endif // nsIEventStateManager_h__

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

@ -91,3 +91,5 @@ CSS_PSEUDO_CLASS(valid, ":valid")
CSS_PSEUDO_CLASS(invalid, ":invalid") CSS_PSEUDO_CLASS(invalid, ":invalid")
CSS_PSEUDO_CLASS(inRange, ":in-range") CSS_PSEUDO_CLASS(inRange, ":in-range")
CSS_PSEUDO_CLASS(outOfRange, ":out-of-range") CSS_PSEUDO_CLASS(outOfRange, ":out-of-range")
CSS_PSEUDO_CLASS(mozReadOnly, ":-moz-read-only")
CSS_PSEUDO_CLASS(mozReadWrite, ":-moz-read-write")

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

@ -3130,6 +3130,12 @@ static PRBool SelectorMatches(RuleProcessorData &data,
else if (nsCSSPseudoClasses::outOfRange == pseudoClass->mAtom) { else if (nsCSSPseudoClasses::outOfRange == pseudoClass->mAtom) {
result = STATE_CHECK(NS_EVENT_STATE_OUTOFRANGE); result = STATE_CHECK(NS_EVENT_STATE_OUTOFRANGE);
} }
else if (nsCSSPseudoClasses::mozReadOnly == pseudoClass->mAtom) {
result = STATE_CHECK(NS_EVENT_STATE_MOZ_READONLY);
}
else if (nsCSSPseudoClasses::mozReadWrite == pseudoClass->mAtom) {
result = STATE_CHECK(NS_EVENT_STATE_MOZ_READWRITE);
}
else { else {
NS_ERROR("CSS parser parsed a pseudo-class that we do not handle"); NS_ERROR("CSS parser parsed a pseudo-class that we do not handle");
result = PR_FALSE; // unknown pseudo class result = PR_FALSE; // unknown pseudo class
@ -3657,7 +3663,9 @@ PRBool IsStateSelector(nsCSSSelector& aSelector)
(pseudoClass->mAtom == nsCSSPseudoClasses::valid) || (pseudoClass->mAtom == nsCSSPseudoClasses::valid) ||
(pseudoClass->mAtom == nsCSSPseudoClasses::invalid) || (pseudoClass->mAtom == nsCSSPseudoClasses::invalid) ||
(pseudoClass->mAtom == nsCSSPseudoClasses::inRange) || (pseudoClass->mAtom == nsCSSPseudoClasses::inRange) ||
(pseudoClass->mAtom == nsCSSPseudoClasses::outOfRange)) { (pseudoClass->mAtom == nsCSSPseudoClasses::outOfRange) ||
(pseudoClass->mAtom == nsCSSPseudoClasses::mozReadOnly) ||
(pseudoClass->mAtom == nsCSSPseudoClasses::mozReadWrite)) {
return PR_TRUE; return PR_TRUE;
} }
} }