зеркало из https://github.com/mozilla/gecko-dev.git
Bug 660238 (2/3) - Add pseudo-class to access optimal, sub-optimal and sub-sub-optimal meter elements. f=mounir r=smaug
This commit is contained in:
Родитель
fabf8faf61
Коммит
4f4090f3e7
|
@ -236,6 +236,12 @@ private:
|
|||
#define NS_EVENT_STATE_FULL_SCREEN_ANCESTOR NS_DEFINE_EVENT_STATE_MACRO(35)
|
||||
// Handler for click to play plugin
|
||||
#define NS_EVENT_STATE_TYPE_CLICK_TO_PLAY NS_DEFINE_EVENT_STATE_MACRO(36)
|
||||
// Content is in the optimum region.
|
||||
#define NS_EVENT_STATE_OPTIMUM NS_DEFINE_EVENT_STATE_MACRO(37)
|
||||
// Content is in the suboptimal region.
|
||||
#define NS_EVENT_STATE_SUB_OPTIMUM NS_DEFINE_EVENT_STATE_MACRO(38)
|
||||
// Content is in the sub-suboptimal region.
|
||||
#define NS_EVENT_STATE_SUB_SUB_OPTIMUM NS_DEFINE_EVENT_STATE_MACRO(39)
|
||||
|
||||
/**
|
||||
* NOTE: do not go over 63 without updating nsEventStates::InternalType!
|
||||
|
|
|
@ -72,6 +72,8 @@ public:
|
|||
NS_IMETHOD Reset();
|
||||
NS_IMETHOD SubmitNamesValues(nsFormSubmission* aFormSubmission);
|
||||
|
||||
virtual nsEventStates IntrinsicState() const;
|
||||
|
||||
nsresult Clone(nsINodeInfo* aNodeInfo, nsINode** aResult) const;
|
||||
|
||||
bool ParseAttribute(PRInt32 aNamespaceID, nsIAtom* aAttribute,
|
||||
|
@ -87,6 +89,16 @@ private:
|
|||
static const double kDefaultMin;
|
||||
static const double kDefaultMax;
|
||||
|
||||
/**
|
||||
* Returns the optimum state of the element.
|
||||
* NS_EVENT_STATE_OPTIMUM if the actual value is in the optimum region.
|
||||
* NS_EVENT_STATE_SUB_OPTIMUM if the actual value is in the sub-optimal region.
|
||||
* NS_EVENT_STATE_SUB_SUB_OPTIMUM if the actual value is in the sub-sub-optimal region.
|
||||
*
|
||||
* @return the optimum state of the element.
|
||||
*/
|
||||
nsEventStates GetOptimumState() const;
|
||||
|
||||
/* @return the minimum value */
|
||||
double GetMin() const;
|
||||
|
||||
|
@ -151,6 +163,16 @@ nsHTMLMeterElement::SubmitNamesValues(nsFormSubmission* aFormSubmission)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
nsEventStates
|
||||
nsHTMLMeterElement::IntrinsicState() const
|
||||
{
|
||||
nsEventStates state = nsGenericHTMLFormElement::IntrinsicState();
|
||||
|
||||
state |= GetOptimumState();
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
bool
|
||||
nsHTMLMeterElement::ParseAttribute(PRInt32 aNamespaceID, nsIAtom* aAttribute,
|
||||
const nsAString& aValue, nsAttrValue& aResult)
|
||||
|
@ -413,3 +435,46 @@ nsHTMLMeterElement::SetOptimum(double aValue)
|
|||
return SetDoubleAttr(nsGkAtoms::optimum, aValue);
|
||||
}
|
||||
|
||||
nsEventStates
|
||||
nsHTMLMeterElement::GetOptimumState() const
|
||||
{
|
||||
/*
|
||||
* If the optimum value is in [minimum, low[,
|
||||
* return if the value is in optimal, suboptimal or sub-suboptimal region
|
||||
*
|
||||
* If the optimum value is in [low, high],
|
||||
* return if the value is in optimal or suboptimal region
|
||||
*
|
||||
* If the optimum value is in ]high, maximum],
|
||||
* return if the value is in optimal, suboptimal or sub-suboptimal region
|
||||
*/
|
||||
double value = GetValue();
|
||||
double low = GetLow();
|
||||
double high = GetHigh();
|
||||
double optimum = GetOptimum();
|
||||
|
||||
if (optimum < low) {
|
||||
if (value < low) {
|
||||
return NS_EVENT_STATE_OPTIMUM;
|
||||
}
|
||||
if (value <= high) {
|
||||
return NS_EVENT_STATE_SUB_OPTIMUM;
|
||||
}
|
||||
return NS_EVENT_STATE_SUB_SUB_OPTIMUM;
|
||||
}
|
||||
if (optimum > high) {
|
||||
if (value > high) {
|
||||
return NS_EVENT_STATE_OPTIMUM;
|
||||
}
|
||||
if (value >= low) {
|
||||
return NS_EVENT_STATE_SUB_OPTIMUM;
|
||||
}
|
||||
return NS_EVENT_STATE_SUB_SUB_OPTIMUM;
|
||||
}
|
||||
// optimum in [low, high]
|
||||
if (value >= low && value <= high) {
|
||||
return NS_EVENT_STATE_OPTIMUM;
|
||||
}
|
||||
return NS_EVENT_STATE_SUB_OPTIMUM;
|
||||
}
|
||||
|
||||
|
|
|
@ -161,6 +161,12 @@ CSS_STATE_PSEUDO_CLASS(mozUIInvalid, ":-moz-ui-invalid",
|
|||
NS_EVENT_STATE_MOZ_UI_INVALID)
|
||||
CSS_STATE_PSEUDO_CLASS(mozUIValid, ":-moz-ui-valid",
|
||||
NS_EVENT_STATE_MOZ_UI_VALID)
|
||||
CSS_STATE_PSEUDO_CLASS(mozMeterOptimum, ":-moz-meter-optimum",
|
||||
NS_EVENT_STATE_OPTIMUM)
|
||||
CSS_STATE_PSEUDO_CLASS(mozMeterSubOptimum, ":-moz-meter-sub-optimum",
|
||||
NS_EVENT_STATE_SUB_OPTIMUM)
|
||||
CSS_STATE_PSEUDO_CLASS(mozMeterSubSubOptimum, ":-moz-meter-sub-sub-optimum",
|
||||
NS_EVENT_STATE_SUB_SUB_OPTIMUM)
|
||||
|
||||
#ifdef DEFINED_CSS_STATE_PSEUDO_CLASS
|
||||
#undef DEFINED_CSS_STATE_PSEUDO_CLASS
|
||||
|
|
Загрузка…
Ссылка в новой задаче