mirror of
git://source.winehq.org/git/wine.git
synced 2024-11-01 08:13:18 +00:00
mshtml: Call IDocHostUIHandler_HideUI and IDocHostUIHandler_ShowUI when changing an UI active window to be in edit mode.
Add tests for the behaviour of changing edit mode when a UI window is active.
This commit is contained in:
parent
9a67e1ffe5
commit
bbb03cf16b
4 changed files with 79 additions and 6 deletions
|
@ -34,6 +34,7 @@
|
|||
#include "wine/unicode.h"
|
||||
|
||||
#include "mshtml_private.h"
|
||||
#include "resource.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
|
||||
|
||||
|
@ -570,6 +571,34 @@ void handle_edit_event(HTMLDocument *This, nsIDOMEvent *event)
|
|||
nsIDOMKeyEvent_Release(key_event);
|
||||
}
|
||||
|
||||
void handle_edit_load(HTMLDocument *This)
|
||||
{
|
||||
This->nscontainer->editor_controller = get_editor_controller(This->nscontainer);
|
||||
|
||||
if(This->ui_active) {
|
||||
OLECHAR wszHTMLDocument[30];
|
||||
RECT rcBorderWidths;
|
||||
|
||||
if(This->ip_window)
|
||||
IOleInPlaceUIWindow_SetActiveObject(This->ip_window, NULL, NULL);
|
||||
if(This->hostui)
|
||||
IDocHostUIHandler_HideUI(This->hostui);
|
||||
|
||||
if(This->hostui)
|
||||
IDocHostUIHandler_ShowUI(This->hostui, DOCHOSTUITYPE_AUTHOR, ACTOBJ(This), CMDTARGET(This),
|
||||
This->frame, This->ip_window);
|
||||
|
||||
LoadStringW(hInst, IDS_HTMLDOCUMENT, wszHTMLDocument,
|
||||
sizeof(wszHTMLDocument)/sizeof(WCHAR));
|
||||
|
||||
if(This->ip_window)
|
||||
IOleInPlaceUIWindow_SetActiveObject(This->ip_window, ACTOBJ(This), wszHTMLDocument);
|
||||
|
||||
memset(&rcBorderWidths, 0, sizeof(rcBorderWidths));
|
||||
IOleInPlaceFrame_SetBorderSpace(This->frame, &rcBorderWidths);
|
||||
}
|
||||
}
|
||||
|
||||
static void set_ns_fontname(NSContainer *This, const char *fontname)
|
||||
{
|
||||
nsICommandParams *nsparam = create_nscommand_params();
|
||||
|
|
|
@ -442,6 +442,7 @@ void handle_edit_event(HTMLDocument*,nsIDOMEvent*);
|
|||
HRESULT editor_exec_copy(HTMLDocument*,DWORD,VARIANT*,VARIANT*);
|
||||
HRESULT editor_exec_cut(HTMLDocument*,DWORD,VARIANT*,VARIANT*);
|
||||
HRESULT editor_exec_paste(HTMLDocument*,DWORD,VARIANT*,VARIANT*);
|
||||
void handle_edit_load(HTMLDocument *This);
|
||||
|
||||
extern DWORD mshtml_tls;
|
||||
|
||||
|
|
|
@ -142,7 +142,7 @@ static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event
|
|||
}
|
||||
|
||||
if(This->doc->usermode == EDITMODE)
|
||||
This->editor_controller = get_editor_controller(This);
|
||||
handle_edit_load(This->doc);
|
||||
|
||||
task = mshtml_alloc(sizeof(task_t));
|
||||
|
||||
|
|
|
@ -130,7 +130,7 @@ DEFINE_EXPECT(InPlaceUIWindow_SetActiveObject);
|
|||
|
||||
static IUnknown *doc_unk;
|
||||
static BOOL expect_LockContainer_fLock;
|
||||
static BOOL expect_SetActiveObject_active, expect_InPlaceUIWindow_SetActiveObject_active;
|
||||
static BOOL expect_SetActiveObject_active, expect_InPlaceUIWindow_SetActiveObject_active = TRUE;
|
||||
static BOOL ipsex;
|
||||
static BOOL set_clientsite = FALSE, container_locked = FALSE;
|
||||
static BOOL readystate_set_loading = FALSE, load_from_stream;
|
||||
|
@ -1139,6 +1139,7 @@ static HRESULT WINAPI InPlaceUIWindow_SetActiveObject(IOleInPlaceFrame *iface,
|
|||
ok(pActiveObject == NULL, "pActiveObject=%p, expected NULL\n", pActiveObject);
|
||||
ok(pszObjName == NULL, "pszObjName=%p, expected NULL\n", pszObjName);
|
||||
}
|
||||
expect_InPlaceUIWindow_SetActiveObject_active = !expect_InPlaceUIWindow_SetActiveObject_active;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
@ -1778,7 +1779,10 @@ static HRESULT WINAPI DocHostUIHandler_ShowUI(IDocHostUIHandler2 *iface, DWORD d
|
|||
{
|
||||
CHECK_EXPECT(ShowUI);
|
||||
|
||||
ok(dwID == DOCHOSTUITYPE_BROWSE, "dwID=%d, expected DOCHOSTUITYPE_BROWSE\n", dwID);
|
||||
if (editmode)
|
||||
ok(dwID == DOCHOSTUITYPE_AUTHOR, "dwID=%d, expected DOCHOSTUITYPE_AUTHOR\n", dwID);
|
||||
else
|
||||
ok(dwID == DOCHOSTUITYPE_BROWSE, "dwID=%d, expected DOCHOSTUITYPE_BROWSE\n", dwID);
|
||||
ok(pActiveObject != NULL, "pActiveObject = NULL\n");
|
||||
ok(pCommandTarget != NULL, "pCommandTarget = NULL\n");
|
||||
ok(pFrame == &InPlaceFrame, "pFrame=%p, expected %p\n", pFrame, &InPlaceFrame);
|
||||
|
@ -2862,6 +2866,10 @@ static void test_exec_editmode(IUnknown *unk)
|
|||
SET_EXPECT(Invoke_AMBIENT_SILENT);
|
||||
SET_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
|
||||
SET_EXPECT(OnChanged_READYSTATE);
|
||||
SET_EXPECT(InPlaceUIWindow_SetActiveObject);
|
||||
SET_EXPECT(HideUI);
|
||||
SET_EXPECT(ShowUI);
|
||||
SET_EXPECT(InPlaceFrame_SetBorderSpace);
|
||||
expect_status_text = NULL;
|
||||
readystate_set_loading = TRUE;
|
||||
|
||||
|
@ -2875,6 +2883,10 @@ static void test_exec_editmode(IUnknown *unk)
|
|||
CHECK_CALLED(Invoke_AMBIENT_SILENT);
|
||||
CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
|
||||
CHECK_CALLED(OnChanged_READYSTATE);
|
||||
CHECK_CALLED(InPlaceUIWindow_SetActiveObject);
|
||||
CHECK_CALLED(HideUI);
|
||||
CHECK_CALLED(ShowUI);
|
||||
CHECK_CALLED(InPlaceFrame_SetBorderSpace);
|
||||
|
||||
test_timer(EXPECT_UPDATEUI|EXPECT_SETTITLE);
|
||||
|
||||
|
@ -3300,7 +3312,6 @@ static HRESULT test_Activate(IUnknown *unk, DWORD flags)
|
|||
SET_EXPECT(ShowUI);
|
||||
SET_EXPECT(InPlaceUIWindow_SetActiveObject);
|
||||
SET_EXPECT(InPlaceFrame_SetBorderSpace);
|
||||
expect_InPlaceUIWindow_SetActiveObject_active = TRUE;
|
||||
expect_SetActiveObject_active = TRUE;
|
||||
expect_status_text = NULL;
|
||||
|
||||
|
@ -3383,7 +3394,6 @@ static void test_UIDeactivate(void)
|
|||
}
|
||||
|
||||
expect_SetActiveObject_active = FALSE;
|
||||
expect_InPlaceUIWindow_SetActiveObject_active = FALSE;
|
||||
hres = IOleDocumentView_UIActivate(view, FALSE);
|
||||
ok(hres == S_OK, "UIActivate failed: %08x\n", hres);
|
||||
|
||||
|
@ -3686,6 +3696,34 @@ static void test_HTMLDocument_StreamLoad(void)
|
|||
ok(ref == 0, "ref=%d, expected 0\n", ref);
|
||||
}
|
||||
|
||||
static void test_edit_uiactivate(IOleObject *oleobj)
|
||||
{
|
||||
IOleDocumentView *docview;
|
||||
HRESULT hres;
|
||||
|
||||
hres = IOleObject_QueryInterface(oleobj, &IID_IOleDocumentView, (void **)&docview);
|
||||
ok(hres == S_OK, "IOleObject_QueryInterface failed with error 0x%08x\n", hres);
|
||||
|
||||
SET_EXPECT(OnFocus_TRUE);
|
||||
SET_EXPECT(SetActiveObject);
|
||||
SET_EXPECT(ShowUI);
|
||||
SET_EXPECT(InPlaceUIWindow_SetActiveObject);
|
||||
SET_EXPECT(InPlaceFrame_SetBorderSpace);
|
||||
expect_SetActiveObject_active = TRUE;
|
||||
expect_status_text = NULL;
|
||||
|
||||
hres = IOleDocumentView_UIActivate(docview, TRUE);
|
||||
ok(hres == S_OK, "IOleDocumentView_UIActivate failed with error 0x%08x\n", hres);
|
||||
|
||||
CHECK_CALLED(OnFocus_TRUE);
|
||||
CHECK_CALLED(SetActiveObject);
|
||||
CHECK_CALLED(ShowUI);
|
||||
CHECK_CALLED(InPlaceUIWindow_SetActiveObject);
|
||||
CHECK_CALLED(InPlaceFrame_SetBorderSpace);
|
||||
|
||||
IOleDocumentView_Release(docview);
|
||||
}
|
||||
|
||||
static void test_editing_mode(void)
|
||||
{
|
||||
IUnknown *unk;
|
||||
|
@ -3696,6 +3734,7 @@ static void test_editing_mode(void)
|
|||
trace("Testing HTMLDocument (edit)...\n");
|
||||
|
||||
init_test(LD_DOLOAD);
|
||||
call_UIActivate = CallUIActivate_AfterShow;
|
||||
|
||||
hres = create_document(&unk);
|
||||
if(FAILED(hres))
|
||||
|
@ -3709,11 +3748,15 @@ static void test_editing_mode(void)
|
|||
test_ConnectionPointContainer(unk);
|
||||
test_ClientSite(oleobj, CLIENTSITE_EXPECTPATH);
|
||||
test_DoVerb(oleobj);
|
||||
test_edit_uiactivate(oleobj);
|
||||
|
||||
test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED);
|
||||
|
||||
test_exec_editmode(unk);
|
||||
test_UIDeactivate();
|
||||
call_UIActivate = CallUIActivate_None;
|
||||
IOleObject_Release(oleobj);
|
||||
|
||||
test_exec_editmode(unk);
|
||||
test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED);
|
||||
test_download(TRUE, FALSE);
|
||||
test_timer(EXPECT_UPDATEUI);
|
||||
|
|
Loading…
Reference in a new issue