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
e5c0759c
Commit
e5c0759c
authored
Oct 18, 2017
by
Jacek Caban
Committed by
Alexandre Julliard
Oct 18, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mshtml: Use separated struct for event target vtbl.
Signed-off-by:
Jacek Caban
<
jacek@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
9a5e0bdb
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
46 additions
and
40 deletions
+46
-40
dispex.c
dlls/mshtml/dispex.c
+1
-1
htmldoc.c
dlls/mshtml/htmldoc.c
+10
-8
htmlelem.c
dlls/mshtml/htmlelem.c
+12
-10
htmlevent.c
dlls/mshtml/htmlevent.c
+1
-1
htmlevent.h
dlls/mshtml/htmlevent.h
+6
-0
htmlwindow.c
dlls/mshtml/htmlwindow.c
+11
-9
mshtml_private.h
dlls/mshtml/mshtml_private.h
+1
-3
xmlhttprequest.c
dlls/mshtml/xmlhttprequest.c
+4
-8
No files found.
dlls/mshtml/dispex.c
View file @
e5c0759c
...
...
@@ -1767,7 +1767,7 @@ void dispex_unlink(DispatchEx *This)
}
}
const
dispex_static_data_vtbl_t
*
dispex_get_vtbl
(
DispatchEx
*
dispex
)
const
void
*
dispex_get_vtbl
(
DispatchEx
*
dispex
)
{
return
dispex
->
info
->
desc
->
vtbl
;
}
...
...
dlls/mshtml/htmldoc.c
View file @
e5c0759c
...
...
@@ -5024,18 +5024,20 @@ static compat_mode_t HTMLDocumentNode_get_compat_mode(DispatchEx *dispex)
return
This
->
document_mode
;
}
static
void
HTMLDocumentNode_bind_event
(
DispatchEx
*
dispex
,
in
t
eid
)
static
void
HTMLDocumentNode_bind_event
(
DispatchEx
*
dispex
,
eventid_
t
eid
)
{
HTMLDocumentNode
*
This
=
impl_from_DispatchEx
(
dispex
);
ensure_doc_nsevent_handler
(
This
,
eid
);
}
static
const
dispex_static_data_vtbl_t
HTMLDocumentNode_dispex_vtbl
=
{
NULL
,
NULL
,
HTMLDocumentNode_invoke
,
HTMLDocumentNode_get_compat_mode
,
NULL
,
static
const
event_target_vtbl_t
HTMLDocumentNode_event_target_vtbl
=
{
{
NULL
,
NULL
,
HTMLDocumentNode_invoke
,
HTMLDocumentNode_get_compat_mode
,
NULL
},
HTMLDocumentNode_bind_event
};
...
...
@@ -5076,7 +5078,7 @@ static void HTMLDocumentNode_init_dispex_info(dispex_data_t *info, compat_mode_t
}
static
dispex_static_data_t
HTMLDocumentNode_dispex
=
{
&
HTMLDocumentNode_dispex_vtbl
,
&
HTMLDocumentNode_
event_target_vtbl
.
dispex_vtbl
,
DispHTMLDocument_tid
,
HTMLDocumentNode_iface_tids
,
HTMLDocumentNode_init_dispex_info
...
...
dlls/mshtml/htmlelem.c
View file @
e5c0759c
...
...
@@ -5332,7 +5332,7 @@ static HRESULT HTMLElement_populate_props(DispatchEx *dispex)
return
S_OK
;
}
static
void
HTMLElement_bind_event
(
DispatchEx
*
dispex
,
in
t
eid
)
static
void
HTMLElement_bind_event
(
DispatchEx
*
dispex
,
eventid_
t
eid
)
{
HTMLElement
*
This
=
impl_from_DispatchEx
(
dispex
);
...
...
@@ -5343,7 +5343,7 @@ static void HTMLElement_bind_event(DispatchEx *dispex, int eid)
add_nsevent_listener
(
This
->
node
.
doc
,
This
->
node
.
nsnode
,
loadW
);
return
;
default:
dispex_get_vtbl
(
&
This
->
node
.
doc
->
node
.
event_target
.
dispex
)
->
bind_event
(
&
This
->
node
.
doc
->
node
.
event_target
.
dispex
,
eid
);
ensure_doc_nsevent_handler
(
This
->
node
.
doc
,
eid
);
}
}
...
...
@@ -5369,17 +5369,19 @@ static const tid_t HTMLElement_iface_tids[] = {
0
};
static
dispex_static_data_vtbl_t
HTMLElement_dispex_vtbl
=
{
NULL
,
HTMLElement_get_dispid
,
HTMLElement_invoke
,
NULL
,
HTMLElement_populate_props
,
static
event_target_vtbl_t
HTMLElement_event_target_vtbl
=
{
{
NULL
,
HTMLElement_get_dispid
,
HTMLElement_invoke
,
NULL
,
HTMLElement_populate_props
},
HTMLElement_bind_event
};
static
dispex_static_data_t
HTMLElement_dispex
=
{
&
HTMLElement_dispex_vtbl
,
&
HTMLElement_
event_target_vtbl
.
dispex_vtbl
,
DispHTMLUnknownElement_tid
,
HTMLElement_iface_tids
,
HTMLElement_init_dispex_info
...
...
@@ -5398,7 +5400,7 @@ void HTMLElement_Init(HTMLElement *This, HTMLDocumentNode *doc, nsIDOMHTMLElemen
This
->
IProvideMultipleClassInfo_iface
.
lpVtbl
=
&
ProvideMultipleClassInfoVtbl
;
if
(
dispex_data
&&
!
dispex_data
->
vtbl
)
dispex_data
->
vtbl
=
&
HTMLElement_dispex_vtbl
;
dispex_data
->
vtbl
=
&
HTMLElement_
event_target_vtbl
.
dispex_vtbl
;
if
(
nselem
)
{
HTMLDOMNode_Init
(
doc
,
&
This
->
node
,
(
nsIDOMNode
*
)
nselem
,
dispex_data
?
dispex_data
:
&
HTMLElement_dispex
);
...
...
dlls/mshtml/htmlevent.c
View file @
e5c0759c
...
...
@@ -843,7 +843,7 @@ HRESULT create_event_obj(IHTMLEventObj **ret)
static
handler_vector_t
*
get_handler_vector
(
EventTarget
*
event_target
,
eventid_t
eid
,
BOOL
alloc
)
{
const
dispex_static_data
_vtbl_t
*
vtbl
;
const
event_target
_vtbl_t
*
vtbl
;
handler_vector_t
*
handler_vector
;
struct
wine_rb_entry
*
entry
;
...
...
dlls/mshtml/htmlevent.h
View file @
e5c0759c
...
...
@@ -79,6 +79,12 @@ void release_nsevents(HTMLDocumentNode*) DECLSPEC_HIDDEN;
void
add_nsevent_listener
(
HTMLDocumentNode
*
,
nsIDOMNode
*
,
LPCWSTR
)
DECLSPEC_HIDDEN
;
void
detach_nsevent
(
HTMLDocumentNode
*
,
const
WCHAR
*
)
DECLSPEC_HIDDEN
;
/* We extend dispex vtbl for EventTarget functions to avoid separated vtbl. */
typedef
struct
{
dispex_static_data_vtbl_t
dispex_vtbl
;
void
(
*
bind_event
)(
DispatchEx
*
,
eventid_t
);
}
event_target_vtbl_t
;
static
inline
EventTarget
*
get_node_event_prop_target
(
HTMLDOMNode
*
node
,
eventid_t
eid
)
{
return
node
->
vtbl
->
get_event_prop_target
?
node
->
vtbl
->
get_event_prop_target
(
node
,
eid
)
:
&
node
->
event_target
;
...
...
dlls/mshtml/htmlwindow.c
View file @
e5c0759c
...
...
@@ -2995,10 +2995,10 @@ static HRESULT HTMLWindow_invoke(DispatchEx *dispex, DISPID id, LCID lcid, WORD
return
hres
;
}
static
void
HTMLWindow_bind_event
(
DispatchEx
*
dispex
,
in
t
eid
)
static
void
HTMLWindow_bind_event
(
DispatchEx
*
dispex
,
eventid_
t
eid
)
{
HTMLInnerWindow
*
This
=
impl_from_DispatchEx
(
dispex
);
dispex_get_vtbl
(
&
This
->
doc
->
node
.
event_target
.
dispex
)
->
bind_event
(
&
This
->
doc
->
node
.
event_target
.
dispex
,
eid
);
ensure_doc_nsevent_handler
(
This
->
doc
,
eid
);
}
static
void
HTMLWindow_init_dispex_info
(
dispex_data_t
*
info
,
compat_mode_t
compat_mode
)
...
...
@@ -3006,12 +3006,14 @@ static void HTMLWindow_init_dispex_info(dispex_data_t *info, compat_mode_t compa
dispex_info_add_interface
(
info
,
IHTMLWindow5_tid
,
NULL
);
}
static
const
dispex_static_data_vtbl_t
HTMLWindow_dispex_vtbl
=
{
NULL
,
NULL
,
HTMLWindow_invoke
,
NULL
,
NULL
,
static
const
event_target_vtbl_t
HTMLWindow_event_target_vtbl
=
{
{
NULL
,
NULL
,
HTMLWindow_invoke
,
NULL
,
NULL
},
HTMLWindow_bind_event
};
...
...
@@ -3024,7 +3026,7 @@ static const tid_t HTMLWindow_iface_tids[] = {
};
static
dispex_static_data_t
HTMLWindow_dispex
=
{
&
HTMLWindow_dispex_vtbl
,
&
HTMLWindow_
event_target_vtbl
.
dispex_vtbl
,
DispHTMLWindow2_tid
,
HTMLWindow_iface_tids
,
HTMLWindow_init_dispex_info
...
...
dlls/mshtml/mshtml_private.h
View file @
e5c0759c
...
...
@@ -270,8 +270,6 @@ typedef struct {
HRESULT
(
*
invoke
)(
DispatchEx
*
,
DISPID
,
LCID
,
WORD
,
DISPPARAMS
*
,
VARIANT
*
,
EXCEPINFO
*
,
IServiceProvider
*
);
compat_mode_t
(
*
get_compat_mode
)(
DispatchEx
*
);
HRESULT
(
*
populate_props
)(
DispatchEx
*
);
/* We abuse this vtbl for EventTarget functions to avoid separated vtbl. */
void
(
*
bind_event
)(
DispatchEx
*
,
int
);
}
dispex_static_data_vtbl_t
;
typedef
struct
{
...
...
@@ -330,7 +328,7 @@ void dispex_traverse(DispatchEx*,nsCycleCollectionTraversalCallback*) DECLSPEC_H
void
dispex_unlink
(
DispatchEx
*
)
DECLSPEC_HIDDEN
;
void
release_typelib
(
void
)
DECLSPEC_HIDDEN
;
HRESULT
get_class_typeinfo
(
const
CLSID
*
,
ITypeInfo
**
)
DECLSPEC_HIDDEN
;
const
dispex_static_data_vtbl_t
*
dispex_get_vtbl
(
DispatchEx
*
)
DECLSPEC_HIDDEN
;
const
void
*
dispex_get_vtbl
(
DispatchEx
*
)
DECLSPEC_HIDDEN
;
void
dispex_info_add_interface
(
dispex_data_t
*
,
tid_t
,
const
DISPID
*
)
DECLSPEC_HIDDEN
;
compat_mode_t
dispex_compat_mode
(
DispatchEx
*
)
DECLSPEC_HIDDEN
;
...
...
dlls/mshtml/xmlhttprequest.c
View file @
e5c0759c
...
...
@@ -733,7 +733,7 @@ static inline HTMLXMLHttpRequest *impl_from_DispatchEx(DispatchEx *iface)
return
CONTAINING_RECORD
(
iface
,
HTMLXMLHttpRequest
,
event_target
.
dispex
);
}
static
void
HTMLXMLHttpRequest_bind_event
(
DispatchEx
*
dispex
,
in
t
eid
)
static
void
HTMLXMLHttpRequest_bind_event
(
DispatchEx
*
dispex
,
eventid_
t
eid
)
{
HTMLXMLHttpRequest
*
This
=
impl_from_DispatchEx
(
dispex
);
nsIDOMEventTarget
*
nstarget
;
...
...
@@ -768,12 +768,8 @@ static void HTMLXMLHttpRequest_bind_event(DispatchEx *dispex, int eid)
ERR
(
"AddEventListener failed: %08x
\n
"
,
nsres
);
}
static
dispex_static_data_vtbl_t
HTMLXMLHttpRequest_dispex_vtbl
=
{
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
static
event_target_vtbl_t
HTMLXMLHttpRequest_event_target_vtbl
=
{
{
NULL
},
HTMLXMLHttpRequest_bind_event
};
...
...
@@ -782,7 +778,7 @@ static const tid_t HTMLXMLHttpRequest_iface_tids[] = {
0
};
static
dispex_static_data_t
HTMLXMLHttpRequest_dispex
=
{
&
HTMLXMLHttpRequest_dispex_vtbl
,
&
HTMLXMLHttpRequest_
event_target_vtbl
.
dispex_vtbl
,
DispHTMLXMLHttpRequest_tid
,
HTMLXMLHttpRequest_iface_tids
};
...
...
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