From kde-commits Fri Oct 03 00:26:28 2008 From: Maks Orlovich Date: Fri, 03 Oct 2008 00:26:28 +0000 To: kde-commits Subject: branches/KDE/4.1/kdelibs/khtml Message-Id: <1222993588.590289.24883.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=122299360203537 SVN commit 867176 by orlovich: Support focus/blur on all elements (likely mozilla extension), used by Youtube quicklist BUG: 169988 M +13 -4 ecma/kjs_dom.cpp M +1 -1 ecma/kjs_dom.h M +7 -56 ecma/kjs_html.cpp M +8 -8 ecma/kjs_html.h M +0 -44 html/html_formimpl.cpp M +0 -9 html/html_formimpl.h M +0 -13 html/html_inlineimpl.cpp M +0 -3 html/html_inlineimpl.h M +11 -0 xml/dom_elementimpl.cpp M +4 -0 xml/dom_elementimpl.h --- branches/KDE/4.1/kdelibs/khtml/ecma/kjs_dom.cpp #867175:867176 @@ -1183,6 +1183,9 @@ getElementsByTagNameNS DOMElement::GetElementsByTagNameNS DontDelete|Function 2 hasAttributeNS DOMElement::HasAttributeNS DontDelete|Function 2 getElementsByClassName DOMElement::GetElementsByClassName DontDelete|Function 1 +# Extensions + blur DOMElement::Blur DontDelete|Function 0 + focus DOMElement::Focus DontDelete|Function 0 @end */ KJS_IMPLEMENT_PROTOFUNC(DOMElementProtoFunc) @@ -1305,7 +1308,7 @@ case DOMElement::RemoveAttributeNS: // DOM2 element.removeAttributeNS(args[0]->toString(exec).domString(),args[1]->toString(exec).domString(), exception); return jsUndefined(); - case DOMElement::GetAttributeNodeNS: // DOM2 + case DOMElement::GetAttributeNodeNS: // DOM2 return getDOMNode(exec,element.getAttributeNodeNS(args[0]->toString(exec).domString(),args[1]->toString(exec).domString(),exception)); case DOMElement::SetAttributeNodeNS: { DOM::Attr toRet = element.setAttributeNodeNS(KJS::toAttr(args[0]), exception); @@ -1315,10 +1318,16 @@ return getDOMNodeList(exec,element.getElementsByTagNameNS(args[0]->toString(exec).domString(),args[1]->toString(exec).domString())); case DOMElement::HasAttributeNS: // DOM2 return jsBoolean(element.hasAttributeNS(args[0]->toString(exec).domString(),args[1]->toString(exec).domString())); - case DOMElement::GetElementsByClassName: // HTML 5 + case DOMElement::GetElementsByClassName: // HTML 5 return getDOMNodeList(exec, element.getElementsByClassName(args[0]->toString(exec).domString())); - default: - return jsUndefined(); + case DOMElement::Focus: + element.focus(); + return jsUndefined(); + case DOMElement::Blur: + element.blur(); + return jsUndefined(); + default: + return jsUndefined(); } } --- branches/KDE/4.1/kdelibs/khtml/ecma/kjs_dom.h #867175:867176 @@ -170,7 +170,7 @@ SetAttributeNode, RemoveAttributeNode, GetElementsByTagName, GetAttributeNS, SetAttributeNS, RemoveAttributeNS, GetAttributeNodeNS, SetAttributeNodeNS, GetElementsByTagNameNS, HasAttribute, HasAttributeNS, - GetElementsByClassName }; + GetElementsByClassName, Blur, Focus }; private: #if 0 static JSValue *attributeGetter(ExecState *exec, JSObject*, const Identifier&, const PropertySlot& slot); --- branches/KDE/4.1/kdelibs/khtml/ecma/kjs_html.cpp #867175:867176 @@ -764,8 +764,8 @@ onload KJS::HTMLElement::BodyOnLoad DontDelete @end @begin HTMLBodyElementProtoTable 2 -# Mozilla'ish extension. Ideally we would want to support this on all elements. -# Not hard, but not an immediate need. +# Even though we do blur/focus everywhere, we still handle body.focus() +# specially for now focus KJS::HTMLElement::BodyFocus DontDelete|Function 0 @end @begin HTMLFormElementTable 11 @@ -801,8 +801,6 @@ @begin HTMLSelectElementProtoTable 4 add KJS::HTMLElement::SelectAdd DontDelete|Function 2 remove KJS::HTMLElement::SelectRemove DontDelete|Function 1 - blur KJS::HTMLElement::SelectBlur DontDelete|Function 0 - focus KJS::HTMLElement::SelectFocus DontDelete|Function 0 @end @begin HTMLOptGroupElementTable 2 disabled KJS::HTMLElement::OptGroupDisabled DontDelete @@ -843,8 +841,6 @@ selectionEnd KJS::HTMLElement::InputSelectionEnd DontDelete @end @begin HTMLInputElementProtoTable 5 - blur KJS::HTMLElement::InputBlur DontDelete|Function 0 - focus KJS::HTMLElement::InputFocus DontDelete|Function 0 select KJS::HTMLElement::InputSelect DontDelete|Function 0 click KJS::HTMLElement::InputClick DontDelete|Function 0 setSelectionRange KJS::HTMLElement::InputSetSelectionRange DontDelete|Function 2 @@ -866,9 +862,7 @@ textLength KJS::HTMLElement::TextAreaTextLength DontDelete|ReadOnly @end @begin HTMLTextAreaElementProtoTable 4 - blur KJS::HTMLElement::TextAreaBlur DontDelete|Function 0 - focus KJS::HTMLElement::TextAreaFocus DontDelete|Function 0 - select KJS::HTMLElement::TextAreaSelect DontDelete|Function 0 + select KJS::HTMLElement::TextAreaSelect DontDelete|Function 0 setSelectionRange KJS::HTMLElement::TextAreaSetSelectionRange DontDelete|Function 2 @end @begin HTMLButtonElementTable 9 @@ -881,8 +875,6 @@ value KJS::HTMLElement::ButtonValue DontDelete @end @begin HTMLButtonElementProtoTable 3 - blur KJS::HTMLElement::ButtonBlur DontDelete|Function 0 - focus KJS::HTMLElement::ButtonFocus DontDelete|Function 0 click KJS::HTMLElement::ButtonClick DontDelete|Function 0 @end @begin HTMLLabelElementTable 3 @@ -984,8 +976,6 @@ type KJS::HTMLElement::AnchorType DontDelete @end @begin HTMLAnchorElementProtoTable 3 - blur KJS::HTMLElement::AnchorBlur DontDelete|Function 0 - focus KJS::HTMLElement::AnchorFocus DontDelete|Function 0 click KJS::HTMLElement::AnchorClick DontDelete|Function 0 @end @begin HTMLImageElementTable 15 @@ -2164,27 +2154,11 @@ select.remove(int(args[0]->toNumber(exec))); return jsUndefined(); } - else if (id == KJS::HTMLElement::SelectBlur) { - select.blur(); - return jsUndefined(); - } - else if (id == KJS::HTMLElement::SelectFocus) { - select.focus(); - return jsUndefined(); - } } break; case ID_INPUT: { DOM::HTMLInputElementImpl& input = static_cast(element); - if (id == KJS::HTMLElement::InputBlur) { - input.blur(); - return jsUndefined(); - } - else if (id == KJS::HTMLElement::InputFocus) { - input.focus(); - return jsUndefined(); - } - else if (id == KJS::HTMLElement::InputSelect) { + if (id == KJS::HTMLElement::InputSelect) { input.select(); return jsUndefined(); } @@ -2200,14 +2174,7 @@ break; case ID_BUTTON: { DOM::HTMLButtonElementImpl& button = static_cast(element); - if (id == KJS::HTMLElement::ButtonBlur) { - button.blur(); - return jsUndefined(); - } - else if (id == KJS::HTMLElement::ButtonFocus) { - button.focus(); - return jsUndefined(); - } else if (id == KJS::HTMLElement::ButtonClick) { + if (id == KJS::HTMLElement::ButtonClick) { button.click(); return jsUndefined(); } @@ -2215,15 +2182,7 @@ break; case ID_TEXTAREA: { DOM::HTMLTextAreaElementImpl& textarea = static_cast(element); - if (id == KJS::HTMLElement::TextAreaBlur) { - textarea.blur(); - return jsUndefined(); - } - else if (id == KJS::HTMLElement::TextAreaFocus) { - textarea.focus(); - return jsUndefined(); - } - else if (id == KJS::HTMLElement::TextAreaSelect) { + if (id == KJS::HTMLElement::TextAreaSelect) { textarea.select(); return jsUndefined(); } @@ -2236,15 +2195,7 @@ break; case ID_A: { DOM::HTMLAnchorElementImpl& anchor = static_cast(element); - if (id == KJS::HTMLElement::AnchorBlur) { - anchor.blur(); - return jsUndefined(); - } - else if (id == KJS::HTMLElement::AnchorFocus) { - anchor.focus(); - return jsUndefined(); - } - else if (id == KJS::HTMLElement::AnchorClick) { + if (id == KJS::HTMLElement::AnchorClick) { anchor.click(); return jsUndefined(); } --- branches/KDE/4.1/kdelibs/khtml/ecma/kjs_html.h #867175:867176 @@ -92,21 +92,21 @@ FormAction, FormEncType, FormElements, FormLength, FormAcceptCharset, FormReset, FormTarget, FormName, FormMethod, FormSubmit, SelectAdd, SelectTabIndex, SelectValue, SelectSelectedIndex, SelectLength, - SelectRemove, SelectForm, SelectBlur, SelectType, SelectOptions, - SelectDisabled, SelectMultiple, SelectName, SelectSize, SelectFocus, + SelectRemove, SelectForm, SelectType, SelectOptions, + SelectDisabled, SelectMultiple, SelectName, SelectSize, OptGroupDisabled, OptGroupLabel, OptionIndex, OptionSelected, OptionForm, OptionText, OptionDefaultSelected, OptionDisabled, - OptionLabel, OptionValue, InputBlur, InputReadOnly, InputAccept, + OptionLabel, OptionValue, InputReadOnly, InputAccept, InputSize, InputDefaultValue, InputTabIndex, InputValue, InputType, - InputFocus, InputMaxLength, InputDefaultChecked, InputDisabled, + InputMaxLength, InputDefaultChecked, InputDisabled, InputChecked, InputIndeterminate, InputForm, InputAccessKey, InputAlign, InputAlt, InputName, InputSrc, InputUseMap, InputSelect, InputClick, InputSelectionStart, InputSelectionEnd, InputSetSelectionRange, TextAreaAccessKey, TextAreaName, TextAreaDefaultValue, TextAreaSelect, TextAreaCols, TextAreaDisabled, TextAreaForm, TextAreaType, TextAreaTabIndex, TextAreaReadOnly, TextAreaRows, TextAreaValue, - TextAreaBlur, TextAreaFocus, TextAreaSelectionStart, TextAreaSelectionEnd, TextAreaSetSelectionRange, - TextAreaTextLength, ButtonBlur, ButtonFocus, ButtonClick, ButtonForm, ButtonTabIndex, ButtonName, + TextAreaSelectionStart, TextAreaSelectionEnd, TextAreaSetSelectionRange, + TextAreaTextLength, ButtonClick, ButtonForm, ButtonTabIndex, ButtonName, ButtonDisabled, ButtonAccessKey, ButtonType, ButtonValue, LabelHtmlFor, LabelForm, LabelAccessKey, FieldSetForm, LegendForm, LegendAccessKey, LegendAlign, UListType, UListCompact, OListStart, OListCompact, @@ -116,9 +116,9 @@ BaseFontFace, FontColor, FontSize, FontFace, HRWidth, HRNoShade, HRAlign, HRSize, ModCite, ModDateTime, AnchorShape, AnchorRel, AnchorAccessKey, AnchorCoords, AnchorHref, AnchorProtocol, AnchorHost, - AnchorCharset, AnchorHrefLang, AnchorHostname, AnchorType, AnchorFocus, + AnchorCharset, AnchorHrefLang, AnchorHostname, AnchorType, AnchorPort, AnchorPathName, AnchorHash, AnchorSearch, AnchorName, - AnchorRev, AnchorTabIndex, AnchorTarget, AnchorText, AnchorBlur, AnchorClick, + AnchorRev, AnchorTabIndex, AnchorTarget, AnchorText, AnchorClick, ImageName, ImageAlign, ImageHspace, ImageVspace, ImageUseMap, ImageAlt, ImageLowSrc, ImageWidth, ImageIsMap, ImageBorder, ImageHeight, ImageLongDesc, ImageSrc, ImageX, ImageY, ImageComplete, ObjectHspace, ObjectHeight, ObjectAlign, --- branches/KDE/4.1/kdelibs/khtml/html/html_formimpl.cpp #867175:867176 @@ -1130,17 +1130,6 @@ return ""; } -void HTMLButtonElementImpl::blur() -{ - if(document()->focusNode() == this) - document()->setFocusNode(0); -} - -void HTMLButtonElementImpl::focus() -{ - document()->setFocusNode(this); -} - void HTMLButtonElementImpl::parseAttribute(AttributeImpl *attr) { switch(attr->id()) @@ -1803,17 +1792,6 @@ setChanged(); } -void HTMLInputElementImpl::blur() -{ - if(document()->focusNode() == this) - document()->setFocusNode(0); -} - -void HTMLInputElementImpl::focus() -{ - document()->setFocusNode(this); -} - void HTMLInputElementImpl::defaultEventHandler(EventImpl *evt) { if ( !m_disabled ) @@ -2167,17 +2145,6 @@ setRecalcListItems(); } -void HTMLSelectElementImpl::blur() -{ - if(document()->focusNode() == this) - document()->setFocusNode(0); -} - -void HTMLSelectElementImpl::focus() -{ - document()->setFocusNode(this); -} - DOMString HTMLInputElementImpl::valueWithDefault() const { DOMString v = value(); @@ -2950,17 +2917,6 @@ setValue(_defaultValue); } -void HTMLTextAreaElementImpl::blur() -{ - if(document()->focusNode() == this) - document()->setFocusNode(0); -} - -void HTMLTextAreaElementImpl::focus() -{ - document()->setFocusNode(this); -} - bool HTMLTextAreaElementImpl::isEditable() { return true; --- branches/KDE/4.1/kdelibs/khtml/html/html_formimpl.h #867175:867176 @@ -209,8 +209,6 @@ void activate(); virtual void attach(); void click(); - void blur(); - void focus(); protected: DOMString m_value; @@ -283,9 +281,6 @@ DOMString valueWithDefault() const; - void blur(); - void focus(); - virtual bool maintainsState() { return true; } virtual QString state(); virtual void restoreState(const QString &state); @@ -407,8 +402,6 @@ void add ( HTMLElementImpl* element, HTMLElementImpl* before, int& exceptioncode ); void remove ( long index ); - void blur(); - void focus(); DOMString value() const; void setValue(DOMStringImpl* value); @@ -566,8 +559,6 @@ void setValue(DOMString _value); DOMString defaultValue(); void setDefaultValue(DOMString _defaultValue); - void blur(); - void focus(); virtual bool isEditable(); void setUnsubmittedFormChange(bool unsubmitted) { m_unsubmittedFormChange = unsubmitted; } --- branches/KDE/4.1/kdelibs/khtml/html/html_inlineimpl.cpp #867175:867176 @@ -162,19 +162,6 @@ HTMLElementImpl::defaultEventHandler(evt); } - -void HTMLAnchorElementImpl::blur( ) -{ - if(document()->focusNode()==this) - document()->setFocusNode(0); -} - -void HTMLAnchorElementImpl::focus( ) -{ - document()->setFocusNode(this); -} - - void HTMLAnchorElementImpl::click() { QMouseEvent me(QEvent::MouseButtonRelease, QPoint(0,0),Qt::LeftButton, Qt::LeftButton, 0); --- branches/KDE/4.1/kdelibs/khtml/html/html_inlineimpl.h #867175:867176 @@ -40,9 +40,6 @@ virtual void parseAttribute(AttributeImpl *attr); virtual void defaultEventHandler(EventImpl *evt); void click(); - - void focus(); - void blur(); protected: bool m_hasTarget : 1; }; --- branches/KDE/4.1/kdelibs/khtml/xml/dom_elementimpl.cpp #867175:867176 @@ -1269,6 +1269,17 @@ return rd->m_computedStyle; } +void ElementImpl::blur() +{ + if(document()->focusNode() == this) + document()->setFocusNode(0); +} + +void ElementImpl::focus() +{ + document()->setFocusNode(this); +} + // ------------------------------------------------------------------------- XMLElementImpl::XMLElementImpl(DocumentImpl *doc, NodeImpl::Id id) --- branches/KDE/4.1/kdelibs/khtml/xml/dom_elementimpl.h #867175:867176 @@ -176,6 +176,10 @@ AttrImpl* getAttributeNodeNS( const DOMString &namespaceURI, const DOMString &localName, int& exceptioncode ); Attr setAttributeNodeNS( AttrImpl* newAttr, int& exceptioncode ); + //Commonly supported extensions + void blur(); + void focus(); + //Lower-level implementation primitives DOMString getAttribute( NodeImpl::Id id, bool nsAware = false, const DOMString& qName = DOMString() ) const; DOMStringImpl* getAttributeImpl( NodeImpl::Id id, bool nsAware = false, DOMStringImpl* qName = 0 ) const;