+2004-06-15 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Dave.
+
+ <rdar://problem/3695907>: (can't enable selection inside parent where it is disabled via CSS)
+
+ * khtml/css/cssparser.cpp:
+ (CSSParser::parseValue):
+ * khtml/css/cssstyleselector.cpp:
+ (khtml::CSSStyleSelector::applyProperty):
+ * khtml/rendering/render_object.cpp:
+ (RenderObject::shouldSelect):
+ * khtml/rendering/render_style.h:
+ (khtml::):
+ (khtml::RenderStyle::userSelect):
+ (khtml::RenderStyle::setUserSelect):
+ (khtml::RenderStyle::initialUserSelect):
+
2004-06-15 David Hyatt <hyatt@apple.com>
Initial impl of the EllipsisBox. This code just gets the box created and gets it placed vertically. The next
case CSS_VAL_NONE:
style->setUserDrag(DRAG_NONE);
break;
- default:
+ case CSS_VAL_ELEMENT:
style->setUserDrag(DRAG_ELEMENT);
+ default:
+ return;
}
break;
}
HANDLE_INHERIT_AND_INITIAL(userSelect, UserSelect)
if (!primitiveValue || !primitiveValue->getIdent())
return;
- style->setUserSelect(primitiveValue->getIdent() == CSS_VAL_AUTO);
- break;
+ switch (primitiveValue->getIdent()) {
+ case CSS_VAL_AUTO:
+ style->setUserSelect(SELECT_AUTO);
+ break;
+ case CSS_VAL_NONE:
+ style->setUserSelect(SELECT_NONE);
+ break;
+ case CSS_VAL_TEXT:
+ style->setUserSelect(SELECT_TEXT);
+ break;
+ default:
+ return;
+ }
+ break;
}
case CSS_PROP_TEXT_OVERFLOW: {
// This property is supported by WinIE, and so we leave off the "-khtml-" in order to
DRAG_AUTO, DRAG_NONE, DRAG_ELEMENT
};
+// CSS3 User Select Values
+
+enum EUserSelect {
+ SELECT_AUTO, SELECT_NONE, SELECT_TEXT
+};
+
// This struct is for rarely used non-inherited CSS3 properties. By grouping them together,
// we save space, and only allocate this object when someone actually uses
// a non-inherited CSS3 property.
DataRef<StyleFlexibleBoxData> flexibleBox; // Flexible box properties
DataRef<StyleMarqueeData> marquee; // Marquee properties
EUserDrag userDrag : 2; // Whether or not a drag can be initiated by this element.
- bool userSelect : 1; // Whether or not the element is selectable.
+ EUserSelect userSelect : 2; // Whether or not the element is selectable.
bool textOverflow : 1; // Whether or not lines that spill out should be truncated with "..."
#ifndef KHTML_NO_XBL
EMarqueeDirection marqueeDirection() { return css3NonInheritedData->marquee->direction; }
EUserModify userModify() const { return css3InheritedData->userModify; }
EUserDrag userDrag() const { return css3NonInheritedData->userDrag; }
- bool userSelect() const { return css3NonInheritedData->userSelect; }
+ EUserSelect userSelect() const { return css3NonInheritedData->userSelect; }
bool textOverflow() const { return css3NonInheritedData->textOverflow; }
// End CSS3 Getters
void setMarqueeLoopCount(int i) { SET_VAR(css3NonInheritedData.access()->marquee, loops, i); }
void setUserModify(EUserModify u) { SET_VAR(css3InheritedData, userModify, u); }
void setUserDrag(EUserDrag d) { SET_VAR(css3NonInheritedData, userDrag, d); }
- void setUserSelect(bool b) { SET_VAR(css3NonInheritedData, userSelect, b); }
+ void setUserSelect(EUserSelect s) { SET_VAR(css3NonInheritedData, userSelect, s); }
void setTextOverflow(bool b) { SET_VAR(css3NonInheritedData, textOverflow, b); }
// End CSS3 Setters
static EMarqueeDirection initialMarqueeDirection() { return MAUTO; }
static EUserModify initialUserModify() { return READ_ONLY; }
static EUserDrag initialUserDrag() { return DRAG_AUTO; }
- static bool initialUserSelect() { return true; }
+ static EUserSelect initialUserSelect() { return SELECT_AUTO; }
static bool initialTextOverflow() { return false; }
#if APPLE_CHANGES