Jacek Caban : msscript: Reimplement state property using embedded script engine state.
Alexandre Julliard
julliard at winehq.org
Fri Jun 12 16:01:18 CDT 2020
Module: wine
Branch: master
Commit: 197e226e97747c5f34a387d4a76f281a46d5c255
URL: https://source.winehq.org/git/wine.git/?a=commit;h=197e226e97747c5f34a387d4a76f281a46d5c255
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Jun 12 17:11:25 2020 +0200
msscript: Reimplement state property using embedded script engine state.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/msscript.ocx/msscript.c | 27 +++++++++++++++++++++------
1 file changed, 21 insertions(+), 6 deletions(-)
diff --git a/dlls/msscript.ocx/msscript.c b/dlls/msscript.ocx/msscript.c
index 2d0239a4d8..35554ff123 100644
--- a/dlls/msscript.ocx/msscript.c
+++ b/dlls/msscript.ocx/msscript.c
@@ -100,7 +100,6 @@ struct ScriptControl {
LONG timeout;
VARIANT_BOOL allow_ui;
VARIANT_BOOL use_safe_subset;
- ScriptControlStates state;
/* connection points */
ConnectionPoint *cp_list;
@@ -242,7 +241,7 @@ static HRESULT start_script(struct ScriptControl *control)
{
HRESULT hr = S_OK;
- if (!control->host || control->state != Initialized)
+ if (!control->host)
return E_FAIL;
if (control->host->script_state != SCRIPTSTATE_STARTED)
@@ -1196,6 +1195,9 @@ static HRESULT WINAPI ScriptControl_put_Language(IScriptControl *iface, BSTR lan
static HRESULT WINAPI ScriptControl_get_State(IScriptControl *iface, ScriptControlStates *p)
{
ScriptControl *This = impl_from_IScriptControl(iface);
+ SCRIPTSTATE state;
+ HRESULT hres;
+
TRACE("(%p)->(%p)\n", This, p);
if(!p)
@@ -1204,7 +1206,22 @@ static HRESULT WINAPI ScriptControl_get_State(IScriptControl *iface, ScriptContr
if(!This->host)
return E_FAIL;
- *p = This->state;
+ hres = IActiveScript_GetScriptState(This->host->script, &state);
+ if (FAILED(hres)) return hres;
+
+ switch (state)
+ {
+ case SCRIPTSTATE_INITIALIZED:
+ case SCRIPTSTATE_STARTED:
+ *p = Initialized;
+ break;
+ case SCRIPTSTATE_CONNECTED:
+ *p = Connected;
+ break;
+ default:
+ WARN("unexpected state %d\n", state);
+ return E_FAIL;
+ }
return S_OK;
}
@@ -1219,8 +1236,7 @@ static HRESULT WINAPI ScriptControl_put_State(IScriptControl *iface, ScriptContr
if(state != Initialized && state != Connected)
return CTL_E_INVALIDPROPERTYVALUE;
- This->state = state;
- return S_OK;
+ return IActiveScript_SetScriptState(This->host->script, state == Connected ? SCRIPTSTATE_CONNECTED : SCRIPTSTATE_STARTED);
}
static HRESULT WINAPI ScriptControl_put_SitehWnd(IScriptControl *iface, LONG hwnd)
@@ -2433,7 +2449,6 @@ static HRESULT WINAPI ScriptControl_CreateInstance(IClassFactory *iface, IUnknow
script_control->timeout = 10000;
script_control->allow_ui = VARIANT_TRUE;
script_control->use_safe_subset = VARIANT_FALSE;
- script_control->state = Initialized;
ConnectionPoint_Init(&script_control->cp_scsource, script_control, &DIID_DScriptControlSource);
ConnectionPoint_Init(&script_control->cp_propnotif, script_control, &IID_IPropertyNotifySink);
More information about the wine-cvs
mailing list