shell32: Implement IExplorerBrowser::SetRect.
This commit is contained in:
parent
e4e62e707a
commit
bee7d4b7e3
|
@ -191,9 +191,21 @@ static HRESULT WINAPI IExplorerBrowser_fnSetRect(IExplorerBrowser *iface,
|
||||||
HDWP *phdwp, RECT rcBrowser)
|
HDWP *phdwp, RECT rcBrowser)
|
||||||
{
|
{
|
||||||
ExplorerBrowserImpl *This = (ExplorerBrowserImpl*)iface;
|
ExplorerBrowserImpl *This = (ExplorerBrowserImpl*)iface;
|
||||||
FIXME("stub, %p (%p, %s)\n", This, phdwp, wine_dbgstr_rect(&rcBrowser));
|
TRACE("%p (%p, %s)\n", This, phdwp, wine_dbgstr_rect(&rcBrowser));
|
||||||
|
|
||||||
return E_NOTIMPL;
|
if(phdwp)
|
||||||
|
{
|
||||||
|
*phdwp = DeferWindowPos(*phdwp, This->hwnd_main, NULL, rcBrowser.left, rcBrowser.top,
|
||||||
|
rcBrowser.right - rcBrowser.left, rcBrowser.bottom - rcBrowser.top,
|
||||||
|
SWP_NOZORDER | SWP_NOACTIVATE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MoveWindow(This->hwnd_main, rcBrowser.left, rcBrowser.top,
|
||||||
|
rcBrowser.right - rcBrowser.left, rcBrowser.bottom - rcBrowser.top, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI IExplorerBrowser_fnSetPropertyBag(IExplorerBrowser *iface,
|
static HRESULT WINAPI IExplorerBrowser_fnSetPropertyBag(IExplorerBrowser *iface,
|
||||||
|
|
|
@ -37,6 +37,13 @@ static HRESULT ebrowser_instantiate(IExplorerBrowser **peb)
|
||||||
&IID_IExplorerBrowser, (void**)peb);
|
&IID_IExplorerBrowser, (void**)peb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static HRESULT ebrowser_initialize(IExplorerBrowser *peb)
|
||||||
|
{
|
||||||
|
RECT rc;
|
||||||
|
rc.top = rc.left = 0; rc.bottom = rc.right = 500;
|
||||||
|
return IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static void test_QueryInterface(void)
|
static void test_QueryInterface(void)
|
||||||
{
|
{
|
||||||
IExplorerBrowser *peb;
|
IExplorerBrowser *peb;
|
||||||
|
@ -265,6 +272,70 @@ static void test_initialization(void)
|
||||||
ok(lres == 0, "Got refcount %d\n", lres);
|
ok(lres == 0, "Got refcount %d\n", lres);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_basics(void)
|
||||||
|
{
|
||||||
|
IExplorerBrowser *peb;
|
||||||
|
IShellBrowser *psb;
|
||||||
|
ULONG lres;
|
||||||
|
HDWP hdwp;
|
||||||
|
RECT rc;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
ebrowser_instantiate(&peb);
|
||||||
|
ebrowser_initialize(peb);
|
||||||
|
|
||||||
|
/* SetRect */
|
||||||
|
rc.left = 0; rc.top = 0; rc.right = 0; rc.bottom = 0;
|
||||||
|
hr = IExplorerBrowser_SetRect(peb, NULL, rc);
|
||||||
|
ok(hr == S_OK, "got (0x%08x)\n", hr);
|
||||||
|
|
||||||
|
rc.left = 100; rc.top = 100; rc.right = 10; rc.bottom = 10;
|
||||||
|
hr = IExplorerBrowser_SetRect(peb, NULL, rc);
|
||||||
|
ok(hr == S_OK, "got (0x%08x)\n", hr);
|
||||||
|
|
||||||
|
/* SetRect with DeferWindowPos */
|
||||||
|
rc.left = rc.top = 0; rc.right = rc.bottom = 10;
|
||||||
|
hdwp = BeginDeferWindowPos(1);
|
||||||
|
hr = IExplorerBrowser_SetRect(peb, &hdwp, rc);
|
||||||
|
ok(hr == S_OK, "got (0x%08x)\n", hr);
|
||||||
|
lres = EndDeferWindowPos(hdwp);
|
||||||
|
ok(lres, "EndDeferWindowPos failed.\n");
|
||||||
|
|
||||||
|
hdwp = NULL;
|
||||||
|
hr = IExplorerBrowser_SetRect(peb, &hdwp, rc);
|
||||||
|
ok(hr == S_OK, "got (0x%08x)\n", hr);
|
||||||
|
ok(hdwp == NULL, "got %p\n", hdwp);
|
||||||
|
lres = EndDeferWindowPos(hdwp);
|
||||||
|
ok(!lres, "EndDeferWindowPos succeeded unexpectedly.\n");
|
||||||
|
|
||||||
|
/* Test positioning */
|
||||||
|
rc.left = 10; rc.top = 20; rc.right = 50; rc.bottom = 50;
|
||||||
|
hr = IExplorerBrowser_SetRect(peb, NULL, rc);
|
||||||
|
ok(hr == S_OK, "got (0x%08x)\n", hr);
|
||||||
|
hr = IExplorerBrowser_QueryInterface(peb, &IID_IShellBrowser, (void**)&psb);
|
||||||
|
ok(hr == S_OK, "Got 0x%08x\n", hr);
|
||||||
|
if(SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
HWND eb_hwnd;
|
||||||
|
RECT eb_rc;
|
||||||
|
static const RECT exp_rc = {11, 21, 49, 49};
|
||||||
|
|
||||||
|
hr = IShellBrowser_GetWindow(psb, &eb_hwnd);
|
||||||
|
ok(hr == S_OK, "Got 0x%08x\n", hr);
|
||||||
|
|
||||||
|
GetClientRect(eb_hwnd, &eb_rc);
|
||||||
|
MapWindowPoints(eb_hwnd, hwnd, (POINT*)&eb_rc, 2);
|
||||||
|
ok(EqualRect(&eb_rc, &exp_rc), "Got rect (%d, %d) - (%d, %d)\n",
|
||||||
|
eb_rc.left, eb_rc.top, eb_rc.right, eb_rc.bottom);
|
||||||
|
|
||||||
|
IShellBrowser_Release(psb);
|
||||||
|
}
|
||||||
|
|
||||||
|
IExplorerBrowser_Destroy(peb);
|
||||||
|
lres = IExplorerBrowser_Release(peb);
|
||||||
|
ok(lres == 0, "Got %d\n", lres);
|
||||||
|
}
|
||||||
|
|
||||||
static BOOL test_instantiate_control(void)
|
static BOOL test_instantiate_control(void)
|
||||||
{
|
{
|
||||||
IExplorerBrowser *peb;
|
IExplorerBrowser *peb;
|
||||||
|
@ -310,6 +381,7 @@ START_TEST(ebrowser)
|
||||||
test_QueryInterface();
|
test_QueryInterface();
|
||||||
test_SB_misc();
|
test_SB_misc();
|
||||||
test_initialization();
|
test_initialization();
|
||||||
|
test_basics();
|
||||||
|
|
||||||
DestroyWindow(hwnd);
|
DestroyWindow(hwnd);
|
||||||
OleUninitialize();
|
OleUninitialize();
|
||||||
|
|
Loading…
Reference in New Issue