Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/shell32/tests/shlfolder.c | 29 +++++++++++++++++++++++++++++ include/shlobj.h | 1 + include/shobjidl.idl | 14 ++++++++++++++ 3 files changed, 44 insertions(+)
diff --git a/dlls/shell32/tests/shlfolder.c b/dlls/shell32/tests/shlfolder.c index 1b140c0501..95ebb92e5c 100644 --- a/dlls/shell32/tests/shlfolder.c +++ b/dlls/shell32/tests/shlfolder.c @@ -5217,6 +5217,34 @@ static void test_GetDefaultSearchGUID(void) CoUninitialize(); }
+static void test_SHLimitInputEdit(void) +{ + IShellFolder *desktop; + HRESULT hr; + HWND hwnd; + + hr = SHGetDesktopFolder(&desktop); + ok(hr == S_OK, "Failed to get desktop folder, hr %#x.\n", hr); + + hr = SHLimitInputEdit(NULL, desktop); +todo_wine + ok(hr == E_FAIL, "Unexpected hr %#x.\n", hr); + + hwnd = CreateWindowA("EDIT", NULL, WS_VISIBLE, 0, 0, 100, 30, NULL, NULL, NULL, NULL); + ok(hwnd != NULL, "Failed to create Edit control.\n"); + + hr = SHLimitInputEdit(hwnd, desktop); +todo_wine + ok(hr == S_OK, "Failed to set input limits, hr %#x.\n", hr); + + hr = SHLimitInputEdit(hwnd, desktop); +todo_wine + ok(hr == S_OK, "Failed to set input limits, hr %#x.\n", hr); + + DestroyWindow(hwnd); + IShellFolder_Release(desktop); +} + START_TEST(shlfolder) { init_function_pointers(); @@ -5258,6 +5286,7 @@ START_TEST(shlfolder) test_DataObject(); test_GetDefaultColumn(); test_GetDefaultSearchGUID(); + test_SHLimitInputEdit();
OleUninitialize(); } diff --git a/include/shlobj.h b/include/shlobj.h index 09efc18ee5..7cdb4f873d 100644 --- a/include/shlobj.h +++ b/include/shlobj.h @@ -1801,6 +1801,7 @@ HRESULT WINAPI CDefFolderMenu_Create2(LPCITEMIDLIST pidlFolder, HWND hwnd, UINT IContextMenu **ppcm);
int WINAPI PickIconDlg(HWND owner, WCHAR *path, UINT path_len, int *index); +HRESULT WINAPI SHLimitInputEdit(HWND hwnd, IShellFolder *folder);
#include <poppack.h>
diff --git a/include/shobjidl.idl b/include/shobjidl.idl index 5e4da5de28..e0fe01c2c1 100644 --- a/include/shobjidl.idl +++ b/include/shobjidl.idl @@ -3699,6 +3699,20 @@ typedef enum ASSOC_FILTER } ASSOC_FILTER; cpp_quote("HRESULT WINAPI SHAssocEnumHandlers(PCWSTR extra, ASSOC_FILTER filter, IEnumAssocHandlers **handlersenum);")
+[ + uuid(1df0d7f1-b267-4d28-8b10-12e23202a5c4), +] +interface IItemNameLimits : IUnknown +{ + HRESULT GetValidCharacters( + [out, string] LPWSTR *validchars, + [out, string] LPWSTR *invalidchars); + + HRESULT GetMaxLength( + [in, string] LPCWSTR name, + [out] int *max_length); +} + /***************************************************************************** * ShellObjects typelibrary */
Hi,
While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at https://testbot.winehq.org/JobDetails.pl?Key=36905
Your paranoid android.
=== w2003std (32 bit shlfolder) === shlfolder.c:4954: Test failed: MKDIR: Expected wndproc to be called shlfolder.c:4867: Test failed: Didn't expect a WM_USER_NOTIFY message (event: 8) shlfolder.c:4954: Test failed: CREATE: Expected wndproc to be called shlfolder.c:4867: Test failed: Didn't expect a WM_USER_NOTIFY message (event: 2) shlfolder.c:4954: Test failed: RMDIR: Expected wndproc to be called shlfolder.c:4867: Test failed: Didn't expect a WM_USER_NOTIFY message (event: 10) shlfolder.c:4954: Test failed: MKDIR: Expected wndproc to be called shlfolder.c:4867: Test failed: Didn't expect a WM_USER_NOTIFY message (event: 6ac) shlfolder.c:4954: Test failed: CREATE: Expected wndproc to be called shlfolder.c:4867: Test failed: Didn't expect a WM_USER_NOTIFY message (event: 6ac) shlfolder.c:4954: Test failed: RMDIR: Expected wndproc to be called shlfolder.c:4867: Test failed: Didn't expect a WM_USER_NOTIFY message (event: 6ac)