diff --git a/README.md b/README.md index 6edbd1d8..bff1ece6 100644 --- a/README.md +++ b/README.md @@ -216,7 +216,7 @@ for more details.* * ~~Reset device state in SysKeyboard*Impl_Acquire~~ ([Wine Bug #11607](https://bugs.winehq.org/show_bug.cgi?id=11607)) * Return an error when trying to open a terminated process ([Wine Bug #37087](https://bugs.winehq.org/show_bug.cgi?id=37087)) * Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](https://bugs.winehq.org/show_bug.cgi?id=23174)) -* Return correct device type for cd devices without medium +* ~~Return correct device type for cd devices without medium~~ * Return correct values for GetThreadTimes function ([Wine Bug #20230](https://bugs.winehq.org/show_bug.cgi?id=20230)) * Return default palette entries from GetSystemPaletteEntries for non-palette-based devices * SO_CONNECT_TIME returns the appropriate time diff --git a/debian/changelog b/debian/changelog index e73f30c4..ede0d8b7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,19 @@ +wine-staging (1.7.44) UNRELEASED; urgency=low + * Removed patch to reset device state in SysKeyboard*Impl_Acquire (accepted + upstream). + * Removed patch to avoid creating thread queues for foreign threads in + attach_thread_input (accepted upstream). + * Removed patch to fix access violation when calling GetStringTypeW with NULL + src (accepted upstream). + * Removed patch to return correct device type for CD devices without medium + (accepted upstream). + * Removed patch to fix memory leak in wininet cookie handling (accepted + upstream). + * Removed various patches containing tests (accepted upstream). + * Partially removed patches for ITextFont/ITextPara implementation (fixed + upstream). + -- Sebastian Lackner Wed, 20 May 2015 05:55:09 +0200 + wine-staging (1.7.43) unstable; urgency=low * Disable patchset shell32-Default_Folder_ACLs (fixes Wine Staging Bug #265). * Updated patch to calculate msvcrt exponential math operations with higher diff --git a/patches/kernel32-CopyFileEx/0002-kernel32-Add-support-for-progress-callback-in-CopyFi.patch b/patches/kernel32-CopyFileEx/0001-kernel32-Add-support-for-progress-callback-in-CopyFi.patch similarity index 95% rename from patches/kernel32-CopyFileEx/0002-kernel32-Add-support-for-progress-callback-in-CopyFi.patch rename to patches/kernel32-CopyFileEx/0001-kernel32-Add-support-for-progress-callback-in-CopyFi.patch index bb030bf9..6b0198c9 100644 --- a/patches/kernel32-CopyFileEx/0002-kernel32-Add-support-for-progress-callback-in-CopyFi.patch +++ b/patches/kernel32-CopyFileEx/0001-kernel32-Add-support-for-progress-callback-in-CopyFi.patch @@ -1,4 +1,4 @@ -From 18a7daf004ad8d8d773dfbcaf390c9fad2ebfaed Mon Sep 17 00:00:00 2001 +From 3762d0ebf9a69e4d53344bbed116ce370c2de7a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 26 Feb 2015 06:41:26 +0100 Subject: kernel32: Add support for progress callback in CopyFileEx. @@ -9,7 +9,7 @@ Subject: kernel32: Add support for progress callback in CopyFileEx. 2 files changed, 64 insertions(+), 10 deletions(-) diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c -index 179c8e0..df98f26 100644 +index eae2ca9..a3add7e 100644 --- a/dlls/kernel32/path.c +++ b/dlls/kernel32/path.c @@ -1112,6 +1112,9 @@ BOOL WINAPI CopyFileExW(LPCWSTR source, LPCWSTR dest, @@ -116,7 +116,7 @@ index 179c8e0..df98f26 100644 } ret = TRUE; diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c -index 0a8e0e2..ffebd8d 100644 +index 64b0b8b..d91cab4 100644 --- a/dlls/kernel32/tests/file.c +++ b/dlls/kernel32/tests/file.c @@ -1131,23 +1131,17 @@ static void test_CopyFileEx(void) @@ -127,7 +127,7 @@ index 0a8e0e2..ffebd8d 100644 ok(!retok, "CopyFileExA unexpectedly succeeded\n"); - todo_wine ok(GetLastError() == ERROR_REQUEST_ABORTED, "expected ERROR_REQUEST_ABORTED, got %d\n", GetLastError()); - ok(GetFileAttributesA( dest ) != INVALID_FILE_ATTRIBUTES, "file was deleted\n"); + ok(GetFileAttributesA(dest) != INVALID_FILE_ATTRIBUTES, "file was deleted\n"); hfile = CreateFileA(dest, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, 0, 0); @@ -140,7 +140,7 @@ index 0a8e0e2..ffebd8d 100644 - todo_wine ok(GetLastError() == ERROR_REQUEST_ABORTED, "expected ERROR_REQUEST_ABORTED, got %d\n", GetLastError()); - todo_wine - ok(GetFileAttributesA( dest ) == INVALID_FILE_ATTRIBUTES, "file was not deleted\n"); + ok(GetFileAttributesA(dest) == INVALID_FILE_ATTRIBUTES, "file was not deleted\n"); ret = DeleteFileA(source); -- diff --git a/patches/kernel32-CopyFileEx/0001-kernel32-tests-Add-tests-for-delete-behaviour-of-Cop.patch b/patches/kernel32-CopyFileEx/0001-kernel32-tests-Add-tests-for-delete-behaviour-of-Cop.patch deleted file mode 100644 index 4e391f83..00000000 --- a/patches/kernel32-CopyFileEx/0001-kernel32-tests-Add-tests-for-delete-behaviour-of-Cop.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 83deea381c8297ff55f69b04765b6f6f8a012120 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sat, 9 May 2015 00:26:25 +0200 -Subject: kernel32/tests: Add tests for delete behaviour of CopyFileEx. - ---- - dlls/kernel32/tests/file.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 58 insertions(+) - -diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c -index 9a6e972..0a8e0e2 100644 ---- a/dlls/kernel32/tests/file.c -+++ b/dlls/kernel32/tests/file.c -@@ -1099,6 +1099,63 @@ static void test_CopyFile2(void) - DeleteFileW(dest); - } - -+static DWORD WINAPI copy_progress_cb(LARGE_INTEGER total_size, LARGE_INTEGER total_transferred, -+ LARGE_INTEGER stream_size, LARGE_INTEGER stream_transferred, -+ DWORD stream, DWORD reason, HANDLE source, HANDLE dest, LPVOID userdata) -+{ -+ ok(reason == CALLBACK_STREAM_SWITCH, "expected CALLBACK_STREAM_SWITCH, got %u\n", reason); -+ CloseHandle(userdata); -+ return PROGRESS_CANCEL; -+} -+ -+static void test_CopyFileEx(void) -+{ -+ char temp_path[MAX_PATH]; -+ char source[MAX_PATH], dest[MAX_PATH]; -+ static const char prefix[] = "pfx"; -+ HANDLE hfile; -+ DWORD ret; -+ BOOL retok; -+ -+ ret = GetTempPathA(MAX_PATH, temp_path); -+ ok(ret != 0, "GetTempPathA error %d\n", GetLastError()); -+ ok(ret < MAX_PATH, "temp path should fit into MAX_PATH\n"); -+ -+ ret = GetTempFileNameA(temp_path, prefix, 0, source); -+ ok(ret != 0, "GetTempFileNameA error %d\n", GetLastError()); -+ -+ ret = GetTempFileNameA(temp_path, prefix, 0, dest); -+ ok(ret != 0, "GetTempFileNameA error %d\n", GetLastError()); -+ -+ hfile = CreateFileA(dest, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0); -+ ok(hfile != INVALID_HANDLE_VALUE, "failed to open destination file, error %d\n", GetLastError()); -+ SetLastError(0xdeadbeef); -+ retok = CopyFileExA(source, dest, copy_progress_cb, hfile, NULL, 0); -+ todo_wine -+ ok(!retok, "CopyFileExA unexpectedly succeeded\n"); -+ todo_wine -+ ok(GetLastError() == ERROR_REQUEST_ABORTED, "expected ERROR_REQUEST_ABORTED, got %d\n", GetLastError()); -+ ok(GetFileAttributesA( dest ) != INVALID_FILE_ATTRIBUTES, "file was deleted\n"); -+ -+ hfile = CreateFileA(dest, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_DELETE, -+ NULL, OPEN_EXISTING, 0, 0); -+ todo_wine -+ ok(hfile != INVALID_HANDLE_VALUE, "failed to open destination file, error %d\n", GetLastError()); -+ SetLastError(0xdeadbeef); -+ retok = CopyFileExA(source, dest, copy_progress_cb, hfile, NULL, 0); -+ todo_wine -+ ok(!retok, "CopyFileExA unexpectedly succeeded\n"); -+ todo_wine -+ ok(GetLastError() == ERROR_REQUEST_ABORTED, "expected ERROR_REQUEST_ABORTED, got %d\n", GetLastError()); -+ todo_wine -+ ok(GetFileAttributesA( dest ) == INVALID_FILE_ATTRIBUTES, "file was not deleted\n"); -+ -+ ret = DeleteFileA(source); -+ ok(ret, "DeleteFileA failed with error %d\n", GetLastError()); -+ ret = DeleteFileA(dest); -+ ok(!ret, "DeleteFileA unexpectedly succeeded\n"); -+} -+ - /* - * Debugging routine to dump a buffer in a hexdump-like fashion. - */ -@@ -4447,6 +4504,7 @@ START_TEST(file) - test_CopyFileA(); - test_CopyFileW(); - test_CopyFile2(); -+ test_CopyFileEx(); - test_CreateFile(); - test_CreateFileA(); - test_CreateFileW(); --- -2.4.0 - diff --git a/patches/kernel32-GetDriveTypeW/0001-kernel32-Return-correct-device-type-for-cd-devices-w.patch b/patches/kernel32-GetDriveTypeW/0001-kernel32-Return-correct-device-type-for-cd-devices-w.patch deleted file mode 100644 index 891fb03e..00000000 --- a/patches/kernel32-GetDriveTypeW/0001-kernel32-Return-correct-device-type-for-cd-devices-w.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 1af79e37413d3d89f5290649d8e2b040ec0942af Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Mon, 30 Mar 2015 03:03:03 +0200 -Subject: kernel32: Return correct device type for cd devices without medium. - ---- - dlls/kernel32/volume.c | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - -diff --git a/dlls/kernel32/volume.c b/dlls/kernel32/volume.c -index 59eda44..38a72c5 100644 ---- a/dlls/kernel32/volume.c -+++ b/dlls/kernel32/volume.c -@@ -1610,7 +1610,15 @@ UINT WINAPI GetDriveTypeW(LPCWSTR root) /* [in] String describing drive */ - HANDLE handle; - UINT ret; - -- if (!open_device_root( root, &handle )) return DRIVE_NO_ROOT_DIR; -+ if (!open_device_root( root, &handle )) -+ { -+ /* CD ROM devices do not necessarily have a volume, but a drive type */ -+ ret = get_mountmgr_drive_type( root ); -+ if (ret == DRIVE_CDROM || ret == DRIVE_REMOVABLE) -+ return ret; -+ -+ return DRIVE_NO_ROOT_DIR; -+ } - - status = NtQueryVolumeInformationFile( handle, &io, &info, sizeof(info), FileFsDeviceInformation ); - NtClose( handle ); --- -2.3.3 - diff --git a/patches/kernel32-GetDriveTypeW/definition b/patches/kernel32-GetDriveTypeW/definition deleted file mode 100644 index 344db296..00000000 --- a/patches/kernel32-GetDriveTypeW/definition +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: Return correct device type for cd devices without medium -Category: stable diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 9801456d..227e1ac2 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,11 +51,11 @@ usage() # Show version information version() { - echo "Wine Staging 1.7.43" + echo "Wine Staging 1.7.44 (unreleased)" echo "Copyright (C) 2014-2015 the Wine Staging project authors." echo "" echo "Patchset to be applied on upstream Wine:" - echo " commit 0d91274defcf65093957cf8e43985b9be55642d5" + echo " commit f4790714fe69df7701cff666d6b5ab4be049cbf6" echo "" } @@ -132,7 +132,6 @@ patch_enable_all () enable_iphlpapi_TCP_Table="$1" enable_kernel32_CompareStringEx="$1" enable_kernel32_CopyFileEx="$1" - enable_kernel32_GetDriveTypeW="$1" enable_kernel32_GetFinalPathNameByHandle="$1" enable_kernel32_GetLogicalProcessorInformationEx="$1" enable_kernel32_GetNumaProcessorNode="$1" @@ -463,9 +462,6 @@ patch_enable () kernel32-CopyFileEx) enable_kernel32_CopyFileEx="$2" ;; - kernel32-GetDriveTypeW) - enable_kernel32_GetDriveTypeW="$2" - ;; kernel32-GetFinalPathNameByHandle) enable_kernel32_GetFinalPathNameByHandle="$2" ;; @@ -1365,9 +1361,6 @@ if test "$enable_category_stable" -eq 1; then if test "$enable_kernel32_CompareStringEx" -gt 1; then abort "Patchset kernel32-CompareStringEx disabled, but category-stable depends on that." fi - if test "$enable_kernel32_GetDriveTypeW" -gt 1; then - abort "Patchset kernel32-GetDriveTypeW disabled, but category-stable depends on that." - fi if test "$enable_kernel32_GetSystemTimePreciseAsFileTime" -gt 1; then abort "Patchset kernel32-GetSystemTimePreciseAsFileTime disabled, but category-stable depends on that." fi @@ -1593,7 +1586,6 @@ if test "$enable_category_stable" -eq 1; then enable_gdi32_MaxPixelFormats=1 enable_gdiplus_GdipCreateEffect=1 enable_kernel32_CompareStringEx=1 - enable_kernel32_GetDriveTypeW=1 enable_kernel32_GetSystemTimePreciseAsFileTime=1 enable_kernel32_Named_Pipe=1 enable_libs_Debug_Channel=1 @@ -2766,18 +2758,6 @@ if test "$enable_wined3d_CSMT_Helper" -eq 1; then ) >> "$patchlist" fi -# Patchset wined3d-wined3d_swapchain_present -# | -# | Modified files: -# | * dlls/wined3d/swapchain.c -# | -if test "$enable_wined3d_wined3d_swapchain_present" -eq 1; then - patch_apply wined3d-wined3d_swapchain_present/0001-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch - ( - echo '+ { "Sebastian Lackner", "wined3d: Silence repeated wined3d_swapchain_present FIXME.", 1 },'; - ) >> "$patchlist" -fi - # Patchset wined3d-Dirtify_Vertex_Shader # | # | This patchset fixes the following Wine bugs: @@ -2866,6 +2846,18 @@ if test "$enable_wined3d_resource_check_usage" -eq 1; then ) >> "$patchlist" fi +# Patchset wined3d-wined3d_swapchain_present +# | +# | Modified files: +# | * dlls/wined3d/swapchain.c +# | +if test "$enable_wined3d_wined3d_swapchain_present" -eq 1; then + patch_apply wined3d-wined3d_swapchain_present/0001-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch + ( + echo '+ { "Sebastian Lackner", "wined3d: Silence repeated wined3d_swapchain_present FIXME.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wined3d-CSMT_Main # | # | This patchset fixes the following Wine bugs: @@ -3553,26 +3545,12 @@ fi # | * dlls/kernel32/path.c, dlls/kernel32/tests/file.c # | if test "$enable_kernel32_CopyFileEx" -eq 1; then - patch_apply kernel32-CopyFileEx/0001-kernel32-tests-Add-tests-for-delete-behaviour-of-Cop.patch - patch_apply kernel32-CopyFileEx/0002-kernel32-Add-support-for-progress-callback-in-CopyFi.patch + patch_apply kernel32-CopyFileEx/0001-kernel32-Add-support-for-progress-callback-in-CopyFi.patch ( - echo '+ { "Sebastian Lackner", "kernel32/tests: Add tests for delete behaviour of CopyFileEx.", 1 },'; echo '+ { "Michael Müller", "kernel32: Add support for progress callback in CopyFileEx.", 1 },'; ) >> "$patchlist" fi -# Patchset kernel32-GetDriveTypeW -# | -# | Modified files: -# | * dlls/kernel32/volume.c -# | -if test "$enable_kernel32_GetDriveTypeW" -eq 1; then - patch_apply kernel32-GetDriveTypeW/0001-kernel32-Return-correct-device-type-for-cd-devices-w.patch - ( - echo '+ { "Michael Müller", "kernel32: Return correct device type for cd devices without medium.", 1 },'; - ) >> "$patchlist" -fi - # Patchset kernel32-GetFinalPathNameByHandle # | # | This patchset fixes the following Wine bugs: diff --git a/patches/riched20-IText_Interface/0002-riched20-Stub-for-ITextFont-interface-and-implement-.patch b/patches/riched20-IText_Interface/0002-riched20-Stub-for-ITextFont-interface-and-implement-.patch index dd4a799b..cdf83541 100644 --- a/patches/riched20-IText_Interface/0002-riched20-Stub-for-ITextFont-interface-and-implement-.patch +++ b/patches/riched20-IText_Interface/0002-riched20-Stub-for-ITextFont-interface-and-implement-.patch @@ -1,19 +1,19 @@ -From 175a4595dc5d24c586d6715a3ba8c90b094e26b4 Mon Sep 17 00:00:00 2001 +From db292bf18161a88ac2760aa6dcfb82a14906da67 Mon Sep 17 00:00:00 2001 From: Jactry Zeng Date: Mon, 11 Aug 2014 13:51:55 +0800 Subject: riched20: Stub for ITextFont interface and implement ITextRange::GetFont and ITextSelection::GetFont. --- - dlls/riched20/richole.c | 351 +++++++++++++++++++++++++++++++++++++++--- + dlls/riched20/richole.c | 362 +++++++++++++++++++++++++++++++++++++++--- dlls/riched20/tests/richole.c | 93 +++++++++++ - 2 files changed, 424 insertions(+), 20 deletions(-) + 2 files changed, 433 insertions(+), 22 deletions(-) diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c -index 55dda9b..d5ecf52 100644 +index b3566e5..3623ec7 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c -@@ -51,6 +51,7 @@ DEFINE_GUID(IID_ITextPara, 0x8cc497c4, 0xa1df, 0x11ce, 0x80, 0x98, 0x00, 0xaa, 0 +@@ -52,6 +52,7 @@ DEFINE_GUID(IID_ITextPara, 0x8cc497c4, 0xa1df, 0x11ce, 0x80, 0x98, 0x00, 0xaa, 0 typedef struct ITextSelectionImpl ITextSelectionImpl; typedef struct IOleClientSiteImpl IOleClientSiteImpl; typedef struct ITextRangeImpl ITextRangeImpl; @@ -21,7 +21,7 @@ index 55dda9b..d5ecf52 100644 typedef struct IRichEditOleImpl { IUnknown IUnknown_inner; -@@ -63,6 +64,7 @@ typedef struct IRichEditOleImpl { +@@ -64,6 +65,7 @@ typedef struct IRichEditOleImpl { ITextSelectionImpl *txtSel; IOleClientSiteImpl *clientSite; struct list rangelist; @@ -29,7 +29,7 @@ index 55dda9b..d5ecf52 100644 } IRichEditOleImpl; struct ITextRangeImpl { -@@ -84,8 +86,11 @@ struct ITextSelectionImpl { +@@ -85,8 +87,11 @@ struct ITextSelectionImpl { typedef struct ITextFontImpl { ITextFont ITextFont_iface; LONG ref; @@ -42,7 +42,7 @@ index 55dda9b..d5ecf52 100644 } ITextFontImpl; typedef struct ITextParaImpl { -@@ -144,7 +149,7 @@ static inline ITextParaImpl *impl_from_ITextPara(ITextPara *iface) +@@ -150,7 +155,7 @@ static inline ITextParaImpl *impl_from_ITextPara(ITextPara *iface) return CONTAINING_RECORD(iface, ITextParaImpl, ITextPara_iface); } @@ -50,8 +50,19 @@ index 55dda9b..d5ecf52 100644 +static HRESULT create_textfont(IRichEditOleImpl *, ITextFontImpl **); static HRESULT create_textpara(ITextRange*, ITextPara**); - static HRESULT WINAPI IRichEditOleImpl_inner_fnQueryInterface(IUnknown *iface, REFIID riid, LPVOID *ppvObj) -@@ -190,6 +195,7 @@ static ULONG WINAPI IRichEditOleImpl_inner_fnRelease(IUnknown *iface) + enum textfont_prop_id { +@@ -238,9 +243,8 @@ static HRESULT get_textfont_prop_for_pos(const IRichEditOleImpl *reole, int pos, + return S_OK; + } + +-static HRESULT get_textfont_prop(ITextRange *range, enum textfont_prop_id propid, LONG *value) ++static HRESULT get_textfont_prop(ITextRangeImpl *rng, enum textfont_prop_id propid, LONG *value) + { +- ITextRangeImpl *rng = impl_from_ITextRange(range); + HRESULT hr; + LONG v; + int i; +@@ -316,6 +320,7 @@ static ULONG WINAPI IRichEditOleImpl_inner_fnRelease(IUnknown *iface) if (!ref) { ITextRangeImpl *txtRge; @@ -59,7 +70,7 @@ index 55dda9b..d5ecf52 100644 TRACE("Destroying %p\n", This); This->txtSel->reOle = NULL; -@@ -198,6 +204,8 @@ static ULONG WINAPI IRichEditOleImpl_inner_fnRelease(IUnknown *iface) +@@ -324,6 +329,8 @@ static ULONG WINAPI IRichEditOleImpl_inner_fnRelease(IUnknown *iface) IOleClientSite_Release(&This->clientSite->IOleClientSite_iface); LIST_FOR_EACH_ENTRY(txtRge, &This->rangelist, ITextRangeImpl, entry) txtRge->reOle = NULL; @@ -68,7 +79,7 @@ index 55dda9b..d5ecf52 100644 heap_free(This); } return ref; -@@ -978,6 +986,8 @@ static HRESULT WINAPI ITextRange_fnSetEnd(ITextRange *me, LONG end) +@@ -1099,6 +1106,8 @@ static HRESULT WINAPI ITextRange_fnSetEnd(ITextRange *me, LONG end) static HRESULT WINAPI ITextRange_fnGetFont(ITextRange *me, ITextFont **font) { ITextRangeImpl *This = impl_from_ITextRange(me); @@ -77,7 +88,7 @@ index 55dda9b..d5ecf52 100644 TRACE("(%p)->(%p)\n", This, font); -@@ -987,7 +997,16 @@ static HRESULT WINAPI ITextRange_fnGetFont(ITextRange *me, ITextFont **font) +@@ -1108,7 +1117,16 @@ static HRESULT WINAPI ITextRange_fnGetFont(ITextRange *me, ITextFont **font) if (!font) return E_INVALIDARG; @@ -95,7 +106,7 @@ index 55dda9b..d5ecf52 100644 } static HRESULT WINAPI ITextRange_fnSetFont(ITextRange *me, ITextFont *pFont) -@@ -1511,7 +1530,14 @@ static ULONG WINAPI TextFont_Release(ITextFont *iface) +@@ -1632,7 +1650,14 @@ static ULONG WINAPI TextFont_Release(ITextFont *iface) if (!ref) { @@ -111,7 +122,7 @@ index 55dda9b..d5ecf52 100644 heap_free(This); } -@@ -1520,7 +1546,12 @@ static ULONG WINAPI TextFont_Release(ITextFont *iface) +@@ -1641,7 +1666,12 @@ static ULONG WINAPI TextFont_Release(ITextFont *iface) static HRESULT WINAPI TextFont_GetTypeInfoCount(ITextFont *iface, UINT *pctinfo) { @@ -124,7 +135,7 @@ index 55dda9b..d5ecf52 100644 *pctinfo = 0; return E_NOTIMPL; } -@@ -1528,14 +1559,24 @@ static HRESULT WINAPI TextFont_GetTypeInfoCount(ITextFont *iface, UINT *pctinfo) +@@ -1649,14 +1679,24 @@ static HRESULT WINAPI TextFont_GetTypeInfoCount(ITextFont *iface, UINT *pctinfo) static HRESULT WINAPI TextFont_GetTypeInfo(ITextFont *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) { @@ -149,7 +160,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1550,7 +1591,12 @@ static HRESULT WINAPI TextFont_Invoke( +@@ -1671,7 +1711,12 @@ static HRESULT WINAPI TextFont_Invoke( EXCEPINFO *pExcepInfo, UINT *puArgErr) { @@ -162,7 +173,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1558,6 +1604,10 @@ static HRESULT WINAPI TextFont_GetDuplicate(ITextFont *iface, ITextFont **ret) +@@ -1679,6 +1724,10 @@ static HRESULT WINAPI TextFont_GetDuplicate(ITextFont *iface, ITextFont **ret) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, ret); @@ -173,7 +184,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1565,6 +1615,10 @@ static HRESULT WINAPI TextFont_SetDuplicate(ITextFont *iface, ITextFont *pFont) +@@ -1686,6 +1735,10 @@ static HRESULT WINAPI TextFont_SetDuplicate(ITextFont *iface, ITextFont *pFont) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, pFont); @@ -184,7 +195,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1572,6 +1626,10 @@ static HRESULT WINAPI TextFont_CanChange(ITextFont *iface, LONG *ret) +@@ -1693,6 +1746,10 @@ static HRESULT WINAPI TextFont_CanChange(ITextFont *iface, LONG *ret) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, ret); @@ -195,7 +206,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1579,6 +1637,10 @@ static HRESULT WINAPI TextFont_IsEqual(ITextFont *iface, ITextFont *font, LONG * +@@ -1700,6 +1757,10 @@ static HRESULT WINAPI TextFont_IsEqual(ITextFont *iface, ITextFont *font, LONG * { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, ret); @@ -206,7 +217,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1586,6 +1648,10 @@ static HRESULT WINAPI TextFont_Reset(ITextFont *iface, LONG value) +@@ -1707,6 +1768,10 @@ static HRESULT WINAPI TextFont_Reset(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p): stub\n", This); @@ -217,7 +228,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1593,6 +1659,10 @@ static HRESULT WINAPI TextFont_GetStyle(ITextFont *iface, LONG *value) +@@ -1714,6 +1779,10 @@ static HRESULT WINAPI TextFont_GetStyle(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -228,7 +239,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1600,6 +1670,10 @@ static HRESULT WINAPI TextFont_SetStyle(ITextFont *iface, LONG value) +@@ -1721,6 +1790,10 @@ static HRESULT WINAPI TextFont_SetStyle(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -239,7 +250,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1607,6 +1681,10 @@ static HRESULT WINAPI TextFont_GetAllCaps(ITextFont *iface, LONG *value) +@@ -1728,6 +1801,10 @@ static HRESULT WINAPI TextFont_GetAllCaps(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -250,7 +261,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1614,6 +1692,10 @@ static HRESULT WINAPI TextFont_SetAllCaps(ITextFont *iface, LONG value) +@@ -1735,6 +1812,10 @@ static HRESULT WINAPI TextFont_SetAllCaps(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -261,7 +272,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1621,6 +1703,10 @@ static HRESULT WINAPI TextFont_GetAnimation(ITextFont *iface, LONG *value) +@@ -1742,6 +1823,10 @@ static HRESULT WINAPI TextFont_GetAnimation(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -272,7 +283,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1628,6 +1714,10 @@ static HRESULT WINAPI TextFont_SetAnimation(ITextFont *iface, LONG value) +@@ -1749,6 +1834,10 @@ static HRESULT WINAPI TextFont_SetAnimation(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -283,7 +294,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1635,6 +1725,10 @@ static HRESULT WINAPI TextFont_GetBackColor(ITextFont *iface, LONG *value) +@@ -1756,6 +1845,10 @@ static HRESULT WINAPI TextFont_GetBackColor(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -294,7 +305,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1642,6 +1736,10 @@ static HRESULT WINAPI TextFont_SetBackColor(ITextFont *iface, LONG value) +@@ -1763,6 +1856,10 @@ static HRESULT WINAPI TextFont_SetBackColor(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -305,19 +316,23 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1649,13 +1747,24 @@ static HRESULT WINAPI TextFont_GetBold(ITextFont *iface, LONG *value) +@@ -1770,13 +1867,28 @@ static HRESULT WINAPI TextFont_GetBold(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); - FIXME("(%p)->(%p): stub\n", This, value); -- return E_NOTIMPL; + TRACE("(%p)->(%p)\n", This, value); +- return get_textfont_prop(This->range, FONT_BOLD, value); + + if (!value) + return E_INVALIDARG; + if (!This->reOle) + return CO_E_RELEASED; ++ if (!This->txtRge) ++ { ++ FIXME("not implemented\n"); ++ return E_NOTIMPL; ++ } + -+ *value = tomFalse; -+ return S_OK; ++ return get_textfont_prop(This->txtRge, FONT_BOLD, value); } static HRESULT WINAPI TextFont_SetBold(ITextFont *iface, LONG value) @@ -331,7 +346,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1663,6 +1772,10 @@ static HRESULT WINAPI TextFont_GetEmboss(ITextFont *iface, LONG *value) +@@ -1784,6 +1896,10 @@ static HRESULT WINAPI TextFont_GetEmboss(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -342,7 +357,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1670,6 +1783,10 @@ static HRESULT WINAPI TextFont_SetEmboss(ITextFont *iface, LONG value) +@@ -1791,6 +1907,10 @@ static HRESULT WINAPI TextFont_SetEmboss(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -353,7 +368,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1677,13 +1794,24 @@ static HRESULT WINAPI TextFont_GetForeColor(ITextFont *iface, LONG *value) +@@ -1798,13 +1918,24 @@ static HRESULT WINAPI TextFont_GetForeColor(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -379,7 +394,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1691,6 +1819,10 @@ static HRESULT WINAPI TextFont_GetHidden(ITextFont *iface, LONG *value) +@@ -1812,6 +1943,10 @@ static HRESULT WINAPI TextFont_GetHidden(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -390,7 +405,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1698,6 +1830,10 @@ static HRESULT WINAPI TextFont_SetHidden(ITextFont *iface, LONG value) +@@ -1819,6 +1954,10 @@ static HRESULT WINAPI TextFont_SetHidden(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -401,7 +416,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1705,6 +1841,10 @@ static HRESULT WINAPI TextFont_GetEngrave(ITextFont *iface, LONG *value) +@@ -1826,6 +1965,10 @@ static HRESULT WINAPI TextFont_GetEngrave(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -412,7 +427,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1712,6 +1852,10 @@ static HRESULT WINAPI TextFont_SetEngrave(ITextFont *iface, LONG value) +@@ -1833,6 +1976,10 @@ static HRESULT WINAPI TextFont_SetEngrave(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -423,19 +438,23 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1719,13 +1863,24 @@ static HRESULT WINAPI TextFont_GetItalic(ITextFont *iface, LONG *value) +@@ -1840,13 +1987,28 @@ static HRESULT WINAPI TextFont_GetItalic(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); - FIXME("(%p)->(%p): stub\n", This, value); -- return E_NOTIMPL; + TRACE("(%p)->(%p)\n", This, value); +- return get_textfont_prop(This->range, FONT_ITALIC, value); + + if (!value) + return E_INVALIDARG; + if (!This->reOle) + return CO_E_RELEASED; ++ if (!This->txtRge) ++ { ++ FIXME("not implemented\n"); ++ return E_NOTIMPL; ++ } + -+ *value = tomFalse; -+ return S_OK; ++ return get_textfont_prop(This->txtRge, FONT_ITALIC, value); } static HRESULT WINAPI TextFont_SetItalic(ITextFont *iface, LONG value) @@ -449,7 +468,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1733,6 +1888,10 @@ static HRESULT WINAPI TextFont_GetKerning(ITextFont *iface, FLOAT *value) +@@ -1854,6 +2016,10 @@ static HRESULT WINAPI TextFont_GetKerning(ITextFont *iface, FLOAT *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -460,7 +479,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1740,6 +1899,10 @@ static HRESULT WINAPI TextFont_SetKerning(ITextFont *iface, FLOAT value) +@@ -1861,6 +2027,10 @@ static HRESULT WINAPI TextFont_SetKerning(ITextFont *iface, FLOAT value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%.2f): stub\n", This, value); @@ -471,7 +490,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1747,6 +1910,10 @@ static HRESULT WINAPI TextFont_GetLanguageID(ITextFont *iface, LONG *value) +@@ -1868,6 +2038,10 @@ static HRESULT WINAPI TextFont_GetLanguageID(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -482,7 +501,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1754,20 +1921,37 @@ static HRESULT WINAPI TextFont_SetLanguageID(ITextFont *iface, LONG value) +@@ -1875,20 +2049,37 @@ static HRESULT WINAPI TextFont_SetLanguageID(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -521,7 +540,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1775,6 +1959,10 @@ static HRESULT WINAPI TextFont_GetOutline(ITextFont *iface, LONG *value) +@@ -1896,6 +2087,10 @@ static HRESULT WINAPI TextFont_GetOutline(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -532,7 +551,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1782,6 +1970,10 @@ static HRESULT WINAPI TextFont_SetOutline(ITextFont *iface, LONG value) +@@ -1903,6 +2098,10 @@ static HRESULT WINAPI TextFont_SetOutline(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -543,7 +562,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1789,6 +1981,10 @@ static HRESULT WINAPI TextFont_GetPosition(ITextFont *iface, FLOAT *value) +@@ -1910,6 +2109,10 @@ static HRESULT WINAPI TextFont_GetPosition(ITextFont *iface, FLOAT *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -554,7 +573,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1796,6 +1992,10 @@ static HRESULT WINAPI TextFont_SetPosition(ITextFont *iface, FLOAT value) +@@ -1917,6 +2120,10 @@ static HRESULT WINAPI TextFont_SetPosition(ITextFont *iface, FLOAT value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%.2f): stub\n", This, value); @@ -565,7 +584,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1803,6 +2003,10 @@ static HRESULT WINAPI TextFont_GetProtected(ITextFont *iface, LONG *value) +@@ -1924,6 +2131,10 @@ static HRESULT WINAPI TextFont_GetProtected(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -576,7 +595,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1810,6 +2014,10 @@ static HRESULT WINAPI TextFont_SetProtected(ITextFont *iface, LONG value) +@@ -1931,6 +2142,10 @@ static HRESULT WINAPI TextFont_SetProtected(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -587,7 +606,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1817,6 +2025,10 @@ static HRESULT WINAPI TextFont_GetShadow(ITextFont *iface, LONG *value) +@@ -1938,6 +2153,10 @@ static HRESULT WINAPI TextFont_GetShadow(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -598,7 +617,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1824,6 +2036,10 @@ static HRESULT WINAPI TextFont_SetShadow(ITextFont *iface, LONG value) +@@ -1945,6 +2164,10 @@ static HRESULT WINAPI TextFont_SetShadow(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -609,7 +628,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1831,13 +2047,24 @@ static HRESULT WINAPI TextFont_GetSize(ITextFont *iface, FLOAT *value) +@@ -1952,13 +2175,24 @@ static HRESULT WINAPI TextFont_GetSize(ITextFont *iface, FLOAT *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -635,7 +654,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1845,6 +2072,10 @@ static HRESULT WINAPI TextFont_GetSmallCaps(ITextFont *iface, LONG *value) +@@ -1966,6 +2200,10 @@ static HRESULT WINAPI TextFont_GetSmallCaps(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -646,7 +665,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1852,6 +2083,10 @@ static HRESULT WINAPI TextFont_SetSmallCaps(ITextFont *iface, LONG value) +@@ -1973,6 +2211,10 @@ static HRESULT WINAPI TextFont_SetSmallCaps(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -657,7 +676,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1859,6 +2094,10 @@ static HRESULT WINAPI TextFont_GetSpacing(ITextFont *iface, FLOAT *value) +@@ -1980,6 +2222,10 @@ static HRESULT WINAPI TextFont_GetSpacing(ITextFont *iface, FLOAT *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -668,7 +687,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1866,6 +2105,10 @@ static HRESULT WINAPI TextFont_SetSpacing(ITextFont *iface, FLOAT value) +@@ -1987,6 +2233,10 @@ static HRESULT WINAPI TextFont_SetSpacing(ITextFont *iface, FLOAT value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%.2f): stub\n", This, value); @@ -679,7 +698,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1873,13 +2116,24 @@ static HRESULT WINAPI TextFont_GetStrikeThrough(ITextFont *iface, LONG *value) +@@ -1994,13 +2244,24 @@ static HRESULT WINAPI TextFont_GetStrikeThrough(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -705,7 +724,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1887,13 +2141,24 @@ static HRESULT WINAPI TextFont_GetSubscript(ITextFont *iface, LONG *value) +@@ -2008,13 +2269,24 @@ static HRESULT WINAPI TextFont_GetSubscript(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -731,7 +750,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1901,13 +2166,24 @@ static HRESULT WINAPI TextFont_GetSuperscript(ITextFont *iface, LONG *value) +@@ -2022,13 +2294,24 @@ static HRESULT WINAPI TextFont_GetSuperscript(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -757,7 +776,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1915,13 +2191,24 @@ static HRESULT WINAPI TextFont_GetUnderline(ITextFont *iface, LONG *value) +@@ -2036,13 +2319,24 @@ static HRESULT WINAPI TextFont_GetUnderline(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -783,7 +802,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1929,6 +2216,10 @@ static HRESULT WINAPI TextFont_GetWeight(ITextFont *iface, LONG *value) +@@ -2050,6 +2344,10 @@ static HRESULT WINAPI TextFont_GetWeight(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -794,7 +813,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -1936,6 +2227,10 @@ static HRESULT WINAPI TextFont_SetWeight(ITextFont *iface, LONG value) +@@ -2057,6 +2355,10 @@ static HRESULT WINAPI TextFont_SetWeight(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -805,7 +824,7 @@ index 55dda9b..d5ecf52 100644 return E_NOTIMPL; } -@@ -2004,21 +2299,20 @@ static ITextFontVtbl textfontvtbl = { +@@ -2125,21 +2427,20 @@ static ITextFontVtbl textfontvtbl = { TextFont_SetWeight }; @@ -831,7 +850,7 @@ index 55dda9b..d5ecf52 100644 return S_OK; } -@@ -3070,11 +3364,27 @@ static HRESULT WINAPI ITextSelection_fnSetEnd(ITextSelection *me, LONG cpLim) +@@ -3191,11 +3492,27 @@ static HRESULT WINAPI ITextSelection_fnSetEnd(ITextSelection *me, LONG cpLim) static HRESULT WINAPI ITextSelection_fnGetFont(ITextSelection *me, ITextFont **pFont) { ITextSelectionImpl *This = impl_from_ITextSelection(me); @@ -861,7 +880,7 @@ index 55dda9b..d5ecf52 100644 } static HRESULT WINAPI ITextSelection_fnSetFont(ITextSelection *me, ITextFont *pFont) -@@ -3708,6 +4018,7 @@ LRESULT CreateIRichEditOle(IUnknown *outer_unk, ME_TextEditor *editor, LPVOID *p +@@ -3829,6 +4146,7 @@ LRESULT CreateIRichEditOle(IUnknown *outer_unk, ME_TextEditor *editor, LPVOID *p } TRACE("Created %p\n",reo); list_init(&reo->rangelist); @@ -870,10 +889,10 @@ index 55dda9b..d5ecf52 100644 reo->outer_unk = outer_unk; else diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c -index 9a52f78..c52653f 100644 +index e9ae68b..070b05a 100644 --- a/dlls/riched20/tests/richole.c +++ b/dlls/riched20/tests/richole.c -@@ -1478,6 +1478,97 @@ static void test_ITextSelection_SetEnd(void) +@@ -1506,6 +1506,97 @@ static void test_ITextSelection_SetEnd(void) release_interfaces(&w, &reOle, &txtDoc, &txtSel); } @@ -971,7 +990,7 @@ index 9a52f78..c52653f 100644 START_TEST(richole) { /* Must explicitly LoadLibrary(). The test has no references to functions in -@@ -1493,6 +1584,7 @@ START_TEST(richole) +@@ -1521,6 +1612,7 @@ START_TEST(richole) test_ITextSelection_SetStart(); test_ITextSelection_SetEnd(); test_ITextSelection_Collapse(); @@ -979,7 +998,7 @@ index 9a52f78..c52653f 100644 test_ITextDocument_Range(); test_ITextRange_GetChar(); test_ITextRange_GetStart_GetEnd(); -@@ -1500,6 +1592,7 @@ START_TEST(richole) +@@ -1528,6 +1620,7 @@ START_TEST(richole) test_ITextRange_Collapse(); test_ITextRange_SetStart(); test_ITextRange_SetEnd(); diff --git a/patches/riched20-IText_Interface/0003-riched20-Stub-for-ITextPara-interface-and-implement-.patch b/patches/riched20-IText_Interface/0003-riched20-Stub-for-ITextPara-interface-and-implement-.patch index d118263d..79a087c0 100644 --- a/patches/riched20-IText_Interface/0003-riched20-Stub-for-ITextPara-interface-and-implement-.patch +++ b/patches/riched20-IText_Interface/0003-riched20-Stub-for-ITextPara-interface-and-implement-.patch @@ -1,4 +1,4 @@ -From c3bde6240c5e45eaca9a25e1e7f0b4b640325b19 Mon Sep 17 00:00:00 2001 +From bc105d05c98bd8d4524ad67d9e95ab88bca4135b Mon Sep 17 00:00:00 2001 From: Jactry Zeng Date: Sun, 10 Aug 2014 22:17:57 +0800 Subject: riched20: Stub for ITextPara interface and implement @@ -10,10 +10,10 @@ Subject: riched20: Stub for ITextPara interface and implement 2 files changed, 294 insertions(+), 9 deletions(-) diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c -index d5ecf52..409f3e8 100644 +index 3623ec7..0e51c50 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c -@@ -52,6 +52,7 @@ typedef struct ITextSelectionImpl ITextSelectionImpl; +@@ -53,6 +53,7 @@ typedef struct ITextSelectionImpl ITextSelectionImpl; typedef struct IOleClientSiteImpl IOleClientSiteImpl; typedef struct ITextRangeImpl ITextRangeImpl; typedef struct ITextFontImpl ITextFontImpl; @@ -21,7 +21,7 @@ index d5ecf52..409f3e8 100644 typedef struct IRichEditOleImpl { IUnknown IUnknown_inner; -@@ -65,6 +66,7 @@ typedef struct IRichEditOleImpl { +@@ -66,6 +67,7 @@ typedef struct IRichEditOleImpl { IOleClientSiteImpl *clientSite; struct list rangelist; struct list fontlist; @@ -29,7 +29,7 @@ index d5ecf52..409f3e8 100644 } IRichEditOleImpl; struct ITextRangeImpl { -@@ -96,8 +98,11 @@ typedef struct ITextFontImpl { +@@ -97,8 +99,11 @@ typedef struct ITextFontImpl { typedef struct ITextParaImpl { ITextPara ITextPara_iface; LONG ref; @@ -42,16 +42,16 @@ index d5ecf52..409f3e8 100644 } ITextParaImpl; struct IOleClientSiteImpl { -@@ -150,7 +155,7 @@ static inline ITextParaImpl *impl_from_ITextPara(ITextPara *iface) +@@ -156,7 +161,7 @@ static inline ITextParaImpl *impl_from_ITextPara(ITextPara *iface) } static HRESULT create_textfont(IRichEditOleImpl *, ITextFontImpl **); -static HRESULT create_textpara(ITextRange*, ITextPara**); +static HRESULT create_textpara(IRichEditOleImpl *, ITextParaImpl **); - static HRESULT WINAPI IRichEditOleImpl_inner_fnQueryInterface(IUnknown *iface, REFIID riid, LPVOID *ppvObj) - { -@@ -196,6 +201,7 @@ static ULONG WINAPI IRichEditOleImpl_inner_fnRelease(IUnknown *iface) + enum textfont_prop_id { + FONT_ALLCAPS = 0, +@@ -321,6 +326,7 @@ static ULONG WINAPI IRichEditOleImpl_inner_fnRelease(IUnknown *iface) { ITextRangeImpl *txtRge; ITextFontImpl *txtFont; @@ -59,7 +59,7 @@ index d5ecf52..409f3e8 100644 TRACE("Destroying %p\n", This); This->txtSel->reOle = NULL; -@@ -206,6 +212,8 @@ static ULONG WINAPI IRichEditOleImpl_inner_fnRelease(IUnknown *iface) +@@ -331,6 +337,8 @@ static ULONG WINAPI IRichEditOleImpl_inner_fnRelease(IUnknown *iface) txtRge->reOle = NULL; LIST_FOR_EACH_ENTRY(txtFont, &This->fontlist, ITextFontImpl, entry) txtFont->reOle = NULL; @@ -68,7 +68,7 @@ index d5ecf52..409f3e8 100644 heap_free(This); } return ref; -@@ -1022,6 +1030,8 @@ static HRESULT WINAPI ITextRange_fnSetFont(ITextRange *me, ITextFont *pFont) +@@ -1142,6 +1150,8 @@ static HRESULT WINAPI ITextRange_fnSetFont(ITextRange *me, ITextFont *pFont) static HRESULT WINAPI ITextRange_fnGetPara(ITextRange *me, ITextPara **para) { ITextRangeImpl *This = impl_from_ITextRange(me); @@ -77,7 +77,7 @@ index d5ecf52..409f3e8 100644 TRACE("(%p)->(%p)\n", This, para); -@@ -1031,7 +1041,16 @@ static HRESULT WINAPI ITextRange_fnGetPara(ITextRange *me, ITextPara **para) +@@ -1151,7 +1161,16 @@ static HRESULT WINAPI ITextRange_fnGetPara(ITextRange *me, ITextPara **para) if (!para) return E_INVALIDARG; @@ -95,7 +95,7 @@ index d5ecf52..409f3e8 100644 } static HRESULT WINAPI ITextRange_fnSetPara(ITextRange *me, ITextPara *pPara) -@@ -2353,7 +2372,14 @@ static ULONG WINAPI TextPara_Release(ITextPara *iface) +@@ -2481,7 +2500,14 @@ static ULONG WINAPI TextPara_Release(ITextPara *iface) if (!ref) { @@ -111,7 +111,7 @@ index d5ecf52..409f3e8 100644 heap_free(This); } -@@ -2362,7 +2388,12 @@ static ULONG WINAPI TextPara_Release(ITextPara *iface) +@@ -2490,7 +2516,12 @@ static ULONG WINAPI TextPara_Release(ITextPara *iface) static HRESULT WINAPI TextPara_GetTypeInfoCount(ITextPara *iface, UINT *pctinfo) { @@ -124,7 +124,7 @@ index d5ecf52..409f3e8 100644 *pctinfo = 0; return E_NOTIMPL; } -@@ -2370,14 +2401,24 @@ static HRESULT WINAPI TextPara_GetTypeInfoCount(ITextPara *iface, UINT *pctinfo) +@@ -2498,14 +2529,24 @@ static HRESULT WINAPI TextPara_GetTypeInfoCount(ITextPara *iface, UINT *pctinfo) static HRESULT WINAPI TextPara_GetTypeInfo(ITextPara *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) { @@ -149,7 +149,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2392,7 +2433,12 @@ static HRESULT WINAPI TextPara_Invoke( +@@ -2520,7 +2561,12 @@ static HRESULT WINAPI TextPara_Invoke( EXCEPINFO *pExcepInfo, UINT *puArgErr) { @@ -162,7 +162,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2400,6 +2446,10 @@ static HRESULT WINAPI TextPara_GetDuplicate(ITextPara *iface, ITextPara **ret) +@@ -2528,6 +2574,10 @@ static HRESULT WINAPI TextPara_GetDuplicate(ITextPara *iface, ITextPara **ret) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, ret); @@ -173,7 +173,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2407,6 +2457,10 @@ static HRESULT WINAPI TextPara_SetDuplicate(ITextPara *iface, ITextPara *para) +@@ -2535,6 +2585,10 @@ static HRESULT WINAPI TextPara_SetDuplicate(ITextPara *iface, ITextPara *para) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, para); @@ -184,7 +184,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2414,6 +2468,10 @@ static HRESULT WINAPI TextPara_CanChange(ITextPara *iface, LONG *ret) +@@ -2542,6 +2596,10 @@ static HRESULT WINAPI TextPara_CanChange(ITextPara *iface, LONG *ret) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, ret); @@ -195,7 +195,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2421,6 +2479,10 @@ static HRESULT WINAPI TextPara_IsEqual(ITextPara *iface, ITextPara *para, LONG * +@@ -2549,6 +2607,10 @@ static HRESULT WINAPI TextPara_IsEqual(ITextPara *iface, ITextPara *para, LONG * { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p %p)\n", This, para, ret); @@ -206,7 +206,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2428,6 +2490,10 @@ static HRESULT WINAPI TextPara_Reset(ITextPara *iface, LONG value) +@@ -2556,6 +2618,10 @@ static HRESULT WINAPI TextPara_Reset(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -217,7 +217,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2435,6 +2501,10 @@ static HRESULT WINAPI TextPara_GetStyle(ITextPara *iface, LONG *value) +@@ -2563,6 +2629,10 @@ static HRESULT WINAPI TextPara_GetStyle(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -228,7 +228,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2442,6 +2512,10 @@ static HRESULT WINAPI TextPara_SetStyle(ITextPara *iface, LONG value) +@@ -2570,6 +2640,10 @@ static HRESULT WINAPI TextPara_SetStyle(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -239,7 +239,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2449,6 +2523,10 @@ static HRESULT WINAPI TextPara_GetAlignment(ITextPara *iface, LONG *value) +@@ -2577,6 +2651,10 @@ static HRESULT WINAPI TextPara_GetAlignment(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -250,7 +250,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2456,6 +2534,10 @@ static HRESULT WINAPI TextPara_SetAlignment(ITextPara *iface, LONG value) +@@ -2584,6 +2662,10 @@ static HRESULT WINAPI TextPara_SetAlignment(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -261,7 +261,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2463,6 +2545,10 @@ static HRESULT WINAPI TextPara_GetHyphenation(ITextPara *iface, LONG *value) +@@ -2591,6 +2673,10 @@ static HRESULT WINAPI TextPara_GetHyphenation(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -272,7 +272,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2470,6 +2556,10 @@ static HRESULT WINAPI TextPara_SetHyphenation(ITextPara *iface, LONG value) +@@ -2598,6 +2684,10 @@ static HRESULT WINAPI TextPara_SetHyphenation(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -283,7 +283,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2477,6 +2567,10 @@ static HRESULT WINAPI TextPara_GetFirstLineIndent(ITextPara *iface, FLOAT *value +@@ -2605,6 +2695,10 @@ static HRESULT WINAPI TextPara_GetFirstLineIndent(ITextPara *iface, FLOAT *value { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -294,7 +294,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2484,6 +2578,10 @@ static HRESULT WINAPI TextPara_GetKeepTogether(ITextPara *iface, LONG *value) +@@ -2612,6 +2706,10 @@ static HRESULT WINAPI TextPara_GetKeepTogether(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -305,7 +305,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2491,6 +2589,10 @@ static HRESULT WINAPI TextPara_SetKeepTogether(ITextPara *iface, LONG value) +@@ -2619,6 +2717,10 @@ static HRESULT WINAPI TextPara_SetKeepTogether(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -316,7 +316,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2498,6 +2600,10 @@ static HRESULT WINAPI TextPara_GetKeepWithNext(ITextPara *iface, LONG *value) +@@ -2626,6 +2728,10 @@ static HRESULT WINAPI TextPara_GetKeepWithNext(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -327,7 +327,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2505,6 +2611,10 @@ static HRESULT WINAPI TextPara_SetKeepWithNext(ITextPara *iface, LONG value) +@@ -2633,6 +2739,10 @@ static HRESULT WINAPI TextPara_SetKeepWithNext(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -338,7 +338,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2512,6 +2622,10 @@ static HRESULT WINAPI TextPara_GetLeftIndent(ITextPara *iface, FLOAT *value) +@@ -2640,6 +2750,10 @@ static HRESULT WINAPI TextPara_GetLeftIndent(ITextPara *iface, FLOAT *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -349,7 +349,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2519,6 +2633,10 @@ static HRESULT WINAPI TextPara_GetLineSpacing(ITextPara *iface, FLOAT *value) +@@ -2647,6 +2761,10 @@ static HRESULT WINAPI TextPara_GetLineSpacing(ITextPara *iface, FLOAT *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -360,7 +360,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2526,6 +2644,10 @@ static HRESULT WINAPI TextPara_GetLineSpacingRule(ITextPara *iface, LONG *value) +@@ -2654,6 +2772,10 @@ static HRESULT WINAPI TextPara_GetLineSpacingRule(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -371,7 +371,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2533,6 +2655,10 @@ static HRESULT WINAPI TextPara_GetListAlignment(ITextPara *iface, LONG *value) +@@ -2661,6 +2783,10 @@ static HRESULT WINAPI TextPara_GetListAlignment(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -382,7 +382,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2540,6 +2666,10 @@ static HRESULT WINAPI TextPara_SetListAlignment(ITextPara *iface, LONG value) +@@ -2668,6 +2794,10 @@ static HRESULT WINAPI TextPara_SetListAlignment(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -393,7 +393,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2547,6 +2677,10 @@ static HRESULT WINAPI TextPara_GetListLevelIndex(ITextPara *iface, LONG *value) +@@ -2675,6 +2805,10 @@ static HRESULT WINAPI TextPara_GetListLevelIndex(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -404,7 +404,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2554,6 +2688,10 @@ static HRESULT WINAPI TextPara_SetListLevelIndex(ITextPara *iface, LONG value) +@@ -2682,6 +2816,10 @@ static HRESULT WINAPI TextPara_SetListLevelIndex(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -415,7 +415,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2561,6 +2699,10 @@ static HRESULT WINAPI TextPara_GetListStart(ITextPara *iface, LONG *value) +@@ -2689,6 +2827,10 @@ static HRESULT WINAPI TextPara_GetListStart(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -426,7 +426,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2568,6 +2710,10 @@ static HRESULT WINAPI TextPara_SetListStart(ITextPara *iface, LONG value) +@@ -2696,6 +2838,10 @@ static HRESULT WINAPI TextPara_SetListStart(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -437,7 +437,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2575,6 +2721,10 @@ static HRESULT WINAPI TextPara_GetListTab(ITextPara *iface, FLOAT *value) +@@ -2703,6 +2849,10 @@ static HRESULT WINAPI TextPara_GetListTab(ITextPara *iface, FLOAT *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -448,7 +448,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2582,6 +2732,10 @@ static HRESULT WINAPI TextPara_SetListTab(ITextPara *iface, FLOAT value) +@@ -2710,6 +2860,10 @@ static HRESULT WINAPI TextPara_SetListTab(ITextPara *iface, FLOAT value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%.2f)\n", This, value); @@ -459,7 +459,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2589,6 +2743,10 @@ static HRESULT WINAPI TextPara_GetListType(ITextPara *iface, LONG *value) +@@ -2717,6 +2871,10 @@ static HRESULT WINAPI TextPara_GetListType(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -470,7 +470,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2596,6 +2754,10 @@ static HRESULT WINAPI TextPara_SetListType(ITextPara *iface, LONG value) +@@ -2724,6 +2882,10 @@ static HRESULT WINAPI TextPara_SetListType(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -481,7 +481,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2603,6 +2765,10 @@ static HRESULT WINAPI TextPara_GetNoLineNumber(ITextPara *iface, LONG *value) +@@ -2731,6 +2893,10 @@ static HRESULT WINAPI TextPara_GetNoLineNumber(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -492,7 +492,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2610,6 +2776,10 @@ static HRESULT WINAPI TextPara_SetNoLineNumber(ITextPara *iface, LONG value) +@@ -2738,6 +2904,10 @@ static HRESULT WINAPI TextPara_SetNoLineNumber(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -503,7 +503,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2617,6 +2787,10 @@ static HRESULT WINAPI TextPara_GetPageBreakBefore(ITextPara *iface, LONG *value) +@@ -2745,6 +2915,10 @@ static HRESULT WINAPI TextPara_GetPageBreakBefore(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -514,7 +514,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2624,6 +2798,10 @@ static HRESULT WINAPI TextPara_SetPageBreakBefore(ITextPara *iface, LONG value) +@@ -2752,6 +2926,10 @@ static HRESULT WINAPI TextPara_SetPageBreakBefore(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -525,7 +525,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2631,6 +2809,10 @@ static HRESULT WINAPI TextPara_GetRightIndent(ITextPara *iface, FLOAT *value) +@@ -2759,6 +2937,10 @@ static HRESULT WINAPI TextPara_GetRightIndent(ITextPara *iface, FLOAT *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -536,7 +536,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2638,6 +2820,10 @@ static HRESULT WINAPI TextPara_SetRightIndent(ITextPara *iface, FLOAT value) +@@ -2766,6 +2948,10 @@ static HRESULT WINAPI TextPara_SetRightIndent(ITextPara *iface, FLOAT value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%.2f)\n", This, value); @@ -547,7 +547,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2645,6 +2831,10 @@ static HRESULT WINAPI TextPara_SetIndents(ITextPara *iface, FLOAT StartIndent, F +@@ -2773,6 +2959,10 @@ static HRESULT WINAPI TextPara_SetIndents(ITextPara *iface, FLOAT StartIndent, F { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%.2f %.2f %.2f)\n", This, StartIndent, LeftIndent, RightIndent); @@ -558,7 +558,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2652,6 +2842,10 @@ static HRESULT WINAPI TextPara_SetLineSpacing(ITextPara *iface, LONG LineSpacing +@@ -2780,6 +2970,10 @@ static HRESULT WINAPI TextPara_SetLineSpacing(ITextPara *iface, LONG LineSpacing { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d %.2f)\n", This, LineSpacingRule, LineSpacing); @@ -569,7 +569,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2659,6 +2853,10 @@ static HRESULT WINAPI TextPara_GetSpaceAfter(ITextPara *iface, FLOAT *value) +@@ -2787,6 +2981,10 @@ static HRESULT WINAPI TextPara_GetSpaceAfter(ITextPara *iface, FLOAT *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -580,7 +580,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2666,6 +2864,10 @@ static HRESULT WINAPI TextPara_SetSpaceAfter(ITextPara *iface, FLOAT value) +@@ -2794,6 +2992,10 @@ static HRESULT WINAPI TextPara_SetSpaceAfter(ITextPara *iface, FLOAT value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%.2f)\n", This, value); @@ -591,7 +591,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2673,6 +2875,10 @@ static HRESULT WINAPI TextPara_GetSpaceBefore(ITextPara *iface, FLOAT *value) +@@ -2801,6 +3003,10 @@ static HRESULT WINAPI TextPara_GetSpaceBefore(ITextPara *iface, FLOAT *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -602,7 +602,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2680,6 +2886,10 @@ static HRESULT WINAPI TextPara_SetSpaceBefore(ITextPara *iface, FLOAT value) +@@ -2808,6 +3014,10 @@ static HRESULT WINAPI TextPara_SetSpaceBefore(ITextPara *iface, FLOAT value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%.2f)\n", This, value); @@ -613,7 +613,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2687,6 +2897,10 @@ static HRESULT WINAPI TextPara_GetWidowControl(ITextPara *iface, LONG *value) +@@ -2815,6 +3025,10 @@ static HRESULT WINAPI TextPara_GetWidowControl(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -624,7 +624,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2694,6 +2908,10 @@ static HRESULT WINAPI TextPara_SetWidowControl(ITextPara *iface, LONG value) +@@ -2822,6 +3036,10 @@ static HRESULT WINAPI TextPara_SetWidowControl(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -635,7 +635,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2701,6 +2919,10 @@ static HRESULT WINAPI TextPara_GetTabCount(ITextPara *iface, LONG *value) +@@ -2829,6 +3047,10 @@ static HRESULT WINAPI TextPara_GetTabCount(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -646,7 +646,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2708,6 +2930,10 @@ static HRESULT WINAPI TextPara_AddTab(ITextPara *iface, FLOAT tbPos, LONG tbAlig +@@ -2836,6 +3058,10 @@ static HRESULT WINAPI TextPara_AddTab(ITextPara *iface, FLOAT tbPos, LONG tbAlig { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%.2f %d %d)\n", This, tbPos, tbAlign, tbLeader); @@ -657,7 +657,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2715,6 +2941,10 @@ static HRESULT WINAPI TextPara_ClearAllTabs(ITextPara *iface) +@@ -2843,6 +3069,10 @@ static HRESULT WINAPI TextPara_ClearAllTabs(ITextPara *iface) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)\n", This); @@ -668,7 +668,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2722,6 +2952,10 @@ static HRESULT WINAPI TextPara_DeleteTab(ITextPara *iface, FLOAT pos) +@@ -2850,6 +3080,10 @@ static HRESULT WINAPI TextPara_DeleteTab(ITextPara *iface, FLOAT pos) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%.2f)\n", This, pos); @@ -679,7 +679,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2729,6 +2963,10 @@ static HRESULT WINAPI TextPara_GetTab(ITextPara *iface, LONG iTab, FLOAT *ptbPos +@@ -2857,6 +3091,10 @@ static HRESULT WINAPI TextPara_GetTab(ITextPara *iface, LONG iTab, FLOAT *ptbPos { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d %p %p %p)\n", This, iTab, ptbPos, ptbAlign, ptbLeader); @@ -690,7 +690,7 @@ index d5ecf52..409f3e8 100644 return E_NOTIMPL; } -@@ -2790,21 +3028,20 @@ static ITextParaVtbl textparavtbl = { +@@ -2918,21 +3156,20 @@ static ITextParaVtbl textparavtbl = { TextPara_GetTab }; @@ -716,7 +716,7 @@ index d5ecf52..409f3e8 100644 return S_OK; } -@@ -4019,6 +4256,7 @@ LRESULT CreateIRichEditOle(IUnknown *outer_unk, ME_TextEditor *editor, LPVOID *p +@@ -4147,6 +4384,7 @@ LRESULT CreateIRichEditOle(IUnknown *outer_unk, ME_TextEditor *editor, LPVOID *p TRACE("Created %p\n",reo); list_init(&reo->rangelist); list_init(&reo->fontlist); @@ -725,10 +725,10 @@ index d5ecf52..409f3e8 100644 reo->outer_unk = outer_unk; else diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c -index c52653f..e1e330d 100644 +index 070b05a..0fb5c98 100644 --- a/dlls/riched20/tests/richole.c +++ b/dlls/riched20/tests/richole.c -@@ -1569,6 +1569,52 @@ static void test_ITextSelection_GetFont(void) +@@ -1597,6 +1597,52 @@ static void test_ITextSelection_GetFont(void) ITextFont_Release(txtFont); } @@ -781,7 +781,7 @@ index c52653f..e1e330d 100644 START_TEST(richole) { /* Must explicitly LoadLibrary(). The test has no references to functions in -@@ -1593,6 +1639,7 @@ START_TEST(richole) +@@ -1621,6 +1667,7 @@ START_TEST(richole) test_ITextRange_SetStart(); test_ITextRange_SetEnd(); test_ITextRange_GetFont(); diff --git a/patches/riched20-IText_Interface/0011-riched20-Silence-repeated-FIXMEs-triggered-by-Adobe-.patch b/patches/riched20-IText_Interface/0011-riched20-Silence-repeated-FIXMEs-triggered-by-Adobe-.patch index c78bcd8f..edc735c8 100644 --- a/patches/riched20-IText_Interface/0011-riched20-Silence-repeated-FIXMEs-triggered-by-Adobe-.patch +++ b/patches/riched20-IText_Interface/0011-riched20-Silence-repeated-FIXMEs-triggered-by-Adobe-.patch @@ -1,18 +1,18 @@ -From 0b40418cf55b2c6b963433c48fd52f8465558f1d Mon Sep 17 00:00:00 2001 +From e0ae36a5cdcabb900a2e12a701990f4d0fcc7f7b Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 1 Nov 2014 22:51:34 +0100 Subject: riched20: Silence repeated FIXMEs triggered by Adobe Reader. Adobe Reader calls these functions very often while scrolling through a document. --- - dlls/riched20/richole.c | 48 ++++++++++++++++++++++++++++++++++++++---------- - 1 file changed, 38 insertions(+), 10 deletions(-) + dlls/riched20/richole.c | 46 ++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c -index 7a07a84..8e719eb 100644 +index a2cdcf4..cb12e80 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c -@@ -175,6 +175,14 @@ static HRESULT WINAPI IRichEditOleImpl_inner_fnQueryInterface(IUnknown *iface, R +@@ -300,6 +300,14 @@ static HRESULT WINAPI IRichEditOleImpl_inner_fnQueryInterface(IUnknown *iface, R IUnknown_AddRef((IUnknown *)*ppvObj); return S_OK; } @@ -27,18 +27,17 @@ index 7a07a84..8e719eb 100644 FIXME("%p: unhandled interface %s\n", This, debugstr_guid(riid)); return E_NOINTERFACE; -@@ -1833,7 +1841,9 @@ static HRESULT WINAPI TextFont_SetBackColor(ITextFont *iface, LONG value) - static HRESULT WINAPI TextFont_GetBold(ITextFont *iface, LONG *value) - { - ITextFontImpl *This = impl_from_ITextFont(iface); -- FIXME("(%p)->(%p): stub\n", This, value); -+ static int once; -+ -+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value); +@@ -1961,7 +1969,8 @@ static HRESULT WINAPI TextFont_GetBold(ITextFont *iface, LONG *value) + return CO_E_RELEASED; + if (!This->txtRge) + { +- FIXME("not implemented\n"); ++ static int once; ++ if (!once++) FIXME("not implemented\n"); + return E_NOTIMPL; + } - if (!value) - return E_INVALIDARG; -@@ -1880,7 +1890,9 @@ static HRESULT WINAPI TextFont_SetEmboss(ITextFont *iface, LONG value) +@@ -2004,7 +2013,9 @@ static HRESULT WINAPI TextFont_SetEmboss(ITextFont *iface, LONG value) static HRESULT WINAPI TextFont_GetForeColor(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); @@ -49,18 +48,17 @@ index 7a07a84..8e719eb 100644 if (!value) return E_INVALIDARG; -@@ -1949,7 +1961,9 @@ static HRESULT WINAPI TextFont_SetEngrave(ITextFont *iface, LONG value) - static HRESULT WINAPI TextFont_GetItalic(ITextFont *iface, LONG *value) - { - ITextFontImpl *This = impl_from_ITextFont(iface); -- FIXME("(%p)->(%p): stub\n", This, value); -+ static int once; -+ -+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value); +@@ -2081,7 +2092,8 @@ static HRESULT WINAPI TextFont_GetItalic(ITextFont *iface, LONG *value) + return CO_E_RELEASED; + if (!This->txtRge) + { +- FIXME("not implemented\n"); ++ static int once; ++ if (!once++) FIXME("not implemented\n"); + return E_NOTIMPL; + } - if (!value) - return E_INVALIDARG; -@@ -1996,7 +2010,9 @@ static HRESULT WINAPI TextFont_SetKerning(ITextFont *iface, FLOAT value) +@@ -2124,7 +2136,9 @@ static HRESULT WINAPI TextFont_SetKerning(ITextFont *iface, FLOAT value) static HRESULT WINAPI TextFont_GetLanguageID(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); @@ -71,7 +69,7 @@ index 7a07a84..8e719eb 100644 if (!This->reOle) return CO_E_RELEASED; -@@ -2133,7 +2149,9 @@ static HRESULT WINAPI TextFont_SetShadow(ITextFont *iface, LONG value) +@@ -2261,7 +2275,9 @@ static HRESULT WINAPI TextFont_SetShadow(ITextFont *iface, LONG value) static HRESULT WINAPI TextFont_GetSize(ITextFont *iface, FLOAT *value) { ITextFontImpl *This = impl_from_ITextFont(iface); @@ -82,7 +80,7 @@ index 7a07a84..8e719eb 100644 if (!value) return E_INVALIDARG; -@@ -2202,7 +2220,9 @@ static HRESULT WINAPI TextFont_SetSpacing(ITextFont *iface, FLOAT value) +@@ -2330,7 +2346,9 @@ static HRESULT WINAPI TextFont_SetSpacing(ITextFont *iface, FLOAT value) static HRESULT WINAPI TextFont_GetStrikeThrough(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); @@ -93,7 +91,7 @@ index 7a07a84..8e719eb 100644 if (!value) return E_INVALIDARG; -@@ -2227,7 +2247,9 @@ static HRESULT WINAPI TextFont_SetStrikeThrough(ITextFont *iface, LONG value) +@@ -2355,7 +2373,9 @@ static HRESULT WINAPI TextFont_SetStrikeThrough(ITextFont *iface, LONG value) static HRESULT WINAPI TextFont_GetSubscript(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); @@ -104,7 +102,7 @@ index 7a07a84..8e719eb 100644 if (!value) return E_INVALIDARG; -@@ -2277,7 +2299,9 @@ static HRESULT WINAPI TextFont_SetSuperscript(ITextFont *iface, LONG value) +@@ -2405,7 +2425,9 @@ static HRESULT WINAPI TextFont_SetSuperscript(ITextFont *iface, LONG value) static HRESULT WINAPI TextFont_GetUnderline(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); @@ -115,7 +113,7 @@ index 7a07a84..8e719eb 100644 if (!value) return E_INVALIDARG; -@@ -2302,7 +2326,9 @@ static HRESULT WINAPI TextFont_SetUnderline(ITextFont *iface, LONG value) +@@ -2430,7 +2452,9 @@ static HRESULT WINAPI TextFont_SetUnderline(ITextFont *iface, LONG value) static HRESULT WINAPI TextFont_GetWeight(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); @@ -126,7 +124,7 @@ index 7a07a84..8e719eb 100644 if (!This->reOle) return CO_E_RELEASED; -@@ -2593,7 +2619,9 @@ static HRESULT WINAPI TextPara_SetStyle(ITextPara *iface, LONG value) +@@ -2721,7 +2745,9 @@ static HRESULT WINAPI TextPara_SetStyle(ITextPara *iface, LONG value) static HRESULT WINAPI TextPara_GetAlignment(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); diff --git a/patches/wined3d-CSMT_Main/9999-IfDefined.patch b/patches/wined3d-CSMT_Main/9999-IfDefined.patch index 4a548cc6..0db049ae 100644 --- a/patches/wined3d-CSMT_Main/9999-IfDefined.patch +++ b/patches/wined3d-CSMT_Main/9999-IfDefined.patch @@ -1099,7 +1099,7 @@ diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c -@@ -3298,7 +3298,11 @@ +@@ -3304,7 +3304,11 @@ float y_offset = context->render_offscreen ? (center_offset - (2.0f * y) - h) / h : (center_offset - (2.0f * y) - h) / -h; @@ -1111,7 +1111,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c state->render_states[WINED3D_RS_ZENABLE] : WINED3D_ZB_FALSE; float z_scale = zenable ? 2.0f : 0.0f; float z_offset = zenable ? -1.0f : 0.0f; -@@ -3421,6 +3425,7 @@ +@@ -3427,6 +3431,7 @@ /* case WINED3D_TTFF_COUNT1: Won't ever get here. */ case WINED3D_TTFF_COUNT2: mat._13 = mat._23 = mat._33 = mat._43 = 0.0f; @@ -1119,7 +1119,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c /* OpenGL divides the first 3 vertex coord by the 4th by default, * which is essentially the same as D3DTTFF_PROJECTED. Make sure that * the 4th coord evaluates to 1.0 to eliminate that. -@@ -3433,6 +3438,20 @@ +@@ -3439,6 +3444,20 @@ * A more serious problem occurs if the app passes 4 coordinates in, and the * 4th is != 1.0(opengl default). This would have to be fixed in draw_strided_slow * or a replacement shader. */ @@ -1140,7 +1140,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c default: mat._14 = mat._24 = mat._34 = 0.0f; mat._44 = 1.0f; } -@@ -3792,7 +3811,11 @@ +@@ -3798,7 +3817,11 @@ unsigned int i; DWORD ttff; DWORD cop, aop, carg0, carg1, carg2, aarg0, aarg1, aarg2; @@ -1685,7 +1685,7 @@ diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c --- a/dlls/d3d9/tests/visual.c +++ b/dlls/d3d9/tests/visual.c -@@ -16877,7 +16877,11 @@ +@@ -16880,7 +16880,11 @@ fill_surface(surface_managed, 0x0000ff00, D3DLOCK_NO_DIRTY_UPDATE); add_dirty_rect_test_draw(device); color = getPixelColor(device, 320, 240);