void HTMLList::FindNesting(void) { HTMLElement *pParent; miNesting = 0; pParent = mpParent; while (pParent) { if (pParent->Type() == HTML_LIST_ELEMENT) { miNesting++; } else if (pParent->Type() == HTML_TABLE_ELEMENT) { break; } pParent = pParent->mpParent; } }
short HTMLList::Items(void) { HTMLElement *pChild = mpFirstChild; int items = 0; while (pChild) { if (pChild->Type() == HTML_LIST_ITEM_ELEMENT) { items++; } pChild = pChild->mpNext; } return (items); }
HTMLEventStatus HTMLInputPassword::DefaultEvent(HTMLEvent *pEvent) // tbd { WEBC_UINT8 onlyBox = 1; WEBC_UINT8 hasSubmit = 0; HTMLElement *pElem = 0; HTMLInput *pSubmit = 0; vector_iterator it; WEBC_DEBUG_ReceiveEvent(this, pEvent); switch (pEvent->type) { case HTML_EVENT_CHANGE: break; case HTML_EVENT_EDIT: { HTMLForm *pForm = Form(); if (pForm) { pElem = (HTMLElement*)ObjectListGetFirst(pForm->GetFieldVector(), &it); while (pElem) { if ( (pElem->Type() == HTML_EDIT_STR_ELEMENT || pElem->Type() == HTML_EDITBOX_ELEMENT) && pElem != this) { onlyBox = 0; break; } if (pElem->Type() == HTML_BUTTON_ELEMENT && !hasSubmit) { hasSubmit = 1; pSubmit = (HTMLInput *)pElem; } pElem = (HTMLElement*)ObjectListGetNext(&it); } if (pSubmit && onlyBox) { HTMLEvent e; e.type = HTML_EVENT_SUBMIT; e.data.position.x = pEvent->data.position.x; e.data.position.y = pEvent->data.position.y; e.elem = (HELEMENT_HANDLE)pSubmit; return (pForm->Event(&e)); } } break; } case HTML_EVENT_FOCUS: { HTMLSetFlagFinder f(HELEM_FLAG_HAS_FOCUS, 1); FindElement(&f); SetFlag(HINPUT_FLAG_ACTIVE); Update(0,0); break; } case HTML_EVENT_UNFOCUS: { HTMLSetFlagFinder f(HELEM_FLAG_HAS_FOCUS, 0); FindElement(&f); ClearFlag(HINPUT_FLAG_ACTIVE); Update(0,0); break; } case HTML_EVENT_KEYDOWN: { HTMLEventStatus retval = DefaultInputKeyHandler(pEvent); if (retval != HTML_EVENT_STATUS_CONTINUE) { return (retval); } switch (pEvent->data.key) { case WGK_LNDN: case WGK_LNUP: case WGK_LEFT: case WGK_RIGHT: pEvent->flags |= HTML_EVENT_FLAG_CANCEL_BUBBLE; break; } break; } default: break; } return (HTMLInput::DefaultEvent(pEvent)); }
/** * Call this method when getting a Property from HTMLElement */ static JSBool jhtml_anchor_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) { int index = JSVAL_TO_INT(id); #ifdef WEBC_DEBUG if(index < 0) LOG_HTMLDOM("jhtml_anchor_getProperty %s\n", jhtml_anchor_props[-(index+1)].name); else LOG_HTMLDOM("jhtml_anchor_getProperty %d\n", index); #endif if (index) { HTMLElement *pElem = (HTMLElement *) jhutil_GetPrivate(cx, obj); if (pElem->Type() != HTML_ANCHOR_ELEMENT) { return JS_TRUE; } HTMLAnchor *anchor = (HTMLAnchor *) pElem; if (!pElem) { return JS_TRUE; } switch (index) { case(HTMLANCHORELEMENT_ACCESSKEY): { char ak[2]; ak[0] = (char)anchor->AccessKey(); ak[1] = '\0'; JSString *str = JS_NewStringCopyZ(cx,ak); *vp = STRING_TO_JSVAL(str); return JS_TRUE; } case(HTMLANCHORELEMENT_CHARSET): *vp = STRING_TO_JSVAL(WEBC_JS_NEW_STRING_COPY_Z(cx, anchor->CharSet())); return JS_TRUE; case(HTMLANCHORELEMENT_COORDS): { WEBC_CHAR *pCoordString = (WEBC_CHAR *)HTML_PrintLengthList(anchor->Coordinates(), anchor->CoordinateCount()); if(pCoordString) { *vp = STRING_TO_JSVAL(WEBC_JS_NEW_STRING_COPY_Z(cx, pCoordString)); WEBC_FREE(pCoordString); return JS_TRUE; } } break; case(HTMLANCHORELEMENT_HREF): *vp = STRING_TO_JSVAL(WEBC_JS_NEW_STRING_COPY_Z(cx, anchor->HRef())); return JS_TRUE; case(HTMLANCHORELEMENT_HREFLANG): *vp = STRING_TO_JSVAL(WEBC_JS_NEW_STRING_COPY_Z(cx, anchor->HRefLang())); return JS_TRUE; case(HTMLANCHORELEMENT_NAME): *vp = STRING_TO_JSVAL(WEBC_JS_NEW_STRING_COPY_Z(cx, anchor->Name())); return JS_TRUE; case(HTMLANCHORELEMENT_REL): *vp = STRING_TO_JSVAL(WEBC_JS_NEW_STRING_COPY_Z(cx, anchor->Rel())); return JS_TRUE; case(HTMLANCHORELEMENT_REV): *vp = STRING_TO_JSVAL(WEBC_JS_NEW_STRING_COPY_Z(cx, anchor->Rev())); return JS_TRUE; case(HTMLANCHORELEMENT_SHAPE): *vp = STRING_TO_JSVAL(WEBC_JS_NEW_STRING_COPY_Z(cx, anchor->ShapeStr())); return JS_TRUE; case(HTMLANCHORELEMENT_TABINDEX): *vp = INT_TO_JSVAL(anchor->TabIndex()); return JS_TRUE; case(HTMLANCHORELEMENT_TARGET): *vp = STRING_TO_JSVAL(WEBC_JS_NEW_STRING_COPY_Z(cx, anchor->Target())); return JS_TRUE; case(HTMLANCHORELEMENT_TYPE): *vp = STRING_TO_JSVAL(WEBC_JS_NEW_STRING_COPY_Z(cx, anchor->MimeType())); return JS_TRUE; }//end switch } return JS_TRUE; }
void HTMLScript::Update(WEBC_PFBYTE o, WEBC_PFBYTE data) { #if (WEBC_SUPPORT_JSCRIPT) HTMLDocument *pDoc = GetDocument(); WebcJSDocumentContext *jsMgr = (pDoc)? pDoc->GetJSMgr() : 0; if (mpScript || !jsMgr) { return; } WEBC_NEW_VERBOSE(mpScript, WebcJSScript(jsMgr, jsMgr->GetGlobalObject()),"WebcJSDocumentContext"); if (mpScript) { if (Src()) { LoadScript *pJob; if (pDoc) { HTMLBrowser *pBrowser = pDoc->GetBrowser(); if (pBrowser) { WebcCharset charset = (mCharset == WEBC_CHARSET_UNKNOWN)? pDoc->GetCharset() : mCharset; WEBC_NEW_VERBOSE(pJob, LoadScript(this, pDoc, charset),"LoadScript"); if (pJob) { pBrowser->ProcessLoadJob(pJob, pJob->GetURL(), pDoc->BaseURL(), pDoc, WEBC_TRUE /* urgent */); } webc_free_string_copy(mpSrc, __FILE__, __LINE__); mpSrc = 0; } } } else // compile the contents of this tag as the script to execute { HTMLElement *pChild = mpFirstChild; WEBC_CHAR* pStr; long iLen; for (; pChild != WEBC_NULL; pChild = pChild->mpNext) { if (pChild->Type() == HTML_STRING_ELEMENT) { pStr = ((HTMLString*)(pChild))->GetString(); iLen = webc_strlen(pStr); if (mpScript->Write(pStr, iLen) < iLen) { mpScript->Destroy(); mpScript = 0; break; } } } if (mpScript) { mpScript->Compile(); } DeleteChildren(); } } #endif }