David Hedberg : shell32: Fix ExplorerBrowser:: SetRect to work properly when passed a NULL-valued hdwp.
Alexandre Julliard
julliard at winehq.org
Mon Dec 20 17:49:49 CST 2010
Module: wine
Branch: master
Commit: f6dad197304b2771d56470a6e3d39063c487a557
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f6dad197304b2771d56470a6e3d39063c487a557
Author: David Hedberg <david.hedberg at gmail.com>
Date: Sun Dec 19 22:07:12 2010 +0100
shell32: Fix ExplorerBrowser::SetRect to work properly when passed a NULL-valued hdwp.
---
dlls/shell32/ebrowser.c | 4 +++-
dlls/shell32/tests/ebrowser.c | 19 +++++++++++++++++++
2 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/dlls/shell32/ebrowser.c b/dlls/shell32/ebrowser.c
index 87ff578..e6d1165 100644
--- a/dlls/shell32/ebrowser.c
+++ b/dlls/shell32/ebrowser.c
@@ -908,11 +908,13 @@ static HRESULT WINAPI IExplorerBrowser_fnSetRect(IExplorerBrowser *iface,
ExplorerBrowserImpl *This = (ExplorerBrowserImpl*)iface;
TRACE("%p (%p, %s)\n", This, phdwp, wine_dbgstr_rect(&rcBrowser));
- if(phdwp)
+ if(phdwp && *phdwp)
{
*phdwp = DeferWindowPos(*phdwp, This->hwnd_main, NULL, rcBrowser.left, rcBrowser.top,
rcBrowser.right - rcBrowser.left, rcBrowser.bottom - rcBrowser.top,
SWP_NOZORDER | SWP_NOACTIVATE);
+ if(!*phdwp)
+ return E_FAIL;
}
else
{
diff --git a/dlls/shell32/tests/ebrowser.c b/dlls/shell32/tests/ebrowser.c
index faaf6c7..99368d0 100644
--- a/dlls/shell32/tests/ebrowser.c
+++ b/dlls/shell32/tests/ebrowser.c
@@ -1076,6 +1076,7 @@ static void test_basics(void)
HWND eb_hwnd;
RECT eb_rc;
static const RECT exp_rc = {11, 21, 49, 49};
+ static const RECT exp_rc2 = {11, 21, 49, 24};
hr = IShellBrowser_GetWindow(psb, &eb_hwnd);
ok(hr == S_OK, "Got 0x%08x\n", hr);
@@ -1085,6 +1086,24 @@ static void test_basics(void)
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);
+ /* Try resizing with invalid hdwp */
+ rc.bottom = 25;
+ hdwp = (HDWP)0xdeadbeef;
+ hr = IExplorerBrowser_SetRect(peb, &hdwp, rc);
+ ok(hr == E_FAIL, "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);
+
+ hdwp = NULL;
+ hr = IExplorerBrowser_SetRect(peb, &hdwp, rc);
+ 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_rc2), "Got rect (%d, %d) - (%d, %d)\n",
+ eb_rc.left, eb_rc.top, eb_rc.right, eb_rc.bottom);
+
IShellBrowser_Release(psb);
}
More information about the wine-cvs
mailing list