Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
af6c518e
Commit
af6c518e
authored
Mar 15, 2013
by
Jacek Caban
Committed by
Alexandre Julliard
Mar 15, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mshtml: Use lazy allocation for connection points.
parent
1d05cd51
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
174 additions
and
94 deletions
+174
-94
conpoint.c
dlls/mshtml/conpoint.c
+66
-34
htmlanchor.c
dlls/mshtml/htmlanchor.c
+1
-0
htmlbody.c
dlls/mshtml/htmlbody.c
+8
-4
htmlcomment.c
dlls/mshtml/htmlcomment.c
+1
-0
htmldoc.c
dlls/mshtml/htmldoc.c
+11
-5
htmlelem.c
dlls/mshtml/htmlelem.c
+9
-2
htmlembed.c
dlls/mshtml/htmlembed.c
+1
-0
htmlevent.c
dlls/mshtml/htmlevent.c
+28
-28
htmlform.c
dlls/mshtml/htmlform.c
+1
-0
htmlframe.c
dlls/mshtml/htmlframe.c
+1
-0
htmlgeneric.c
dlls/mshtml/htmlgeneric.c
+1
-0
htmlhead.c
dlls/mshtml/htmlhead.c
+2
-0
htmliframe.c
dlls/mshtml/htmliframe.c
+1
-0
htmlimg.c
dlls/mshtml/htmlimg.c
+1
-0
htmlinput.c
dlls/mshtml/htmlinput.c
+3
-0
htmllink.c
dlls/mshtml/htmllink.c
+1
-0
htmlmeta.c
dlls/mshtml/htmlmeta.c
+1
-0
htmlnode.c
dlls/mshtml/htmlnode.c
+3
-0
htmlobject.c
dlls/mshtml/htmlobject.c
+1
-0
htmloption.c
dlls/mshtml/htmloption.c
+1
-0
htmlscript.c
dlls/mshtml/htmlscript.c
+1
-0
htmlselect.c
dlls/mshtml/htmlselect.c
+1
-0
htmlstyleelem.c
dlls/mshtml/htmlstyleelem.c
+1
-0
htmltable.c
dlls/mshtml/htmltable.c
+7
-3
htmltablecell.c
dlls/mshtml/htmltablecell.c
+1
-0
htmltablerow.c
dlls/mshtml/htmltablerow.c
+1
-0
htmltextarea.c
dlls/mshtml/htmltextarea.c
+1
-0
htmltextcont.c
dlls/mshtml/htmltextcont.c
+0
-2
htmltextnode.c
dlls/mshtml/htmltextnode.c
+3
-0
mshtml_private.h
dlls/mshtml/mshtml_private.h
+14
-14
mutation.c
dlls/mshtml/mutation.c
+1
-1
persist.c
dlls/mshtml/persist.c
+1
-1
No files found.
dlls/mshtml/conpoint.c
View file @
af6c518e
...
...
@@ -48,16 +48,6 @@ static const char *debugstr_cp_guid(REFIID riid)
return
debugstr_guid
(
riid
);
}
void
call_property_onchanged
(
ConnectionPoint
*
This
,
DISPID
dispid
)
{
DWORD
i
;
for
(
i
=
0
;
i
<
This
->
sinks_size
;
i
++
)
{
if
(
This
->
sinks
[
i
].
propnotif
)
IPropertyNotifySink_OnChanged
(
This
->
sinks
[
i
].
propnotif
,
dispid
);
}
}
static
inline
ConnectionPoint
*
impl_from_IConnectionPoint
(
IConnectionPoint
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
ConnectionPoint
,
IConnectionPoint_iface
);
...
...
@@ -201,7 +191,7 @@ static const IConnectionPointVtbl ConnectionPointVtbl =
ConnectionPoint_EnumConnections
};
void
ConnectionPoint_Init
(
ConnectionPoint
*
cp
,
ConnectionPointContainer
*
container
,
REFIID
riid
,
cp_static_data_t
*
data
)
static
void
ConnectionPoint_Init
(
ConnectionPoint
*
cp
,
ConnectionPointContainer
*
container
,
REFIID
riid
,
cp_static_data_t
*
data
)
{
cp
->
IConnectionPoint_iface
.
lpVtbl
=
&
ConnectionPointVtbl
;
cp
->
container
=
container
;
...
...
@@ -209,9 +199,6 @@ void ConnectionPoint_Init(ConnectionPoint *cp, ConnectionPointContainer *contain
cp
->
sinks_size
=
0
;
cp
->
iid
=
riid
;
cp
->
data
=
data
;
cp
->
next
=
container
->
cp_list
;
container
->
cp_list
=
cp
;
}
static
void
ConnectionPoint_Destroy
(
ConnectionPoint
*
This
)
...
...
@@ -226,6 +213,51 @@ static void ConnectionPoint_Destroy(ConnectionPoint *This)
heap_free
(
This
->
sinks
);
}
static
ConnectionPoint
*
get_cp
(
ConnectionPointContainer
*
container
,
REFIID
riid
,
BOOL
do_create
)
{
const
cpc_entry_t
*
iter
;
unsigned
idx
,
i
;
for
(
iter
=
container
->
cp_entries
;
iter
->
riid
;
iter
++
)
{
if
(
IsEqualGUID
(
iter
->
riid
,
riid
))
break
;
}
if
(
!
iter
->
riid
)
return
NULL
;
idx
=
iter
-
container
->
cp_entries
;
if
(
!
container
->
cps
)
{
if
(
!
do_create
)
return
NULL
;
while
(
iter
->
riid
)
iter
++
;
container
->
cps
=
heap_alloc
((
iter
-
container
->
cp_entries
)
*
sizeof
(
*
container
->
cps
));
if
(
!
container
->
cps
)
return
NULL
;
for
(
i
=
0
;
container
->
cp_entries
[
i
].
riid
;
i
++
)
ConnectionPoint_Init
(
container
->
cps
+
i
,
container
,
container
->
cp_entries
[
i
].
riid
,
container
->
cp_entries
[
i
].
desc
);
}
return
container
->
cps
+
idx
;
}
void
call_property_onchanged
(
ConnectionPointContainer
*
container
,
DISPID
dispid
)
{
ConnectionPoint
*
cp
;
DWORD
i
;
cp
=
get_cp
(
container
,
&
IID_IPropertyNotifySink
,
FALSE
);
if
(
!
cp
)
return
;
for
(
i
=
0
;
i
<
cp
->
sinks_size
;
i
++
)
{
if
(
cp
->
sinks
[
i
].
propnotif
)
IPropertyNotifySink_OnChanged
(
cp
->
sinks
[
i
].
propnotif
,
dispid
);
}
}
static
inline
ConnectionPointContainer
*
impl_from_IConnectionPointContainer
(
IConnectionPointContainer
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
ConnectionPointContainer
,
IConnectionPointContainer_iface
);
...
...
@@ -262,7 +294,7 @@ static HRESULT WINAPI ConnectionPointContainer_FindConnectionPoint(IConnectionPo
REFIID
riid
,
IConnectionPoint
**
ppCP
)
{
ConnectionPointContainer
*
This
=
impl_from_IConnectionPointContainer
(
iface
);
ConnectionPoint
*
iter
;
ConnectionPoint
*
cp
;
TRACE
(
"(%p)->(%s %p)
\n
"
,
This
,
debugstr_cp_guid
(
riid
),
ppCP
);
...
...
@@ -270,20 +302,16 @@ static HRESULT WINAPI ConnectionPointContainer_FindConnectionPoint(IConnectionPo
return
IConnectionPointContainer_FindConnectionPoint
(
&
This
->
forward_container
->
IConnectionPointContainer_iface
,
riid
,
ppCP
);
*
ppCP
=
NULL
;
for
(
iter
=
This
->
cp_list
;
iter
;
iter
=
iter
->
next
)
{
if
(
IsEqualGUID
(
iter
->
iid
,
riid
))
*
ppCP
=
&
iter
->
IConnectionPoint_iface
;
}
if
(
*
ppCP
)
{
IConnectionPoint_AddRef
(
*
ppCP
);
return
S_OK
;
cp
=
get_cp
(
This
,
riid
,
TRUE
);
if
(
!
cp
)
{
FIXME
(
"unsupported riid %s
\n
"
,
debugstr_cp_guid
(
riid
));
*
ppCP
=
NULL
;
return
CONNECT_E_NOCONNECTION
;
}
FIXME
(
"unsupported riid %s
\n
"
,
debugstr_cp_guid
(
riid
));
return
CONNECT_E_NOCONNECTION
;
*
ppCP
=
&
cp
->
IConnectionPoint_iface
;
IConnectionPoint_AddRef
(
*
ppCP
);
return
S_OK
;
}
static
const
IConnectionPointContainerVtbl
ConnectionPointContainerVtbl
=
{
...
...
@@ -294,19 +322,23 @@ static const IConnectionPointContainerVtbl ConnectionPointContainerVtbl = {
ConnectionPointContainer_FindConnectionPoint
};
void
ConnectionPointContainer_Init
(
ConnectionPointContainer
*
This
,
IUnknown
*
outer
)
void
ConnectionPointContainer_Init
(
ConnectionPointContainer
*
This
,
IUnknown
*
outer
,
const
cpc_entry_t
*
cp_entries
)
{
This
->
IConnectionPointContainer_iface
.
lpVtbl
=
&
ConnectionPointContainerVtbl
;
This
->
cp_list
=
NULL
;
This
->
cp_entries
=
cp_entries
;
This
->
cps
=
NULL
;
This
->
outer
=
outer
;
This
->
forward_container
=
NULL
;
}
void
ConnectionPointContainer_Destroy
(
ConnectionPointContainer
*
This
)
{
ConnectionPoint
*
iter
=
This
->
cp_list
;
unsigned
i
;
while
(
iter
)
{
ConnectionPoint_Destroy
(
iter
);
iter
=
iter
->
next
;
}
if
(
!
This
->
cps
)
return
;
for
(
i
=
0
;
This
->
cp_entries
[
i
].
riid
;
i
++
)
ConnectionPoint_Destroy
(
This
->
cps
+
i
);
heap_free
(
This
->
cps
);
}
dlls/mshtml/htmlanchor.c
View file @
af6c518e
...
...
@@ -684,6 +684,7 @@ static HRESULT HTMLAnchorElement_handle_event(HTMLDOMNode *iface, eventid_t eid,
static
const
NodeImplVtbl
HTMLAnchorElementImplVtbl
=
{
HTMLAnchorElement_QI
,
HTMLElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLAnchorElement_handle_event
,
HTMLElement_get_attr_col
...
...
dlls/mshtml/htmlbody.c
View file @
af6c518e
...
...
@@ -38,8 +38,6 @@ typedef struct {
IHTMLBodyElement
IHTMLBodyElement_iface
;
ConnectionPoint
cp_propnotif
;
nsIDOMHTMLBodyElement
*
nsbody
;
}
HTMLBodyElement
;
...
...
@@ -771,9 +769,17 @@ static event_target_t **HTMLBodyElement_get_event_target(HTMLDOMNode *iface)
:
&
This
->
textcont
.
element
.
node
.
event_target
;
}
static
const
cpc_entry_t
HTMLBodyElement_cpc
[]
=
{
{
&
DIID_HTMLTextContainerEvents
},
{
&
IID_IPropertyNotifySink
},
HTMLELEMENT_CPC
,
{
NULL
}
};
static
const
NodeImplVtbl
HTMLBodyElementImplVtbl
=
{
HTMLBodyElement_QI
,
HTMLBodyElement_destructor
,
HTMLBodyElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
,
...
...
@@ -817,8 +823,6 @@ HRESULT HTMLBodyElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem,
HTMLTextContainer_Init
(
&
ret
->
textcont
,
doc
,
nselem
,
&
HTMLBodyElement_dispex
);
ConnectionPoint_Init
(
&
ret
->
cp_propnotif
,
&
ret
->
textcont
.
element
.
cp_container
,
&
IID_IPropertyNotifySink
,
NULL
);
*
elem
=
&
ret
->
textcont
.
element
;
return
S_OK
;
}
dlls/mshtml/htmlcomment.c
View file @
af6c518e
...
...
@@ -172,6 +172,7 @@ static void HTMLCommentElement_destructor(HTMLDOMNode *iface)
static
const
NodeImplVtbl
HTMLCommentElementImplVtbl
=
{
HTMLCommentElement_QI
,
HTMLCommentElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
...
...
dlls/mshtml/htmldoc.c
View file @
af6c518e
...
...
@@ -2055,6 +2055,14 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
static
cp_static_data_t
HTMLDocumentEvents_data
=
{
HTMLDocumentEvents_tid
,
HTMLDocument_on_advise
};
static
const
cpc_entry_t
HTMLDocument_cpc
[]
=
{
{
&
IID_IDispatch
,
&
HTMLDocumentEvents_data
},
{
&
IID_IPropertyNotifySink
},
{
&
DIID_HTMLDocumentEvents
,
&
HTMLDocumentEvents_data
},
{
&
DIID_HTMLDocumentEvents2
},
{
NULL
}
};
static
void
init_doc
(
HTMLDocument
*
doc
,
IUnknown
*
unk_impl
,
IDispatchEx
*
dispex
)
{
doc
->
IHTMLDocument2_iface
.
lpVtbl
=
&
HTMLDocumentVtbl
;
...
...
@@ -2076,11 +2084,7 @@ static void init_doc(HTMLDocument *doc, IUnknown *unk_impl, IDispatchEx *dispex)
HTMLDocument_Service_Init
(
doc
);
HTMLDocument_Hlink_Init
(
doc
);
ConnectionPointContainer_Init
(
&
doc
->
cp_container
,
(
IUnknown
*
)
&
doc
->
IHTMLDocument2_iface
);
ConnectionPoint_Init
(
&
doc
->
cp_dispatch
,
&
doc
->
cp_container
,
&
IID_IDispatch
,
&
HTMLDocumentEvents_data
);
ConnectionPoint_Init
(
&
doc
->
cp_propnotif
,
&
doc
->
cp_container
,
&
IID_IPropertyNotifySink
,
NULL
);
ConnectionPoint_Init
(
&
doc
->
cp_htmldocevents
,
&
doc
->
cp_container
,
&
DIID_HTMLDocumentEvents
,
&
HTMLDocumentEvents_data
);
ConnectionPoint_Init
(
&
doc
->
cp_htmldocevents2
,
&
doc
->
cp_container
,
&
DIID_HTMLDocumentEvents2
,
NULL
);
ConnectionPointContainer_Init
(
&
doc
->
cp_container
,
(
IUnknown
*
)
&
doc
->
IHTMLDocument2_iface
,
HTMLDocument_cpc
);
}
static
void
destroy_htmldoc
(
HTMLDocument
*
This
)
...
...
@@ -2192,6 +2196,7 @@ static void HTMLDocumentNode_unlink(HTMLDOMNode *iface)
static
const
NodeImplVtbl
HTMLDocumentNodeImplVtbl
=
{
HTMLDocumentNode_QI
,
HTMLDocumentNode_destructor
,
HTMLDocument_cpc
,
HTMLDocumentNode_clone
,
NULL
,
NULL
,
...
...
@@ -2280,6 +2285,7 @@ static const dispex_static_data_vtbl_t HTMLDocumentNode_dispex_vtbl = {
static
const
NodeImplVtbl
HTMLDocumentFragmentImplVtbl
=
{
HTMLDocumentNode_QI
,
HTMLDocumentNode_destructor
,
HTMLDocument_cpc
,
HTMLDocumentFragment_clone
};
...
...
dlls/mshtml/htmlelem.c
View file @
af6c518e
...
...
@@ -1679,9 +1679,15 @@ HRESULT HTMLElement_handle_event(HTMLDOMNode *iface, DWORD eid, nsIDOMEvent *eve
return
S_OK
;
}
const
cpc_entry_t
HTMLElement_cpc
[]
=
{
HTMLELEMENT_CPC
,
{
NULL
}
};
static
const
NodeImplVtbl
HTMLElementImplVtbl
=
{
HTMLElement_QI
,
HTMLElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
...
...
@@ -1838,7 +1844,8 @@ void HTMLElement_Init(HTMLElement *This, HTMLDocumentNode *doc, nsIDOMHTMLElemen
This
->
nselem
=
nselem
;
}
ConnectionPointContainer_Init
(
&
This
->
cp_container
,
(
IUnknown
*
)
&
This
->
IHTMLElement_iface
);
This
->
node
.
cp_container
=
&
This
->
cp_container
;
ConnectionPointContainer_Init
(
&
This
->
cp_container
,
(
IUnknown
*
)
&
This
->
IHTMLElement_iface
,
This
->
node
.
vtbl
->
cpc_entries
);
}
HRESULT
HTMLElement_Create
(
HTMLDocumentNode
*
doc
,
nsIDOMNode
*
nsnode
,
BOOL
use_generic
,
HTMLElement
**
ret
)
...
...
@@ -1868,8 +1875,8 @@ HRESULT HTMLElement_Create(HTMLDocumentNode *doc, nsIDOMNode *nsnode, BOOL use_g
}
else
{
elem
=
heap_alloc_zero
(
sizeof
(
HTMLElement
));
if
(
elem
)
{
HTMLElement_Init
(
elem
,
doc
,
nselem
,
&
HTMLElement_dispex
);
elem
->
node
.
vtbl
=
&
HTMLElementImplVtbl
;
HTMLElement_Init
(
elem
,
doc
,
nselem
,
&
HTMLElement_dispex
);
hres
=
S_OK
;
}
else
{
hres
=
E_OUTOFMEMORY
;
...
...
dlls/mshtml/htmlembed.c
View file @
af6c518e
...
...
@@ -254,6 +254,7 @@ static void HTMLEmbedElement_destructor(HTMLDOMNode *iface)
static
const
NodeImplVtbl
HTMLEmbedElementImplVtbl
=
{
HTMLEmbedElement_QI
,
HTMLEmbedElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
...
...
dlls/mshtml/htmlevent.c
View file @
af6c518e
...
...
@@ -1001,44 +1001,44 @@ static void call_event_handlers(HTMLDocumentNode *doc, HTMLEventObj *event_obj,
* it's safe to call event handler by checking nsevent_listener, which is NULL for
* detached documents.
*/
if
(
cp_container
&&
doc
->
nsevent_listener
)
{
if
(
cp_container
&&
cp_container
->
forward_container
)
cp_container
=
cp_container
->
forward_container
;
if
(
cp_container
&&
cp_container
->
cps
&&
doc
->
nsevent_listener
)
{
ConnectionPoint
*
cp
;
unsigned
i
,
j
;
if
(
cp_container
->
forward_container
)
cp_container
=
cp_container
->
forward_container
;
for
(
cp
=
cp_container
->
cp_list
;
cp
;
cp
=
cp
->
next
)
{
if
(
cp
->
sinks_size
&&
is_cp_event
(
cp
->
data
,
event_info
[
eid
].
dispid
))
{
unsigned
int
i
;
for
(
j
=
0
;
cp_container
->
cp_entries
[
j
].
riid
;
j
++
)
{
cp
=
cp_container
->
cps
+
j
;
if
(
!
cp
->
sinks_size
||
!
is_cp_event
(
cp
->
data
,
event_info
[
eid
].
dispid
))
continue
;
for
(
i
=
0
;
doc
->
nsevent_listener
&&
i
<
cp
->
sinks_size
;
i
++
)
{
if
(
!
cp
->
sinks
[
i
].
disp
)
continue
;
for
(
i
=
0
;
doc
->
nsevent_listener
&&
i
<
cp
->
sinks_size
;
i
++
)
{
if
(
!
cp
->
sinks
[
i
].
disp
)
continue
;
V_VT
(
&
v
)
=
VT_EMPTY
;
V_VT
(
&
v
)
=
VT_EMPTY
;
TRACE
(
"cp %s [%u] >>>
\n
"
,
debugstr_w
(
event_info
[
eid
].
name
),
i
);
hres
=
call_cp_func
(
cp
->
sinks
[
i
].
disp
,
event_info
[
eid
].
dispid
,
&
v
);
if
(
hres
==
S_OK
)
{
TRACE
(
"cp %s [%u] <<<
\n
"
,
debugstr_w
(
event_info
[
eid
].
name
),
i
);
TRACE
(
"cp %s [%u] >>>
\n
"
,
debugstr_w
(
event_info
[
eid
].
name
),
i
);
hres
=
call_cp_func
(
cp
->
sinks
[
i
].
disp
,
event_info
[
eid
].
dispid
,
&
v
);
if
(
hres
==
S_OK
)
{
TRACE
(
"cp %s [%u] <<<
\n
"
,
debugstr_w
(
event_info
[
eid
].
name
),
i
);
if
(
cancelable
)
{
if
(
V_VT
(
&
v
)
==
VT_BOOL
)
{
if
(
!
V_BOOL
(
&
v
))
event_obj
->
prevent_default
=
TRUE
;
}
else
if
(
V_VT
(
&
v
)
!=
VT_EMPTY
)
{
FIXME
(
"unhandled result %s
\n
"
,
debugstr_variant
(
&
v
));
}
if
(
cancelable
)
{
if
(
V_VT
(
&
v
)
==
VT_BOOL
)
{
if
(
!
V_BOOL
(
&
v
))
event_obj
->
prevent_default
=
TRUE
;
}
else
if
(
V_VT
(
&
v
)
!=
VT_EMPTY
)
{
FIXME
(
"unhandled result %s
\n
"
,
debugstr_variant
(
&
v
));
}
VariantClear
(
&
v
);
}
else
{
WARN
(
"cp %s [%u] <<< %08x
\n
"
,
debugstr_w
(
event_info
[
eid
].
name
),
i
,
hres
);
}
VariantClear
(
&
v
);
}
else
{
WARN
(
"cp %s [%u] <<< %08x
\n
"
,
debugstr_w
(
event_info
[
eid
].
name
),
i
,
hres
);
}
if
(
!
doc
->
nsevent_listener
)
break
;
}
if
(
!
doc
->
nsevent_listener
)
break
;
}
}
}
...
...
dlls/mshtml/htmlform.c
View file @
af6c518e
...
...
@@ -629,6 +629,7 @@ static HRESULT HTMLFormElement_invoke(HTMLDOMNode *iface,
static
const
NodeImplVtbl
HTMLFormElementImplVtbl
=
{
HTMLFormElement_QI
,
HTMLElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
,
...
...
dlls/mshtml/htmlframe.c
View file @
af6c518e
...
...
@@ -269,6 +269,7 @@ static HRESULT HTMLFrameElement_bind_to_tree(HTMLDOMNode *iface)
static
const
NodeImplVtbl
HTMLFrameElementImplVtbl
=
{
HTMLFrameElement_QI
,
HTMLFrameElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
,
...
...
dlls/mshtml/htmlgeneric.c
View file @
af6c518e
...
...
@@ -154,6 +154,7 @@ static void HTMLGenericElement_destructor(HTMLDOMNode *iface)
static
const
NodeImplVtbl
HTMLGenericElementImplVtbl
=
{
HTMLGenericElement_QI
,
HTMLGenericElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
...
...
dlls/mshtml/htmlhead.c
View file @
af6c518e
...
...
@@ -155,6 +155,7 @@ static void HTMLTitleElement_destructor(HTMLDOMNode *iface)
static
const
NodeImplVtbl
HTMLTitleElementImplVtbl
=
{
HTMLTitleElement_QI
,
HTMLTitleElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
...
...
@@ -314,6 +315,7 @@ static void HTMLHeadElement_destructor(HTMLDOMNode *iface)
static
const
NodeImplVtbl
HTMLHeadElementImplVtbl
=
{
HTMLHeadElement_QI
,
HTMLHeadElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
...
...
dlls/mshtml/htmliframe.c
View file @
af6c518e
...
...
@@ -542,6 +542,7 @@ static HRESULT HTMLIFrame_bind_to_tree(HTMLDOMNode *iface)
static
const
NodeImplVtbl
HTMLIFrameImplVtbl
=
{
HTMLIFrame_QI
,
HTMLIFrame_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
,
...
...
dlls/mshtml/htmlimg.c
View file @
af6c518e
...
...
@@ -647,6 +647,7 @@ static HRESULT HTMLImgElement_get_readystate(HTMLDOMNode *iface, BSTR *p)
static
const
NodeImplVtbl
HTMLImgElementImplVtbl
=
{
HTMLImgElement_QI
,
HTMLElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
,
...
...
dlls/mshtml/htmlinput.c
View file @
af6c518e
...
...
@@ -1194,6 +1194,7 @@ static HRESULT HTMLInputElementImpl_get_disabled(HTMLDOMNode *iface, VARIANT_BOO
static
const
NodeImplVtbl
HTMLInputElementImplVtbl
=
{
HTMLInputElement_QI
,
HTMLElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
,
...
...
@@ -1377,6 +1378,7 @@ static HRESULT HTMLLabelElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
static
const
NodeImplVtbl
HTMLLabelElementImplVtbl
=
{
HTMLLabelElement_QI
,
HTMLElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
,
...
...
@@ -1604,6 +1606,7 @@ static HRESULT HTMLButtonElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
static
const
NodeImplVtbl
HTMLButtonElementImplVtbl
=
{
HTMLButtonElement_QI
,
HTMLElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
,
...
...
dlls/mshtml/htmllink.c
View file @
af6c518e
...
...
@@ -362,6 +362,7 @@ static HRESULT HTMLLinkElementImpl_get_disabled(HTMLDOMNode *iface, VARIANT_BOOL
static
const
NodeImplVtbl
HTMLLinkElementImplVtbl
=
{
HTMLLinkElement_QI
,
HTMLElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
,
...
...
dlls/mshtml/htmlmeta.c
View file @
af6c518e
...
...
@@ -253,6 +253,7 @@ static void HTMLMetaElement_destructor(HTMLDOMNode *iface)
static
const
NodeImplVtbl
HTMLMetaElementImplVtbl
=
{
HTMLMetaElement_QI
,
HTMLMetaElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
...
...
dlls/mshtml/htmlnode.c
View file @
af6c518e
...
...
@@ -1057,9 +1057,12 @@ static HRESULT HTMLDOMNode_clone(HTMLDOMNode *This, nsIDOMNode *nsnode, HTMLDOMN
return
create_node
(
This
->
doc
,
nsnode
,
ret
);
}
static
const
cpc_entry_t
HTMLDOMNode_cpc
[]
=
{{
NULL
}};
static
const
NodeImplVtbl
HTMLDOMNodeImplVtbl
=
{
HTMLDOMNode_QI
,
HTMLDOMNode_destructor
,
HTMLDOMNode_cpc
,
HTMLDOMNode_clone
};
...
...
dlls/mshtml/htmlobject.c
View file @
af6c518e
...
...
@@ -707,6 +707,7 @@ static HRESULT HTMLObjectElement_invoke(HTMLDOMNode *iface, DISPID id, LCID lcid
static
const
NodeImplVtbl
HTMLObjectElementImplVtbl
=
{
HTMLObjectElement_QI
,
HTMLObjectElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
,
...
...
dlls/mshtml/htmloption.c
View file @
af6c518e
...
...
@@ -314,6 +314,7 @@ static HRESULT HTMLOptionElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
static
const
NodeImplVtbl
HTMLOptionElementImplVtbl
=
{
HTMLOptionElement_QI
,
HTMLElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
...
...
dlls/mshtml/htmlscript.c
View file @
af6c518e
...
...
@@ -394,6 +394,7 @@ static HRESULT HTMLScriptElement_get_readystate(HTMLDOMNode *iface, BSTR *p)
static
const
NodeImplVtbl
HTMLScriptElementImplVtbl
=
{
HTMLScriptElement_QI
,
HTMLElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
,
...
...
dlls/mshtml/htmlselect.c
View file @
af6c518e
...
...
@@ -599,6 +599,7 @@ static HRESULT HTMLSelectElement_invoke(HTMLDOMNode *iface, DISPID id, LCID lcid
static
const
NodeImplVtbl
HTMLSelectElementImplVtbl
=
{
HTMLSelectElement_QI
,
HTMLElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
,
...
...
dlls/mshtml/htmlstyleelem.c
View file @
af6c518e
...
...
@@ -322,6 +322,7 @@ static void HTMLStyleElement_destructor(HTMLDOMNode *iface)
static
const
NodeImplVtbl
HTMLStyleElementImplVtbl
=
{
HTMLStyleElement_QI
,
HTMLStyleElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
...
...
dlls/mshtml/htmltable.c
View file @
af6c518e
...
...
@@ -39,7 +39,6 @@ struct HTMLTable {
IHTMLTable2
IHTMLTable2_iface
;
IHTMLTable3
IHTMLTable3_iface
;
ConnectionPoint
cp
;
nsIDOMHTMLTableElement
*
nstable
;
};
...
...
@@ -742,9 +741,16 @@ static HRESULT HTMLTable_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
return
HTMLElement_QI
(
&
This
->
element
.
node
,
riid
,
ppv
);
}
static
const
cpc_entry_t
HTMLTable_cpc
[]
=
{
{
&
DIID_HTMLTableEvents
},
HTMLELEMENT_CPC
,
{
NULL
}
};
static
const
NodeImplVtbl
HTMLTableImplVtbl
=
{
HTMLTable_QI
,
HTMLElement_destructor
,
HTMLTable_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
...
...
@@ -783,8 +789,6 @@ HRESULT HTMLTable_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLE
assert
(
nsres
==
NS_OK
&&
(
nsIDOMNode
*
)
ret
->
nstable
==
ret
->
element
.
node
.
nsnode
);
nsIDOMNode_Release
(
ret
->
element
.
node
.
nsnode
);
ConnectionPoint_Init
(
&
ret
->
cp
,
&
ret
->
element
.
cp_container
,
&
DIID_HTMLTableEvents
,
NULL
);
*
elem
=
&
ret
->
element
;
return
S_OK
;
}
dlls/mshtml/htmltablecell.c
View file @
af6c518e
...
...
@@ -340,6 +340,7 @@ static void HTMLTableCell_destructor(HTMLDOMNode *iface)
static
const
NodeImplVtbl
HTMLTableCellImplVtbl
=
{
HTMLTableCell_QI
,
HTMLTableCell_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
...
...
dlls/mshtml/htmltablerow.c
View file @
af6c518e
...
...
@@ -291,6 +291,7 @@ static HRESULT HTMLTableRow_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
static
const
NodeImplVtbl
HTMLTableRowImplVtbl
=
{
HTMLTableRow_QI
,
HTMLElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
...
...
dlls/mshtml/htmltextarea.c
View file @
af6c518e
...
...
@@ -414,6 +414,7 @@ static HRESULT HTMLTextAreaElementImpl_get_disabled(HTMLDOMNode *iface, VARIANT_
static
const
NodeImplVtbl
HTMLTextAreaElementImplVtbl
=
{
HTMLTextAreaElement_QI
,
HTMLElement_destructor
,
HTMLElement_cpc
,
HTMLElement_clone
,
HTMLElement_handle_event
,
HTMLElement_get_attr_col
,
...
...
dlls/mshtml/htmltextcont.c
View file @
af6c518e
...
...
@@ -191,6 +191,4 @@ void HTMLTextContainer_Init(HTMLTextContainer *This, HTMLDocumentNode *doc, nsID
This
->
IHTMLTextContainer_iface
.
lpVtbl
=
&
HTMLTextContainerVtbl
;
HTMLElement_Init
(
&
This
->
element
,
doc
,
nselem
,
dispex_data
);
ConnectionPoint_Init
(
&
This
->
cp
,
&
This
->
element
.
cp_container
,
&
DIID_HTMLTextContainerEvents
,
NULL
);
}
dlls/mshtml/htmltextnode.c
View file @
af6c518e
...
...
@@ -186,9 +186,12 @@ static HRESULT HTMLDOMTextNode_clone(HTMLDOMNode *iface, nsIDOMNode *nsnode, HTM
return
HTMLDOMTextNode_Create
(
This
->
node
.
doc
,
nsnode
,
ret
);
}
static
const
cpc_entry_t
HTMLDOMTextNode_cpc
[]
=
{{
NULL
}};
static
const
NodeImplVtbl
HTMLDOMTextNodeImplVtbl
=
{
HTMLDOMTextNode_QI
,
HTMLDOMNode_destructor
,
HTMLDOMTextNode_cpc
,
HTMLDOMTextNode_clone
};
...
...
dlls/mshtml/mshtml_private.h
View file @
af6c518e
...
...
@@ -434,15 +434,21 @@ typedef struct _cp_static_data_t {
DISPID
*
ids
;
}
cp_static_data_t
;
typedef
struct
{
const
IID
*
riid
;
cp_static_data_t
*
desc
;
}
cpc_entry_t
;
typedef
struct
ConnectionPointContainer
{
IConnectionPointContainer
IConnectionPointContainer_iface
;
ConnectionPoint
*
cp_list
;
ConnectionPoint
*
cps
;
const
cpc_entry_t
*
cp_entries
;
IUnknown
*
outer
;
struct
ConnectionPointContainer
*
forward_container
;
}
ConnectionPointContainer
;
struct
ConnectionPoint
{
struct
ConnectionPoint
{
IConnectionPoint
IConnectionPoint_iface
;
ConnectionPointContainer
*
container
;
...
...
@@ -456,8 +462,6 @@ struct ConnectionPoint {
const
IID
*
iid
;
cp_static_data_t
*
data
;
ConnectionPoint
*
next
;
};
struct
HTMLDocument
{
...
...
@@ -499,11 +503,6 @@ struct HTMLDocument {
LONG
task_magic
;
ConnectionPointContainer
cp_container
;
ConnectionPoint
cp_htmldocevents
;
ConnectionPoint
cp_htmldocevents2
;
ConnectionPoint
cp_propnotif
;
ConnectionPoint
cp_dispatch
;
IOleAdviseHolder
*
advise_holder
;
};
...
...
@@ -602,6 +601,7 @@ struct NSContainer {
typedef
struct
{
HRESULT
(
*
qi
)(
HTMLDOMNode
*
,
REFIID
,
void
**
);
void
(
*
destructor
)(
HTMLDOMNode
*
);
const
cpc_entry_t
*
cpc_entries
;
HRESULT
(
*
clone
)(
HTMLDOMNode
*
,
nsIDOMNode
*
,
HTMLDOMNode
**
);
HRESULT
(
*
handle_event
)(
HTMLDOMNode
*
,
DWORD
,
nsIDOMEvent
*
,
BOOL
*
);
HRESULT
(
*
get_attr_col
)(
HTMLDOMNode
*
,
HTMLAttributeCollection
**
);
...
...
@@ -666,12 +666,13 @@ typedef struct {
IHTMLElement3_tid, \
IHTMLElement4_tid
#define HTMLELEMENT_CPC {NULL}
extern
const
cpc_entry_t
HTMLElement_cpc
[];
typedef
struct
{
HTMLElement
element
;
IHTMLTextContainer
IHTMLTextContainer_iface
;
ConnectionPoint
cp
;
}
HTMLTextContainer
;
struct
HTMLFrameBase
{
...
...
@@ -755,8 +756,7 @@ void HTMLDocumentNode_SecMgr_Init(HTMLDocumentNode*) DECLSPEC_HIDDEN;
HRESULT
HTMLCurrentStyle_Create
(
HTMLElement
*
,
IHTMLCurrentStyle
**
)
DECLSPEC_HIDDEN
;
void
ConnectionPoint_Init
(
ConnectionPoint
*
,
ConnectionPointContainer
*
,
REFIID
,
cp_static_data_t
*
)
DECLSPEC_HIDDEN
;
void
ConnectionPointContainer_Init
(
ConnectionPointContainer
*
,
IUnknown
*
)
DECLSPEC_HIDDEN
;
void
ConnectionPointContainer_Init
(
ConnectionPointContainer
*
,
IUnknown
*
,
const
cpc_entry_t
*
)
DECLSPEC_HIDDEN
;
void
ConnectionPointContainer_Destroy
(
ConnectionPointContainer
*
)
DECLSPEC_HIDDEN
;
HRESULT
create_nscontainer
(
HTMLDocumentObj
*
,
NSContainer
**
)
DECLSPEC_HIDDEN
;
...
...
@@ -789,7 +789,7 @@ HRESULT nsuri_to_url(LPCWSTR,BOOL,BSTR*) DECLSPEC_HIDDEN;
HRESULT
set_frame_doc
(
HTMLFrameBase
*
,
nsIDOMDocument
*
)
DECLSPEC_HIDDEN
;
void
call_property_onchanged
(
ConnectionPoint
*
,
DISPID
)
DECLSPEC_HIDDEN
;
void
call_property_onchanged
(
ConnectionPoint
Container
*
,
DISPID
)
DECLSPEC_HIDDEN
;
HRESULT
call_set_active_object
(
IOleInPlaceUIWindow
*
,
IOleInPlaceActiveObject
*
)
DECLSPEC_HIDDEN
;
void
*
nsalloc
(
size_t
)
__WINE_ALLOC_SIZE
(
1
)
DECLSPEC_HIDDEN
;
...
...
dlls/mshtml/mutation.c
View file @
af6c518e
...
...
@@ -265,7 +265,7 @@ static void parse_complete(HTMLDocumentObj *doc)
call_explorer_69
(
doc
);
if
(
doc
->
view_sink
)
IAdviseSink_OnViewChange
(
doc
->
view_sink
,
DVASPECT_CONTENT
,
-
1
);
call_property_onchanged
(
&
doc
->
basedoc
.
cp_
propnotif
,
1005
);
call_property_onchanged
(
&
doc
->
basedoc
.
cp_
container
,
1005
);
call_explorer_69
(
doc
);
if
(
doc
->
is_webbrowser
&&
doc
->
usermode
!=
EDITMODE
&&
!
(
doc
->
basedoc
.
window
->
load_flags
&
BINDING_REFRESH
))
...
...
dlls/mshtml/persist.c
View file @
af6c518e
...
...
@@ -413,7 +413,7 @@ void set_ready_state(HTMLOuterWindow *window, READYSTATE readystate)
window
->
readystate
=
readystate
;
if
(
window
->
doc_obj
&&
window
->
doc_obj
->
basedoc
.
window
==
window
)
call_property_onchanged
(
&
window
->
doc_obj
->
basedoc
.
cp_
propnotif
,
DISPID_READYSTATE
);
call_property_onchanged
(
&
window
->
doc_obj
->
basedoc
.
cp_
container
,
DISPID_READYSTATE
);
fire_event
(
window
->
base
.
inner_window
->
doc
,
EVENTID_READYSTATECHANGE
,
FALSE
,
window
->
base
.
inner_window
->
doc
->
node
.
nsnode
,
NULL
,
NULL
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment