Jacek Caban : mshtml: Store nsIDOMHTMLTableElement in HTMLTable.

Alexandre Julliard julliard at winehq.org
Wed Oct 1 14:09:26 CDT 2008


Module: wine
Branch: master
Commit: bf9155dbaa2760acde0239aca20ea76af8940c28
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=bf9155dbaa2760acde0239aca20ea76af8940c28

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Sep 30 17:45:25 2008 +0200

mshtml: Store nsIDOMHTMLTableElement in HTMLTable.

---

 dlls/mshtml/htmltable.c |   10 ++++++++++
 dlls/mshtml/nsiface.idl |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+), 0 deletions(-)

diff --git a/dlls/mshtml/htmltable.c b/dlls/mshtml/htmltable.c
index 247c0ae..622f090 100644
--- a/dlls/mshtml/htmltable.c
+++ b/dlls/mshtml/htmltable.c
@@ -37,6 +37,7 @@ typedef struct {
     const IHTMLTableVtbl  *lpHTMLTableVtbl;
 
     ConnectionPoint cp;
+    nsIDOMHTMLTableElement *nstable;
 } HTMLTable;
 
 #define HTMLTABLE(x)  ((IHTMLTable*)  &(x)->lpHTMLTableVtbl)
@@ -529,6 +530,10 @@ static HRESULT HTMLTable_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
 static void HTMLTable_destructor(HTMLDOMNode *iface)
 {
     HTMLTable *This = HTMLTABLE_NODE_THIS(iface);
+
+    if(This->nstable)
+        nsIDOMHTMLTableElement_Release(This->nstable);
+
     HTMLElement_destructor(&This->element.node);
 }
 
@@ -558,6 +563,7 @@ static dispex_static_data_t HTMLTable_dispex = {
 HTMLElement *HTMLTable_Create(nsIDOMHTMLElement *nselem)
 {
     HTMLTable *ret = heap_alloc_zero(sizeof(HTMLTable));
+    nsresult nsres;
 
     ret->element.node.vtbl = &HTMLTableImplVtbl;
     ret->lpHTMLTableVtbl = &HTMLTableVtbl;
@@ -567,5 +573,9 @@ HTMLElement *HTMLTable_Create(nsIDOMHTMLElement *nselem)
 
     ConnectionPoint_Init(&ret->cp, &ret->element.cp_container, &DIID_HTMLTableEvents);
 
+    nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTableElement, (void**)&ret->nstable);
+    if(NS_FAILED(nsres))
+        ERR("Could not get nsIDOMHTMLTableElement iface: %08x\n", nsres);
+
     return &ret->element;
 }
diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl
index 44b426c..525bfd3 100644
--- a/dlls/mshtml/nsiface.idl
+++ b/dlls/mshtml/nsiface.idl
@@ -125,6 +125,8 @@ typedef nsISupports nsIAtom;
 typedef nsISupports nsISupportsArray;
 typedef nsISupports nsIContentFilter;
 typedef nsISupports nsIDOMMediaList;
+typedef nsISupports nsIDOMHTMLTableCaptionElement;
+typedef nsISupports nsIDOMHTMLTableSectionElement;
 
 [
     object,
@@ -1299,6 +1301,7 @@ interface nsIDOMHTMLScriptElement : nsIDOMHTMLElement
     object,
     uuid(a6cf90ab-15b3-11d2-932e-00805f8add32),
     local
+    /* FROZEN */
 ]
 interface nsIDOMHTMLImageElement : nsIDOMHTMLElement
 {
@@ -1330,6 +1333,50 @@ interface nsIDOMHTMLImageElement : nsIDOMHTMLElement
 
 [
     object,
+    uuid(a6cf90b2-15b3-11d2-932e-00805f8add32),
+    local
+    /* FROZEN */
+]
+interface nsIDOMHTMLTableElement : nsIDOMHTMLElement
+{
+    nsresult GetCaption(nsIDOMHTMLTableCaptionElement **aCaption);
+    nsresult SetCaption(nsIDOMHTMLTableCaptionElement *aCaption);
+    nsresult GetTHead(nsIDOMHTMLTableSectionElement **aTHead);
+    nsresult SetTHead(nsIDOMHTMLTableSectionElement *aTHead);
+    nsresult GetTFoot(nsIDOMHTMLTableSectionElement **aTFoot);
+    nsresult SetTFoot(nsIDOMHTMLTableSectionElement *aTFoot);
+    nsresult GetRows(nsIDOMHTMLCollection **aRows);
+    nsresult GetTBodies(nsIDOMHTMLCollection **aTBodies);
+    nsresult GetAlign(nsAString *aAlign);
+    nsresult SetAlign(const nsAString *aAlign);
+    nsresult GetBgColor(nsAString *aBgColor);
+    nsresult SetBgColor(const nsAString *aBgColor);
+    nsresult GetBorder(nsAString *aBorder);
+    nsresult SetBorder(const nsAString *aBorder);
+    nsresult GetCellPadding(nsAString *aCellPadding);
+    nsresult SetCellPadding(const nsAString *aCellPadding);
+    nsresult GetCellSpacing(nsAString *aCellSpacing);
+    nsresult SetCellSpacing(const nsAString *aCellSpacing);
+    nsresult GetFrame(nsAString *aFrame);
+    nsresult SetFrame(const nsAString *aFrame);
+    nsresult GetRules(nsAString *aRules);
+    nsresult SetRules(const nsAString *aRules);
+    nsresult GetSummary(nsAString *aSummary);
+    nsresult SetSummary(const nsAString *aSummary);
+    nsresult GetWidth(nsAString *aWidth);
+    nsresult SetWidth(const nsAString *aWidth);
+    nsresult CreateTHead(nsIDOMHTMLElement **_retval);
+    nsresult DeleteTHead();
+    nsresult CreateTFoot(nsIDOMHTMLElement **_retval);
+    nsresult DeleteTFoot();
+    nsresult CreateCaption(nsIDOMHTMLElement **_retval);
+    nsresult DeleteCaption();
+    nsresult InsertRow(PRInt32 index, nsIDOMHTMLElement **_retval);
+    nsresult DeleteRow(PRInt32 index);
+}
+
+[
+    object,
     uuid(94928ab3-8b63-11d3-989d-001083010e9b),
     local
     /* FROZEN */




More information about the wine-cvs mailing list