Module: wine Branch: master Commit: e46c32ab46029492c28534b5a7adeb5f81ff7b30 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e46c32ab46029492c28534b5a7...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Sun Aug 2 23:53:03 2015 +0300
shell32/ebrowser: Implement EBO_NOBORDER option.
---
dlls/shell32/ebrowser.c | 6 ++++-- dlls/shell32/tests/ebrowser.c | 28 ++++++++++++++++++++++++++-- include/shobjidl.idl | 4 +++- 3 files changed, 33 insertions(+), 5 deletions(-)
diff --git a/dlls/shell32/ebrowser.c b/dlls/shell32/ebrowser.c index d50a4fc..0cee30f 100644 --- a/dlls/shell32/ebrowser.c +++ b/dlls/shell32/ebrowser.c @@ -876,7 +876,9 @@ static HRESULT WINAPI IExplorerBrowser_fnInitialize(IExplorerBrowser *iface, if (!RegisterClassW(&wc)) return E_FAIL; }
- style = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_BORDER; + style = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS; + if (!(This->eb_options & EBO_NOBORDER)) + style |= WS_BORDER; This->hwnd_main = CreateWindowExW(WS_EX_CONTROLPARENT, EB_CLASS_NAME, NULL, style, prc->left, prc->top, prc->right - prc->left, prc->bottom - prc->top, @@ -1030,7 +1032,7 @@ static HRESULT WINAPI IExplorerBrowser_fnSetOptions(IExplorerBrowser *iface, { ExplorerBrowserImpl *This = impl_from_IExplorerBrowser(iface); static const EXPLORER_BROWSER_OPTIONS unsupported_options = - EBO_ALWAYSNAVIGATE | EBO_NOWRAPPERWINDOW | EBO_HTMLSHAREPOINTVIEW; + EBO_ALWAYSNAVIGATE | EBO_NOWRAPPERWINDOW | EBO_HTMLSHAREPOINTVIEW | EBO_NOPERSISTVIEWSTATE;
TRACE("%p (0x%x)\n", This, dwFlag);
diff --git a/dlls/shell32/tests/ebrowser.c b/dlls/shell32/tests/ebrowser.c index c9d81a4..7a01d56 100644 --- a/dlls/shell32/tests/ebrowser.c +++ b/dlls/shell32/tests/ebrowser.c @@ -759,8 +759,10 @@ static void test_initialization(void) { IExplorerBrowser *peb; IShellBrowser *psb; + HWND eb_hwnd; HRESULT hr; ULONG lres; + LONG style; RECT rc;
ebrowser_instantiate(&peb); @@ -807,10 +809,9 @@ static void test_initialization(void) ok(hr == S_OK, "Got 0x%08x\n", hr); if(SUCCEEDED(hr)) { - HWND eb_hwnd; RECT eb_rc; char buf[1024]; - LONG style, expected_style; + LONG expected_style; static const RECT exp_rc = {0, 0, 48, 58};
hr = IShellBrowser_GetWindow(psb, &eb_hwnd); @@ -856,6 +857,29 @@ static void test_initialization(void) ok(lres == 0, "Got refcount %d\n", lres); }
+ /* check window style with EBO_NOBORDER */ + ebrowser_instantiate(&peb); + hr = IExplorerBrowser_SetOptions(peb, EBO_NOBORDER); + ok(hr == S_OK, "got 0x%08x\n", hr); + rc.left = 50; rc.top = 20; rc.right = 100; rc.bottom = 80; + + hr = IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL); + 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); + + hr = IShellBrowser_GetWindow(psb, &eb_hwnd); + ok(hr == S_OK, "Got 0x%08x\n", hr); + + style = GetWindowLongPtrW(eb_hwnd, GWL_STYLE); + ok(!(style & WS_BORDER) || broken(style & WS_BORDER) /* before win8 */, "got style 0x%08x\n", style); + + IShellBrowser_Release(psb); + IExplorerBrowser_Destroy(peb); + IExplorerBrowser_Release(peb); + + /* empty rectangle */ ebrowser_instantiate(&peb); rc.left = 0; rc.top = 0; rc.right = 0; rc.bottom = 0; hr = IExplorerBrowser_Initialize(peb, hwnd, &rc, NULL); diff --git a/include/shobjidl.idl b/include/shobjidl.idl index 455045d..b021178 100644 --- a/include/shobjidl.idl +++ b/include/shobjidl.idl @@ -2258,7 +2258,9 @@ typedef [v1_enum] enum tagEXPLORER_BROWSER_OPTIONS { EBO_ALWAYSNAVIGATE = 0x04, EBO_NOTRAVELLOG = 0x08, EBO_NOWRAPPERWINDOW = 0x10, - EBO_HTMLSHAREPOINTVIEW = 0x20 + EBO_HTMLSHAREPOINTVIEW = 0x20, + EBO_NOBORDER = 0x40, + EBO_NOPERSISTVIEWSTATE = 0x80, } EXPLORER_BROWSER_OPTIONS;
cpp_quote("#define SID_SExplorerBrowserFrame IID_ICommDlgBrowser")