From b2297b41c376f4d7c6789efb3490eeccfb5781f8 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 21 May 2015 06:24:11 +0200 Subject: [PATCH] Rebase against 1e8759805e3c5dfe00a31bb5f13f1c1da28d2826. --- README.md | 8 +- debian/changelog | 8 + ...ement-GetSystemTimePreciseAsFileTime.patch | 93 ----- .../definition | 2 - ...ernel32-Add-tests-for-GetSystemTimes.patch | 18 +- patches/patchinstall.sh | 199 +++------- ...pending-and-0-to-string-value-of-imp.patch | 38 -- patches/regedit-String_Termination/definition | 2 - ...nt-IText-Selection-Range-Set-Start-E.patch | 16 +- ...r-ITextFont-interface-and-implement-.patch | 372 +++--------------- ...r-ITextPara-interface-and-implement-.patch | 124 +++--- ...RunOfsFromCharOfs-when-nCharOfs-strl.patch | 4 +- ...iched20-Implement-ITextRange-GetText.patch | 18 +- ...ched20-Implement-ITextRange-SetRange.patch | 16 +- ...iched20-Implement-ITextRange-IsEqual.patch | 14 +- ...-Implement-ITextRange-GetStoryLength.patch | 14 +- ...lement-ITextSelection-GetStoryLength.patch | 14 +- ...-repeated-FIXMEs-triggered-by-Adobe-.patch | 114 +----- ...lement-ITextSelection_fnGetDuplicate.patch | 6 +- ...locate-fake-hwnds-for-curses-backend.patch | 44 --- .../wineconsole-Curses_Fake_Wnd/definition | 1 - .../wined3d-CSMT_Main/9999-IfDefined.patch | 8 +- ...vertex-shader-on-transformed-untrans.patch | 28 -- .../wined3d-Dirtify_Vertex_Shader/definition | 2 - 24 files changed, 255 insertions(+), 908 deletions(-) delete mode 100644 patches/kernel32-GetSystemTimePreciseAsFileTime/0001-kernel32-Implement-GetSystemTimePreciseAsFileTime.patch delete mode 100644 patches/kernel32-GetSystemTimePreciseAsFileTime/definition delete mode 100644 patches/regedit-String_Termination/0001-regedit-Avoid-appending-and-0-to-string-value-of-imp.patch delete mode 100644 patches/regedit-String_Termination/definition delete mode 100644 patches/wineconsole-Curses_Fake_Wnd/0001-wineconsole-Allocate-fake-hwnds-for-curses-backend.patch delete mode 100644 patches/wineconsole-Curses_Fake_Wnd/definition delete mode 100644 patches/wined3d-Dirtify_Vertex_Shader/0001-wined3d-Dirtify-vertex-shader-on-transformed-untrans.patch delete mode 100644 patches/wined3d-Dirtify_Vertex_Shader/definition diff --git a/README.md b/README.md index bff1ece6..db79a74d 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ for more details.* * Add support for process specific debug channels * Add support for wbemprox Win32_SystemEnclosure table ([Wine Bug #34517](https://bugs.winehq.org/show_bug.cgi?id=34517)) * Adobe Reader needs ITextSelection_fnGetDuplicate implementation -* Allocate fake hWnd for wineconsole curses backend ([Wine Bug #34930](https://bugs.winehq.org/show_bug.cgi?id=34930)) +* ~~Allocate fake hWnd for wineconsole curses backend~~ ([Wine Bug #34930](https://bugs.winehq.org/show_bug.cgi?id=34930)) * Allow selection of audio device for PulseAudio backend * Allow special characters in pipe names ([Wine Bug #28995](https://bugs.winehq.org/show_bug.cgi?id=28995)) * Allow to cancel a file operation via progress callback ([Wine Bug #22690](https://bugs.winehq.org/show_bug.cgi?id=22690)) @@ -108,8 +108,8 @@ for more details.* * Create stub files for system32/drivers/etc/{services,hosts,networks,protocol} ([Wine Bug #12076](https://bugs.winehq.org/show_bug.cgi?id=12076)) * CreateProcess does not prioritize the working directory over the system search path ([Wine Bug #23934](https://bugs.winehq.org/show_bug.cgi?id=23934)) * D3DCompileShader should filter specific warning messages ([Wine Bug #33770](https://bugs.winehq.org/show_bug.cgi?id=33770)) -* Dirtify vertex shader on transformed update to fix graphical corruption ([Wine Bug #38539](https://bugs.winehq.org/show_bug.cgi?id=38539)) -* Do not append duplicate NULL characters when importing keys with regedit ([Wine Bug #37575](https://bugs.winehq.org/show_bug.cgi?id=37575)) +* ~~Dirtify vertex shader on transformed update to fix graphical corruption~~ ([Wine Bug #38539](https://bugs.winehq.org/show_bug.cgi?id=38539)) +* ~~Do not append duplicate NULL characters when importing keys with regedit~~ ([Wine Bug #37575](https://bugs.winehq.org/show_bug.cgi?id=37575)) * ~~Do not create foreign thread queues for attach_thread_input requests~~ ([Wine Bug #38562](https://bugs.winehq.org/show_bug.cgi?id=38562)) * Do not fail when a used context is passed to wglShareLists ([Wine Bug #11436](https://bugs.winehq.org/show_bug.cgi?id=11436)) * Emulate access to KI_USER_SHARED_DATA kernel page on x86_64 ([Wine Bug #33849](https://bugs.winehq.org/show_bug.cgi?id=33849)) @@ -176,7 +176,7 @@ for more details.* * Implement combase.WindowsSubstring function * Implement empty enumerator for IWiaDevMgr::EnumDeviceInfo ([Wine Bug #27775](https://bugs.winehq.org/show_bug.cgi?id=27775)) * Implement exclusive mode in PulseAudio backend ([Wine Bug #37042](https://bugs.winehq.org/show_bug.cgi?id=37042)) -* Implement kernel32.GetSystemTimePreciseAsFileTime ([Wine Bug #38513](https://bugs.winehq.org/show_bug.cgi?id=38513)) +* ~~Implement kernel32.GetSystemTimePreciseAsFileTime~~ ([Wine Bug #38513](https://bugs.winehq.org/show_bug.cgi?id=38513)) * Implement locking and synchronization of key states ([Wine Bug #31899](https://bugs.winehq.org/show_bug.cgi?id=31899)) * Implement mscoree._CorValidateImage for mono runtime * Implement ntoskrnl driver testing framework. diff --git a/debian/changelog b/debian/changelog index ede0d8b7..8214cdcd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,6 +9,14 @@ wine-staging (1.7.44) UNRELEASED; urgency=low (accepted upstream). * Removed patch to fix memory leak in wininet cookie handling (accepted upstream). + * Removed patch to allocate fake hWnd for wineconsole curses backend (accepted + upstream). + * Removed patch to dirtify vertex shader on transformed update (accepted + upstream). + * Removed patch to avoid appending duplicate NULL characters when importing + keys with regedit (accepted upstream). + * Removed patch to implement kernel32.GetSystemTimePreciseAsFileTime (accepted + upstream). * Removed various patches containing tests (accepted upstream). * Partially removed patches for ITextFont/ITextPara implementation (fixed upstream). diff --git a/patches/kernel32-GetSystemTimePreciseAsFileTime/0001-kernel32-Implement-GetSystemTimePreciseAsFileTime.patch b/patches/kernel32-GetSystemTimePreciseAsFileTime/0001-kernel32-Implement-GetSystemTimePreciseAsFileTime.patch deleted file mode 100644 index e71338f9..00000000 --- a/patches/kernel32-GetSystemTimePreciseAsFileTime/0001-kernel32-Implement-GetSystemTimePreciseAsFileTime.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 59136b0d18daced5dcfc77744cbd20425273a2a0 Mon Sep 17 00:00:00 2001 -From: Martin Storsjo -Date: Thu, 7 May 2015 23:02:34 +0300 -Subject: kernel32: Implement GetSystemTimePreciseAsFileTime - -This just falls back to doing the same as GetSystemTimeAsFileTime. ---- - .../api-ms-win-core-sysinfo-l1-2-0.spec | 2 +- - .../api-ms-win-core-sysinfo-l1-2-1.spec | 2 +- - dlls/kernel32/kernel32.spec | 1 + - dlls/kernel32/time.c | 15 +++++++++++++++ - include/winbase.h | 1 + - 5 files changed, 19 insertions(+), 2 deletions(-) - -diff --git a/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec b/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec -index d3df6bd..9b05674 100644 ---- a/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec -+++ b/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec -@@ -14,7 +14,7 @@ - @ stdcall GetSystemTime(ptr) kernel32.GetSystemTime - @ stdcall GetSystemTimeAdjustment(ptr ptr ptr) kernel32.GetSystemTimeAdjustment - @ stdcall GetSystemTimeAsFileTime(ptr) kernel32.GetSystemTimeAsFileTime --@ stub GetSystemTimePreciseAsFileTime -+@ stdcall GetSystemTimePreciseAsFileTime(ptr) kernel32.GetSystemTimePreciseAsFileTime - @ stdcall GetSystemWindowsDirectoryA(ptr long) kernel32.GetSystemWindowsDirectoryA - @ stdcall GetSystemWindowsDirectoryW(ptr long) kernel32.GetSystemWindowsDirectoryW - @ stdcall GetTickCount() kernel32.GetTickCount -diff --git a/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec b/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec -index 29262c5..018ab05 100644 ---- a/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec -+++ b/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec -@@ -16,7 +16,7 @@ - @ stdcall GetSystemTime(ptr) kernel32.GetSystemTime - @ stdcall GetSystemTimeAdjustment(ptr ptr ptr) kernel32.GetSystemTimeAdjustment - @ stdcall GetSystemTimeAsFileTime(ptr) kernel32.GetSystemTimeAsFileTime --@ stub GetSystemTimePreciseAsFileTime -+@ stdcall GetSystemTimePreciseAsFileTime(ptr) kernel32.GetSystemTimePreciseAsFileTime - @ stdcall GetSystemWindowsDirectoryA(ptr long) kernel32.GetSystemWindowsDirectoryA - @ stdcall GetSystemWindowsDirectoryW(ptr long) kernel32.GetSystemWindowsDirectoryW - @ stdcall -ret64 GetTickCount64() kernel32.GetTickCount64 -diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec -index 1261738..8f6a13e 100644 ---- a/dlls/kernel32/kernel32.spec -+++ b/dlls/kernel32/kernel32.spec -@@ -829,6 +829,7 @@ - @ stdcall GetSystemTime(ptr) - @ stdcall GetSystemTimeAdjustment(ptr ptr ptr) - @ stdcall GetSystemTimeAsFileTime(ptr) -+@ stdcall GetSystemTimePreciseAsFileTime(ptr) - @ stdcall GetSystemTimes(ptr ptr ptr) - @ stdcall GetSystemWindowsDirectoryA(ptr long) - @ stdcall GetSystemWindowsDirectoryW(ptr long) -diff --git a/dlls/kernel32/time.c b/dlls/kernel32/time.c -index 2b8e1d9..daafc7f 100644 ---- a/dlls/kernel32/time.c -+++ b/dlls/kernel32/time.c -@@ -548,6 +548,21 @@ VOID WINAPI GetSystemTimeAsFileTime( - } - - -+/*********************************************************************** -+ * GetSystemTimePreciseAsFileTime (KERNEL32.@) -+ * -+ * Get the current time in utc format, with <1 us precision. -+ * -+ * RETURNS -+ * Nothing. -+ */ -+VOID WINAPI GetSystemTimePreciseAsFileTime( -+ LPFILETIME time) /* [out] Destination for the current utc time */ -+{ -+ GetSystemTimeAsFileTime(time); -+} -+ -+ - /********************************************************************* - * TIME_ClockTimeToFileTime (olorin@fandra.org, 20-Sep-1998) - * -diff --git a/include/winbase.h b/include/winbase.h -index a8f3fb6..7540e6d 100644 ---- a/include/winbase.h -+++ b/include/winbase.h -@@ -2040,6 +2040,7 @@ WINBASEAPI BOOL WINAPI GetSystemRegistryQuota(PDWORD,PDWORD); - WINBASEAPI VOID WINAPI GetSystemTime(LPSYSTEMTIME); - WINBASEAPI BOOL WINAPI GetSystemTimeAdjustment(PDWORD,PDWORD,PBOOL); - WINBASEAPI VOID WINAPI GetSystemTimeAsFileTime(LPFILETIME); -+WINBASEAPI VOID WINAPI GetSystemTimePreciseAsFileTime(LPFILETIME); - WINBASEAPI UINT WINAPI GetSystemWindowsDirectoryA(LPSTR,UINT); - WINBASEAPI UINT WINAPI GetSystemWindowsDirectoryW(LPWSTR,UINT); - #define GetSystemWindowsDirectory WINELIB_NAME_AW(GetSystemWindowsDirectory) --- -2.4.0 - diff --git a/patches/kernel32-GetSystemTimePreciseAsFileTime/definition b/patches/kernel32-GetSystemTimePreciseAsFileTime/definition deleted file mode 100644 index e5f96b33..00000000 --- a/patches/kernel32-GetSystemTimePreciseAsFileTime/definition +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: [38513] Implement kernel32.GetSystemTimePreciseAsFileTime -Category: stable diff --git a/patches/kernel32-GetSystemTimes/0001-kernel32-Add-tests-for-GetSystemTimes.patch b/patches/kernel32-GetSystemTimes/0001-kernel32-Add-tests-for-GetSystemTimes.patch index 61062216..76e75a62 100644 --- a/patches/kernel32-GetSystemTimes/0001-kernel32-Add-tests-for-GetSystemTimes.patch +++ b/patches/kernel32-GetSystemTimes/0001-kernel32-Add-tests-for-GetSystemTimes.patch @@ -1,14 +1,14 @@ -From 599947d1aaf88c78ed5affe2609c431db14bccd4 Mon Sep 17 00:00:00 2001 +From 25af9ecd4fb4120ca415afd27079b749a11b6537 Mon Sep 17 00:00:00 2001 From: Louis Lenders Date: Sun, 27 Jul 2014 11:42:28 -0600 Subject: kernel32: Add tests for GetSystemTimes. --- - dlls/kernel32/tests/time.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 76 insertions(+) + dlls/kernel32/tests/time.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 77 insertions(+) diff --git a/dlls/kernel32/tests/time.c b/dlls/kernel32/tests/time.c -index 378941d..1937e65 100644 +index d205174..5b0bf69 100644 --- a/dlls/kernel32/tests/time.c +++ b/dlls/kernel32/tests/time.c @@ -22,9 +22,11 @@ @@ -23,10 +23,10 @@ index 378941d..1937e65 100644 static int (WINAPI *pGetCalendarInfoA)(LCID,CALID,CALTYPE,LPSTR,int,LPDWORD); static int (WINAPI *pGetCalendarInfoW)(LCID,CALID,CALTYPE,LPWSTR,int,LPDWORD); static DWORD (WINAPI *pGetDynamicTimeZoneInformation)(DYNAMIC_TIME_ZONE_INFORMATION*); -@@ -760,12 +762,85 @@ static void test_GetDynamicTimeZoneInformation(void) - ok(dyninfo.TimeZoneKeyName[0] != 0, "got empty tz keyname\n"); - trace("Dyn TimeZoneKeyName %s\n", wine_dbgstr_w(dyninfo.TimeZoneKeyName)); +@@ -801,11 +803,85 @@ static void test_GetSystemTimePreciseAsFileTime(void) + ok(diff < 10000 && diff > 0, "GetSystemTimePreciseAsFileTime incremented by more than 1 ms\n"); } + +static void test_GetSystemTimes(void) +{ + @@ -99,7 +99,7 @@ index 378941d..1937e65 100644 + + HeapFree(GetProcessHeap(), 0, sppi); +} - ++ START_TEST(time) { HMODULE hKernel = GetModuleHandleA("kernel32"); @@ -109,7 +109,7 @@ index 378941d..1937e65 100644 pGetCalendarInfoA = (void *)GetProcAddress(hKernel, "GetCalendarInfoA"); pGetCalendarInfoW = (void *)GetProcAddress(hKernel, "GetCalendarInfoW"); pGetDynamicTimeZoneInformation = (void *)GetProcAddress(hKernel, "GetDynamicTimeZoneInformation"); -@@ -776,6 +851,7 @@ START_TEST(time) +@@ -817,6 +893,7 @@ START_TEST(time) test_FileTimeToSystemTime(); test_FileTimeToLocalFileTime(); test_TzSpecificLocalTimeToSystemTime(); diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index de9b5b03..0a35788e 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -55,7 +55,7 @@ version() echo "Copyright (C) 2014-2015 the Wine Staging project authors." echo "" echo "Patchset to be applied on upstream Wine:" - echo " commit f4790714fe69df7701cff666d6b5ab4be049cbf6" + echo " commit 1e8759805e3c5dfe00a31bb5f13f1c1da28d2826" echo "" } @@ -135,7 +135,6 @@ patch_enable_all () enable_kernel32_GetFinalPathNameByHandle="$1" enable_kernel32_GetLogicalProcessorInformationEx="$1" enable_kernel32_GetNumaProcessorNode="$1" - enable_kernel32_GetSystemTimePreciseAsFileTime="$1" enable_kernel32_GetSystemTimes="$1" enable_kernel32_GetVolumePathName="$1" enable_kernel32_Named_Pipe="$1" @@ -194,7 +193,6 @@ patch_enable_all () enable_ole32_CoWaitForMultipleHandles="$1" enable_opengl32_Revert_Disable_Ext="$1" enable_quartz_MediaSeeking_Positions="$1" - enable_regedit_String_Termination="$1" enable_riched20_IText_Interface="$1" enable_rpcrt4_Use_After_Free="$1" enable_secur32_ANSI_NTLM_Credentials="$1" @@ -254,11 +252,9 @@ patch_enable_all () enable_winecfg_Libraries="$1" enable_winecfg_Staging="$1" enable_winecfg_Unmounted_Devices="$1" - enable_wineconsole_Curses_Fake_Wnd="$1" enable_wined3d_CSMT_Helper="$1" enable_wined3d_CSMT_Main="$1" enable_wined3d_DXTn="$1" - enable_wined3d_Dirtify_Vertex_Shader="$1" enable_wined3d_Multisampling="$1" enable_wined3d_Revert_PixelFormat="$1" enable_wined3d_UnhandledBlendFactor="$1" @@ -471,9 +467,6 @@ patch_enable () kernel32-GetNumaProcessorNode) enable_kernel32_GetNumaProcessorNode="$2" ;; - kernel32-GetSystemTimePreciseAsFileTime) - enable_kernel32_GetSystemTimePreciseAsFileTime="$2" - ;; kernel32-GetSystemTimes) enable_kernel32_GetSystemTimes="$2" ;; @@ -648,9 +641,6 @@ patch_enable () quartz-MediaSeeking_Positions) enable_quartz_MediaSeeking_Positions="$2" ;; - regedit-String_Termination) - enable_regedit_String_Termination="$2" - ;; riched20-IText_Interface) enable_riched20_IText_Interface="$2" ;; @@ -828,9 +818,6 @@ patch_enable () winecfg-Unmounted_Devices) enable_winecfg_Unmounted_Devices="$2" ;; - wineconsole-Curses_Fake_Wnd) - enable_wineconsole_Curses_Fake_Wnd="$2" - ;; wined3d-CSMT_Helper) enable_wined3d_CSMT_Helper="$2" ;; @@ -840,9 +827,6 @@ patch_enable () wined3d-DXTn) enable_wined3d_DXTn="$2" ;; - wined3d-Dirtify_Vertex_Shader) - enable_wined3d_Dirtify_Vertex_Shader="$2" - ;; wined3d-Multisampling) enable_wined3d_Multisampling="$2" ;; @@ -1361,9 +1345,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_GetSystemTimePreciseAsFileTime" -gt 1; then - abort "Patchset kernel32-GetSystemTimePreciseAsFileTime disabled, but category-stable depends on that." - fi if test "$enable_kernel32_Named_Pipe" -gt 1; then abort "Patchset kernel32-Named_Pipe disabled, but category-stable depends on that." fi @@ -1439,9 +1420,6 @@ if test "$enable_category_stable" -eq 1; then if test "$enable_opengl32_Revert_Disable_Ext" -gt 1; then abort "Patchset opengl32-Revert_Disable_Ext disabled, but category-stable depends on that." fi - if test "$enable_regedit_String_Termination" -gt 1; then - abort "Patchset regedit-String_Termination disabled, but category-stable depends on that." - fi if test "$enable_server_Address_List_Change" -gt 1; then abort "Patchset server-Address_List_Change disabled, but category-stable depends on that." fi @@ -1505,9 +1483,6 @@ if test "$enable_category_stable" -eq 1; then if test "$enable_winecfg_Libraries" -gt 1; then abort "Patchset winecfg-Libraries disabled, but category-stable depends on that." fi - if test "$enable_wined3d_Dirtify_Vertex_Shader" -gt 1; then - abort "Patchset wined3d-Dirtify_Vertex_Shader disabled, but category-stable depends on that." - fi if test "$enable_wined3d_Multisampling" -gt 1; then abort "Patchset wined3d-Multisampling disabled, but category-stable depends on that." fi @@ -1586,7 +1561,6 @@ if test "$enable_category_stable" -eq 1; then enable_gdi32_MaxPixelFormats=1 enable_gdiplus_GdipCreateEffect=1 enable_kernel32_CompareStringEx=1 - enable_kernel32_GetSystemTimePreciseAsFileTime=1 enable_kernel32_Named_Pipe=1 enable_libs_Debug_Channel=1 enable_libs_Unicode_Collation=1 @@ -1612,7 +1586,6 @@ if test "$enable_category_stable" -eq 1; then enable_ntdll_WriteWatches=1 enable_ntoskrnl_Emulator=1 enable_opengl32_Revert_Disable_Ext=1 - enable_regedit_String_Termination=1 enable_server_Address_List_Change=1 enable_server_ClipCursor=1 enable_server_CreateProcess_ACLs=1 @@ -1634,7 +1607,6 @@ if test "$enable_category_stable" -eq 1; then enable_wineboot_MachineGuid=1 enable_winebuild_LinkerVersion=1 enable_winecfg_Libraries=1 - enable_wined3d_Dirtify_Vertex_Shader=1 enable_wined3d_Multisampling=1 enable_wined3d_Revert_PixelFormat=1 enable_wined3d_UnhandledBlendFactor=1 @@ -1811,13 +1783,6 @@ if test "$enable_kernel32_CopyFileEx" -eq 1; then enable_ntdll_FileDispositionInformation=1 fi -if test "$enable_kernel32_SetFileInformationByHandle" -eq 1; then - if test "$enable_kernel32_SetFileCompletionNotificationMode" -gt 1; then - abort "Patchset kernel32-SetFileCompletionNotificationMode disabled, but kernel32-SetFileInformationByHandle depends on that." - fi - enable_kernel32_SetFileCompletionNotificationMode=1 -fi - if test "$enable_ntdll_FileDispositionInformation" -eq 1; then if test "$enable_server_File_Permissions" -gt 1; then abort "Patchset server-File_Permissions disabled, but ntdll-FileDispositionInformation depends on that." @@ -1825,6 +1790,13 @@ if test "$enable_ntdll_FileDispositionInformation" -eq 1; then enable_server_File_Permissions=1 fi +if test "$enable_kernel32_SetFileInformationByHandle" -eq 1; then + if test "$enable_kernel32_SetFileCompletionNotificationMode" -gt 1; then + abort "Patchset kernel32-SetFileCompletionNotificationMode disabled, but kernel32-SetFileInformationByHandle depends on that." + fi + enable_kernel32_SetFileCompletionNotificationMode=1 +fi + if test "$enable_dxva2_Video_Decoder" -eq 1; then if test "$enable_winecfg_Staging" -gt 1; then abort "Patchset winecfg-Staging disabled, but dxva2-Video_Decoder depends on that." @@ -2057,6 +2029,23 @@ if test "$enable_advapi32_ImpersonateAnonymousToken" -eq 1; then ) >> "$patchlist" fi +# Patchset server-Misc_ACL +# | +# | This patchset fixes the following Wine bugs: +# | * [#15980] GetSecurityInfo returns NULL DACL for process object +# | +# | Modified files: +# | * dlls/advapi32/tests/security.c, server/process.c, server/security.h, server/token.c +# | +if test "$enable_server_Misc_ACL" -eq 1; then + patch_apply server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch + patch_apply server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch + ( + echo '+ { "Erich E. Hoover", "server: Add default security descriptor ownership for processes.", 1 },'; + echo '+ { "Erich E. Hoover", "server: Add default security descriptor DACL for processes.", 1 },'; + ) >> "$patchlist" +fi + # Patchset server-CreateProcess_ACLs # | # | This patchset fixes the following Wine bugs: @@ -2076,23 +2065,6 @@ if test "$enable_server_CreateProcess_ACLs" -eq 1; then ) >> "$patchlist" fi -# Patchset server-Misc_ACL -# | -# | This patchset fixes the following Wine bugs: -# | * [#15980] GetSecurityInfo returns NULL DACL for process object -# | -# | Modified files: -# | * dlls/advapi32/tests/security.c, server/process.c, server/security.h, server/token.c -# | -if test "$enable_server_Misc_ACL" -eq 1; then - patch_apply server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch - patch_apply server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch - ( - echo '+ { "Erich E. Hoover", "server: Add default security descriptor ownership for processes.", 1 },'; - echo '+ { "Erich E. Hoover", "server: Add default security descriptor DACL for processes.", 1 },'; - ) >> "$patchlist" -fi - # Patchset advapi32-LsaLookupSids # | # | Modified files: @@ -2758,21 +2730,6 @@ if test "$enable_wined3d_CSMT_Helper" -eq 1; then ) >> "$patchlist" fi -# Patchset wined3d-Dirtify_Vertex_Shader -# | -# | This patchset fixes the following Wine bugs: -# | * [#38539] Dirtify vertex shader on transformed update to fix graphical corruption -# | -# | Modified files: -# | * dlls/wined3d/glsl_shader.c -# | -if test "$enable_wined3d_Dirtify_Vertex_Shader" -eq 1; then - patch_apply wined3d-Dirtify_Vertex_Shader/0001-wined3d-Dirtify-vertex-shader-on-transformed-untrans.patch - ( - echo '+ { "Matteo Bruni", "wined3d: Dirtify vertex shader on transformed <-> untransformed transition.", 1 },'; - ) >> "$patchlist" -fi - # Patchset wined3d-Multisampling # | # | This patchset fixes the following Wine bugs: @@ -3464,6 +3421,36 @@ if test "$enable_kernel32_CompareStringEx" -eq 1; then ) >> "$patchlist" fi +# Patchset kernel32-SetFileCompletionNotificationMode +# | +# | This patchset fixes the following Wine bugs: +# | * [#38493] Add stub for kernel32.SetFileCompletionNotificationModes (for Steam in Win7 mode) +# | +# | Modified files: +# | * dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec, dlls/kernel32/file.c, +# | dlls/kernel32/kernel32.spec, include/winbase.h +# | +if test "$enable_kernel32_SetFileCompletionNotificationMode" -eq 1; then + patch_apply kernel32-SetFileCompletionNotificationMode/0001-kernel32-Implement-SetFileCompletionNotificationMode.patch + ( + echo '+ { "Olivier F. R. Dierick", "kernel32: Implement SetFileCompletionNotificationModes as a stub.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset kernel32-SetFileInformationByHandle +# | +# | Modified files: +# | * dlls/kernel32/file.c, include/winbase.h +# | +if test "$enable_kernel32_SetFileInformationByHandle" -eq 1; then + patch_apply kernel32-SetFileInformationByHandle/0001-include-Declare-a-couple-more-file-information-class.patch + patch_apply kernel32-SetFileInformationByHandle/0002-kernel32-Implement-SetFileInformationByHandle.patch + ( + echo '+ { "Michael Müller", "include: Declare a couple more file information class structures.", 1 },'; + echo '+ { "Michael Müller", "kernel32: Implement SetFileInformationByHandle.", 1 },'; + ) >> "$patchlist" +fi + # Patchset server-File_Permissions # | # | Modified files: @@ -3505,36 +3492,6 @@ if test "$enable_ntdll_FileDispositionInformation" -eq 1; then ) >> "$patchlist" fi -# Patchset kernel32-SetFileCompletionNotificationMode -# | -# | This patchset fixes the following Wine bugs: -# | * [#38493] Add stub for kernel32.SetFileCompletionNotificationModes (for Steam in Win7 mode) -# | -# | Modified files: -# | * dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec, dlls/kernel32/file.c, -# | dlls/kernel32/kernel32.spec, include/winbase.h -# | -if test "$enable_kernel32_SetFileCompletionNotificationMode" -eq 1; then - patch_apply kernel32-SetFileCompletionNotificationMode/0001-kernel32-Implement-SetFileCompletionNotificationMode.patch - ( - echo '+ { "Olivier F. R. Dierick", "kernel32: Implement SetFileCompletionNotificationModes as a stub.", 1 },'; - ) >> "$patchlist" -fi - -# Patchset kernel32-SetFileInformationByHandle -# | -# | Modified files: -# | * dlls/kernel32/file.c, include/winbase.h -# | -if test "$enable_kernel32_SetFileInformationByHandle" -eq 1; then - patch_apply kernel32-SetFileInformationByHandle/0001-include-Declare-a-couple-more-file-information-class.patch - patch_apply kernel32-SetFileInformationByHandle/0002-kernel32-Implement-SetFileInformationByHandle.patch - ( - echo '+ { "Michael Müller", "include: Declare a couple more file information class structures.", 1 },'; - echo '+ { "Michael Müller", "kernel32: Implement SetFileInformationByHandle.", 1 },'; - ) >> "$patchlist" -fi - # Patchset kernel32-CopyFileEx # | # | This patchset fixes the following Wine bugs: @@ -3594,22 +3551,6 @@ if test "$enable_kernel32_GetNumaProcessorNode" -eq 1; then ) >> "$patchlist" fi -# Patchset kernel32-GetSystemTimePreciseAsFileTime -# | -# | This patchset fixes the following Wine bugs: -# | * [#38513] Implement kernel32.GetSystemTimePreciseAsFileTime -# | -# | Modified files: -# | * dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec, dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win- -# | core-sysinfo-l1-2-1.spec, dlls/kernel32/kernel32.spec, dlls/kernel32/time.c, include/winbase.h -# | -if test "$enable_kernel32_GetSystemTimePreciseAsFileTime" -eq 1; then - patch_apply kernel32-GetSystemTimePreciseAsFileTime/0001-kernel32-Implement-GetSystemTimePreciseAsFileTime.patch - ( - echo '+ { "Martin Storsjo", "kernel32: Implement GetSystemTimePreciseAsFileTime.", 1 },'; - ) >> "$patchlist" -fi - # Patchset kernel32-GetSystemTimes # | # | This patchset fixes the following Wine bugs: @@ -4579,21 +4520,6 @@ if test "$enable_quartz_MediaSeeking_Positions" -eq 1; then ) >> "$patchlist" fi -# Patchset regedit-String_Termination -# | -# | This patchset fixes the following Wine bugs: -# | * [#37575] Do not append duplicate NULL characters when importing keys with regedit -# | -# | Modified files: -# | * programs/regedit/regproc.c -# | -if test "$enable_regedit_String_Termination" -eq 1; then - patch_apply regedit-String_Termination/0001-regedit-Avoid-appending-and-0-to-string-value-of-imp.patch - ( - echo '+ { "Jiaxing Wang", "regedit: Avoid appending '\''\\\\0'\'' to string value of imported key.", 1 },'; - ) >> "$patchlist" -fi - # Patchset riched20-IText_Interface # | # | This patchset fixes the following Wine bugs: @@ -5472,21 +5398,6 @@ if test "$enable_winecfg_Unmounted_Devices" -eq 1; then ) >> "$patchlist" fi -# Patchset wineconsole-Curses_Fake_Wnd -# | -# | This patchset fixes the following Wine bugs: -# | * [#34930] Allocate fake hWnd for wineconsole curses backend -# | -# | Modified files: -# | * programs/wineconsole/curses.c -# | -if test "$enable_wineconsole_Curses_Fake_Wnd" -eq 1; then - patch_apply wineconsole-Curses_Fake_Wnd/0001-wineconsole-Allocate-fake-hwnds-for-curses-backend.patch - ( - echo '+ { "Sebastian Lackner", "wineconsole: Allocate fake hwnds for curses backend.", 1 },'; - ) >> "$patchlist" -fi - # Patchset winedevice-Fix_Relocation # | # | This patchset fixes the following Wine bugs: diff --git a/patches/regedit-String_Termination/0001-regedit-Avoid-appending-and-0-to-string-value-of-imp.patch b/patches/regedit-String_Termination/0001-regedit-Avoid-appending-and-0-to-string-value-of-imp.patch deleted file mode 100644 index 61ce9c4d..00000000 --- a/patches/regedit-String_Termination/0001-regedit-Avoid-appending-and-0-to-string-value-of-imp.patch +++ /dev/null @@ -1,38 +0,0 @@ -From ec88679b1ecd54f40dccaf374ca21bb96441a18a Mon Sep 17 00:00:00 2001 -From: Jiaxing Wang -Date: Thu, 20 Nov 2014 15:29:07 +0800 -Subject: regedit: Avoid appending '\0' to string value of imported key. - -After importing, string values are appended with '\0'. -For example, importing: - -[HKEY_LOCAL_MACHINE\testkey] -"value"="abc" - -gets - -[HKEY_LOCAL_MACHINE\testkey] -"value"="abc\0" - -This is because the null character after last quote is included -which is not needed as the last quote has been changed to '\0' and -dwLen already include the last quote. ---- - programs/regedit/regproc.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c -index 80beb21..643b559 100644 ---- a/programs/regedit/regproc.c -+++ b/programs/regedit/regproc.c -@@ -376,7 +376,6 @@ static LONG setValue(WCHAR* val_name, WCHAR* val_data, BOOL is_unicode) - return ERROR_INVALID_DATA; - val_data[dwLen-1] = '\0'; /* remove last quotes */ - lpbData = (BYTE*) val_data; -- dwLen++; /* include terminating null */ - dwLen = dwLen * sizeof(WCHAR); /* size is in bytes */ - } - else if (dwParseType == REG_DWORD) /* Convert the dword types */ --- -2.2.1 - diff --git a/patches/regedit-String_Termination/definition b/patches/regedit-String_Termination/definition deleted file mode 100644 index 8ed5a300..00000000 --- a/patches/regedit-String_Termination/definition +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: [37575] Do not append duplicate NULL characters when importing keys with regedit -Category: stable diff --git a/patches/riched20-IText_Interface/0001-riched20-Implement-IText-Selection-Range-Set-Start-E.patch b/patches/riched20-IText_Interface/0001-riched20-Implement-IText-Selection-Range-Set-Start-E.patch index 8f63f4f8..914a6a65 100644 --- a/patches/riched20-IText_Interface/0001-riched20-Implement-IText-Selection-Range-Set-Start-E.patch +++ b/patches/riched20-IText_Interface/0001-riched20-Implement-IText-Selection-Range-Set-Start-E.patch @@ -1,4 +1,4 @@ -From c75a9af77ea3cc0abea38a7c595b52093b4d166a Mon Sep 17 00:00:00 2001 +From 5dac9e4ab5b7df2ab94e2338b425b83249515169 Mon Sep 17 00:00:00 2001 From: Jactry Zeng Date: Fri, 8 Aug 2014 21:32:57 +0800 Subject: riched20: Implement IText{Selection, Range}::Set{Start, End}. @@ -9,10 +9,10 @@ Subject: riched20: Implement IText{Selection, Range}::Set{Start, End}. 2 files changed, 177 insertions(+), 4 deletions(-) diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c -index 4f85325..55dda9b 100644 +index c9c75b8..64579a6 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c -@@ -2995,14 +2995,33 @@ static HRESULT WINAPI ITextSelection_fnGetStart(ITextSelection *me, LONG *pcpFir +@@ -3233,14 +3233,33 @@ static HRESULT WINAPI ITextSelection_fnGetStart(ITextSelection *me, LONG *pcpFir return S_OK; } @@ -48,7 +48,7 @@ index 4f85325..55dda9b 100644 } static HRESULT WINAPI ITextSelection_fnGetEnd(ITextSelection *me, LONG *pcpLim) -@@ -3019,14 +3038,33 @@ static HRESULT WINAPI ITextSelection_fnGetEnd(ITextSelection *me, LONG *pcpLim) +@@ -3257,14 +3276,33 @@ static HRESULT WINAPI ITextSelection_fnGetEnd(ITextSelection *me, LONG *pcpLim) return S_OK; } @@ -83,12 +83,12 @@ index 4f85325..55dda9b 100644 + return hres; } - static HRESULT WINAPI ITextSelection_fnGetFont(ITextSelection *me, ITextFont **pFont) + static HRESULT WINAPI ITextSelection_fnGetFont(ITextSelection *me, ITextFont **font) diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c -index d826298..9a52f78 100644 +index a47d31f..a553519 100644 --- a/dlls/riched20/tests/richole.c +++ b/dlls/riched20/tests/richole.c -@@ -1347,6 +1347,137 @@ todo_wine { +@@ -1415,6 +1415,137 @@ todo_wine { release_interfaces(&hwnd, &reOle, &doc, NULL); } @@ -226,7 +226,7 @@ index d826298..9a52f78 100644 START_TEST(richole) { /* Must explicitly LoadLibrary(). The test has no references to functions in -@@ -1359,12 +1490,16 @@ START_TEST(richole) +@@ -1427,12 +1558,16 @@ START_TEST(richole) test_ITextSelection_GetText(); test_ITextSelection_GetChar(); test_ITextSelection_GetStart_GetEnd(); 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 5b94baf8..9565d05a 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,80 +1,27 @@ -From 3dbb76ac15c52c9d190f7dc9c0ebf1aa9849d033 Mon Sep 17 00:00:00 2001 +From cc36959dd99ee77266b9b93d759934124457abc3 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 | 361 ++++++++++++++++++++++++++++++++++++++++-- - dlls/riched20/tests/richole.c | 93 +++++++++++ - 2 files changed, 438 insertions(+), 16 deletions(-) + dlls/riched20/richole.c | 220 +++++++++++++++++++++++++++++++++++++++++- + dlls/riched20/tests/richole.c | 93 ++++++++++++++++++ + 2 files changed, 312 insertions(+), 1 deletion(-) diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c -index b3566e5..54448f5 100644 +index 64579a6..71fb311 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c -@@ -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; -+typedef struct ITextFontImpl ITextFontImpl; - - typedef struct IRichEditOleImpl { - IUnknown IUnknown_inner; -@@ -87,6 +88,7 @@ typedef struct ITextFontImpl { - LONG ref; - - ITextRange *range; -+ ITextSelection *selection; - } ITextFontImpl; - - typedef struct ITextParaImpl { -@@ -150,7 +152,7 @@ static inline ITextParaImpl *impl_from_ITextPara(ITextPara *iface) - return CONTAINING_RECORD(iface, ITextParaImpl, ITextPara_iface); - } - --static HRESULT create_textfont(ITextRange*, ITextFont**); -+static HRESULT create_textfont(ITextRange*, ITextSelection*, ITextFont**); - static HRESULT create_textpara(ITextRange*, ITextPara**); - - enum textfont_prop_id { -@@ -1108,7 +1110,7 @@ static HRESULT WINAPI ITextRange_fnGetFont(ITextRange *me, ITextFont **font) - if (!font) - return E_INVALIDARG; - -- return create_textfont(me, font); -+ return create_textfont(me, NULL, font); - } - - static HRESULT WINAPI ITextRange_fnSetFont(ITextRange *me, ITextFont *pFont) -@@ -1632,16 +1634,39 @@ static ULONG WINAPI TextFont_Release(ITextFont *iface) - - if (!ref) - { -- ITextRange_Release(This->range); -+ if (This->range) -+ ITextRange_Release(This->range); -+ if (This->selection) -+ ITextSelection_Release(This->selection); - heap_free(This); - } - +@@ -1749,9 +1749,21 @@ static ULONG WINAPI TextFont_Release(ITextFont *iface) return ref; } +static IRichEditOleImpl *font_get_reole(ITextFontImpl *This) +{ -+ if (This->range) -+ { -+ ITextRangeImpl *rng = impl_from_ITextRange(This->range); -+ return rng->reOle; -+ } -+ if (This->selection) -+ { -+ ITextSelectionImpl *sel = impl_from_ITextSelection(This->selection); -+ return sel->reOle; -+ } -+ return NULL; ++ IRichEditOleImpl *reole; ++ ITextRange_QueryInterface(This->range, &IID_Igetrichole, (void**)&reole); ++ return reole; +} + static HRESULT WINAPI TextFont_GetTypeInfoCount(ITextFont *iface, UINT *pctinfo) @@ -88,7 +35,7 @@ index b3566e5..54448f5 100644 *pctinfo = 0; return E_NOTIMPL; } -@@ -1649,14 +1674,24 @@ static HRESULT WINAPI TextFont_GetTypeInfoCount(ITextFont *iface, UINT *pctinfo) +@@ -1759,14 +1771,24 @@ static HRESULT WINAPI TextFont_GetTypeInfoCount(ITextFont *iface, UINT *pctinfo) static HRESULT WINAPI TextFont_GetTypeInfo(ITextFont *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) { @@ -113,7 +60,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1671,7 +1706,12 @@ static HRESULT WINAPI TextFont_Invoke( +@@ -1781,7 +1803,12 @@ static HRESULT WINAPI TextFont_Invoke( EXCEPINFO *pExcepInfo, UINT *puArgErr) { @@ -126,7 +73,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1679,6 +1719,10 @@ static HRESULT WINAPI TextFont_GetDuplicate(ITextFont *iface, ITextFont **ret) +@@ -1789,6 +1816,10 @@ static HRESULT WINAPI TextFont_GetDuplicate(ITextFont *iface, ITextFont **ret) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, ret); @@ -137,7 +84,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1686,6 +1730,10 @@ static HRESULT WINAPI TextFont_SetDuplicate(ITextFont *iface, ITextFont *pFont) +@@ -1796,6 +1827,10 @@ static HRESULT WINAPI TextFont_SetDuplicate(ITextFont *iface, ITextFont *pFont) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, pFont); @@ -148,7 +95,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1693,6 +1741,10 @@ static HRESULT WINAPI TextFont_CanChange(ITextFont *iface, LONG *ret) +@@ -1803,6 +1838,10 @@ static HRESULT WINAPI TextFont_CanChange(ITextFont *iface, LONG *ret) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, ret); @@ -159,7 +106,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1700,6 +1752,10 @@ static HRESULT WINAPI TextFont_IsEqual(ITextFont *iface, ITextFont *font, LONG * +@@ -1810,6 +1849,10 @@ static HRESULT WINAPI TextFont_IsEqual(ITextFont *iface, ITextFont *font, LONG * { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, ret); @@ -170,7 +117,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1707,6 +1763,10 @@ static HRESULT WINAPI TextFont_Reset(ITextFont *iface, LONG value) +@@ -1817,6 +1860,10 @@ static HRESULT WINAPI TextFont_Reset(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p): stub\n", This); @@ -181,7 +128,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1714,6 +1774,10 @@ static HRESULT WINAPI TextFont_GetStyle(ITextFont *iface, LONG *value) +@@ -1824,6 +1871,10 @@ static HRESULT WINAPI TextFont_GetStyle(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -192,7 +139,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1721,6 +1785,10 @@ static HRESULT WINAPI TextFont_SetStyle(ITextFont *iface, LONG value) +@@ -1831,6 +1882,10 @@ static HRESULT WINAPI TextFont_SetStyle(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -203,7 +150,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1728,6 +1796,10 @@ static HRESULT WINAPI TextFont_GetAllCaps(ITextFont *iface, LONG *value) +@@ -1838,6 +1893,10 @@ static HRESULT WINAPI TextFont_GetAllCaps(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -214,7 +161,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1735,6 +1807,10 @@ static HRESULT WINAPI TextFont_SetAllCaps(ITextFont *iface, LONG value) +@@ -1845,6 +1904,10 @@ static HRESULT WINAPI TextFont_SetAllCaps(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -225,7 +172,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1742,6 +1818,10 @@ static HRESULT WINAPI TextFont_GetAnimation(ITextFont *iface, LONG *value) +@@ -1852,6 +1915,10 @@ static HRESULT WINAPI TextFont_GetAnimation(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -236,7 +183,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1749,6 +1829,10 @@ static HRESULT WINAPI TextFont_SetAnimation(ITextFont *iface, LONG value) +@@ -1859,6 +1926,10 @@ static HRESULT WINAPI TextFont_SetAnimation(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -247,7 +194,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1756,6 +1840,10 @@ static HRESULT WINAPI TextFont_GetBackColor(ITextFont *iface, LONG *value) +@@ -1866,6 +1937,10 @@ static HRESULT WINAPI TextFont_GetBackColor(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -258,7 +205,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1763,6 +1851,10 @@ static HRESULT WINAPI TextFont_SetBackColor(ITextFont *iface, LONG value) +@@ -1873,6 +1948,10 @@ static HRESULT WINAPI TextFont_SetBackColor(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -269,28 +216,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1770,13 +1862,30 @@ static HRESULT WINAPI TextFont_GetBold(ITextFont *iface, LONG *value) - { - ITextFontImpl *This = impl_from_ITextFont(iface); - TRACE("(%p)->(%p)\n", This, value); -- return get_textfont_prop(This->range, FONT_BOLD, value); -+ -+ if (This->range) -+ return get_textfont_prop(This->range, FONT_BOLD, value); -+ -+ if (!value) -+ return E_INVALIDARG; -+ -+ *value = tomUndefined; -+ -+ if (!font_get_reole(This)) -+ return CO_E_RELEASED; -+ -+ FIXME("not implemented\n"); -+ return E_NOTIMPL; - } - - static HRESULT WINAPI TextFont_SetBold(ITextFont *iface, LONG value) +@@ -1887,6 +1966,10 @@ static HRESULT WINAPI TextFont_SetBold(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -301,7 +227,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1784,6 +1893,10 @@ static HRESULT WINAPI TextFont_GetEmboss(ITextFont *iface, LONG *value) +@@ -1894,6 +1977,10 @@ static HRESULT WINAPI TextFont_GetEmboss(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -312,7 +238,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1791,6 +1904,10 @@ static HRESULT WINAPI TextFont_SetEmboss(ITextFont *iface, LONG value) +@@ -1901,6 +1988,10 @@ static HRESULT WINAPI TextFont_SetEmboss(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -323,25 +249,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1798,13 +1915,27 @@ static HRESULT WINAPI TextFont_GetForeColor(ITextFont *iface, LONG *value) - { - ITextFontImpl *This = impl_from_ITextFont(iface); - FIXME("(%p)->(%p): stub\n", This, value); -- return E_NOTIMPL; -+ -+ if (!value) -+ return E_INVALIDARG; -+ -+ *value = tomUndefined; -+ -+ if (!font_get_reole(This)) -+ return CO_E_RELEASED; -+ -+ *value = tomAutoColor; -+ return S_OK; - } - - static HRESULT WINAPI TextFont_SetForeColor(ITextFont *iface, LONG value) +@@ -1915,6 +2006,10 @@ static HRESULT WINAPI TextFont_SetForeColor(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -352,7 +260,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1812,6 +1943,10 @@ static HRESULT WINAPI TextFont_GetHidden(ITextFont *iface, LONG *value) +@@ -1922,6 +2017,10 @@ static HRESULT WINAPI TextFont_GetHidden(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -363,7 +271,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1819,6 +1954,10 @@ static HRESULT WINAPI TextFont_SetHidden(ITextFont *iface, LONG value) +@@ -1929,6 +2028,10 @@ static HRESULT WINAPI TextFont_SetHidden(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -374,7 +282,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1826,6 +1965,10 @@ static HRESULT WINAPI TextFont_GetEngrave(ITextFont *iface, LONG *value) +@@ -1936,6 +2039,10 @@ static HRESULT WINAPI TextFont_GetEngrave(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -385,7 +293,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1833,6 +1976,10 @@ static HRESULT WINAPI TextFont_SetEngrave(ITextFont *iface, LONG value) +@@ -1943,6 +2050,10 @@ static HRESULT WINAPI TextFont_SetEngrave(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -396,28 +304,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1840,13 +1987,30 @@ static HRESULT WINAPI TextFont_GetItalic(ITextFont *iface, LONG *value) - { - ITextFontImpl *This = impl_from_ITextFont(iface); - TRACE("(%p)->(%p)\n", This, value); -- return get_textfont_prop(This->range, FONT_ITALIC, value); -+ -+ if (This->range) -+ return get_textfont_prop(This->range, FONT_ITALIC, value); -+ -+ if (!value) -+ return E_INVALIDARG; -+ -+ *value = tomUndefined; -+ -+ if (!font_get_reole(This)) -+ return CO_E_RELEASED; -+ -+ FIXME("not implemented\n"); -+ return E_NOTIMPL; - } - - static HRESULT WINAPI TextFont_SetItalic(ITextFont *iface, LONG value) +@@ -1957,6 +2068,10 @@ static HRESULT WINAPI TextFont_SetItalic(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -428,7 +315,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1854,6 +2018,10 @@ static HRESULT WINAPI TextFont_GetKerning(ITextFont *iface, FLOAT *value) +@@ -1964,6 +2079,10 @@ static HRESULT WINAPI TextFont_GetKerning(ITextFont *iface, FLOAT *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -439,7 +326,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1861,6 +2029,10 @@ static HRESULT WINAPI TextFont_SetKerning(ITextFont *iface, FLOAT value) +@@ -1971,6 +2090,10 @@ static HRESULT WINAPI TextFont_SetKerning(ITextFont *iface, FLOAT value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%.2f): stub\n", This, value); @@ -450,18 +337,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1868,6 +2040,10 @@ static HRESULT WINAPI TextFont_GetLanguageID(ITextFont *iface, LONG *value) - { - ITextFontImpl *This = impl_from_ITextFont(iface); - FIXME("(%p)->(%p): stub\n", This, value); -+ -+ if (!font_get_reole(This)) -+ return CO_E_RELEASED; -+ - return E_NOTIMPL; - } - -@@ -1875,20 +2051,40 @@ static HRESULT WINAPI TextFont_SetLanguageID(ITextFont *iface, LONG value) +@@ -1985,20 +2108,39 @@ static HRESULT WINAPI TextFont_SetLanguageID(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -476,7 +352,6 @@ index b3566e5..54448f5 100644 { ITextFontImpl *This = impl_from_ITextFont(iface); + static const WCHAR font[] = {'S', 'y', 's', 't', 'e', 'm', 0}; -+ FIXME("(%p)->(%p): stub\n", This, value); - return E_NOTIMPL; + @@ -503,7 +378,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1896,6 +2092,10 @@ static HRESULT WINAPI TextFont_GetOutline(ITextFont *iface, LONG *value) +@@ -2006,6 +2148,10 @@ static HRESULT WINAPI TextFont_GetOutline(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -514,7 +389,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1903,6 +2103,10 @@ static HRESULT WINAPI TextFont_SetOutline(ITextFont *iface, LONG value) +@@ -2013,6 +2159,10 @@ static HRESULT WINAPI TextFont_SetOutline(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -525,7 +400,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1910,6 +2114,10 @@ static HRESULT WINAPI TextFont_GetPosition(ITextFont *iface, FLOAT *value) +@@ -2020,6 +2170,10 @@ static HRESULT WINAPI TextFont_GetPosition(ITextFont *iface, FLOAT *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -536,7 +411,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1917,6 +2125,10 @@ static HRESULT WINAPI TextFont_SetPosition(ITextFont *iface, FLOAT value) +@@ -2027,6 +2181,10 @@ static HRESULT WINAPI TextFont_SetPosition(ITextFont *iface, FLOAT value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%.2f): stub\n", This, value); @@ -547,7 +422,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1924,6 +2136,10 @@ static HRESULT WINAPI TextFont_GetProtected(ITextFont *iface, LONG *value) +@@ -2034,6 +2192,10 @@ static HRESULT WINAPI TextFont_GetProtected(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -558,7 +433,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1931,6 +2147,10 @@ static HRESULT WINAPI TextFont_SetProtected(ITextFont *iface, LONG value) +@@ -2041,6 +2203,10 @@ static HRESULT WINAPI TextFont_SetProtected(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -569,7 +444,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1938,6 +2158,10 @@ static HRESULT WINAPI TextFont_GetShadow(ITextFont *iface, LONG *value) +@@ -2048,6 +2214,10 @@ static HRESULT WINAPI TextFont_GetShadow(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -580,7 +455,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1945,6 +2169,10 @@ static HRESULT WINAPI TextFont_SetShadow(ITextFont *iface, LONG value) +@@ -2055,6 +2225,10 @@ static HRESULT WINAPI TextFont_SetShadow(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -591,25 +466,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1952,13 +2180,27 @@ static HRESULT WINAPI TextFont_GetSize(ITextFont *iface, FLOAT *value) - { - ITextFontImpl *This = impl_from_ITextFont(iface); - FIXME("(%p)->(%p): stub\n", This, value); -- return E_NOTIMPL; -+ -+ if (!value) -+ return E_INVALIDARG; -+ -+ *value = 0.0; -+ -+ if (!font_get_reole(This)) -+ return CO_E_RELEASED; -+ -+ *value = 12.0; -+ return S_OK; - } - - static HRESULT WINAPI TextFont_SetSize(ITextFont *iface, FLOAT value) +@@ -2069,6 +2243,10 @@ static HRESULT WINAPI TextFont_SetSize(ITextFont *iface, FLOAT value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%.2f): stub\n", This, value); @@ -620,7 +477,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1966,6 +2208,10 @@ static HRESULT WINAPI TextFont_GetSmallCaps(ITextFont *iface, LONG *value) +@@ -2076,6 +2254,10 @@ static HRESULT WINAPI TextFont_GetSmallCaps(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -631,7 +488,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1973,6 +2219,10 @@ static HRESULT WINAPI TextFont_SetSmallCaps(ITextFont *iface, LONG value) +@@ -2083,6 +2265,10 @@ static HRESULT WINAPI TextFont_SetSmallCaps(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -642,7 +499,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1980,6 +2230,10 @@ static HRESULT WINAPI TextFont_GetSpacing(ITextFont *iface, FLOAT *value) +@@ -2090,6 +2276,10 @@ static HRESULT WINAPI TextFont_GetSpacing(ITextFont *iface, FLOAT *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -653,7 +510,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1987,6 +2241,10 @@ static HRESULT WINAPI TextFont_SetSpacing(ITextFont *iface, FLOAT value) +@@ -2097,6 +2287,10 @@ static HRESULT WINAPI TextFont_SetSpacing(ITextFont *iface, FLOAT value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%.2f): stub\n", This, value); @@ -664,25 +521,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -1994,13 +2252,27 @@ static HRESULT WINAPI TextFont_GetStrikeThrough(ITextFont *iface, LONG *value) - { - ITextFontImpl *This = impl_from_ITextFont(iface); - FIXME("(%p)->(%p): stub\n", This, value); -- return E_NOTIMPL; -+ -+ if (!value) -+ return E_INVALIDARG; -+ -+ *value = tomUndefined; -+ -+ if (!font_get_reole(This)) -+ return CO_E_RELEASED; -+ -+ *value = tomFalse; -+ return S_OK; - } - - static HRESULT WINAPI TextFont_SetStrikeThrough(ITextFont *iface, LONG value) +@@ -2111,6 +2305,10 @@ static HRESULT WINAPI TextFont_SetStrikeThrough(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -693,25 +532,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -2008,13 +2280,27 @@ static HRESULT WINAPI TextFont_GetSubscript(ITextFont *iface, LONG *value) - { - ITextFontImpl *This = impl_from_ITextFont(iface); - FIXME("(%p)->(%p): stub\n", This, value); -- return E_NOTIMPL; -+ -+ if (!value) -+ return E_INVALIDARG; -+ -+ *value = tomUndefined; -+ -+ if (!font_get_reole(This)) -+ return CO_E_RELEASED; -+ -+ *value = tomFalse; -+ return S_OK; - } - - static HRESULT WINAPI TextFont_SetSubscript(ITextFont *iface, LONG value) +@@ -2125,6 +2323,10 @@ static HRESULT WINAPI TextFont_SetSubscript(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -722,25 +543,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -2022,13 +2308,27 @@ static HRESULT WINAPI TextFont_GetSuperscript(ITextFont *iface, LONG *value) - { - ITextFontImpl *This = impl_from_ITextFont(iface); - FIXME("(%p)->(%p): stub\n", This, value); -- return E_NOTIMPL; -+ -+ if (value) -+ return E_INVALIDARG; -+ -+ *value = tomUndefined; -+ -+ if (!font_get_reole(This)) -+ return CO_E_RELEASED; -+ -+ *value = tomFalse; -+ return S_OK; - } - - static HRESULT WINAPI TextFont_SetSuperscript(ITextFont *iface, LONG value) +@@ -2139,6 +2341,10 @@ static HRESULT WINAPI TextFont_SetSuperscript(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -751,25 +554,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -2036,13 +2336,27 @@ static HRESULT WINAPI TextFont_GetUnderline(ITextFont *iface, LONG *value) - { - ITextFontImpl *This = impl_from_ITextFont(iface); - FIXME("(%p)->(%p): stub\n", This, value); -- return E_NOTIMPL; -+ -+ if (!value) -+ return E_INVALIDARG; -+ -+ *value = tomUndefined; -+ -+ if (!font_get_reole(This)) -+ return CO_E_RELEASED; -+ -+ *value = tomNone; -+ return S_OK; - } - - static HRESULT WINAPI TextFont_SetUnderline(ITextFont *iface, LONG value) +@@ -2153,6 +2359,10 @@ static HRESULT WINAPI TextFont_SetUnderline(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -780,7 +565,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -2050,6 +2364,10 @@ static HRESULT WINAPI TextFont_GetWeight(ITextFont *iface, LONG *value) +@@ -2160,6 +2370,10 @@ static HRESULT WINAPI TextFont_GetWeight(ITextFont *iface, LONG *value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%p): stub\n", This, value); @@ -791,7 +576,7 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -2057,6 +2375,10 @@ static HRESULT WINAPI TextFont_SetWeight(ITextFont *iface, LONG value) +@@ -2167,6 +2381,10 @@ static HRESULT WINAPI TextFont_SetWeight(ITextFont *iface, LONG value) { ITextFontImpl *This = impl_from_ITextFont(iface); FIXME("(%p)->(%d): stub\n", This, value); @@ -802,50 +587,11 @@ index b3566e5..54448f5 100644 return E_NOTIMPL; } -@@ -2125,7 +2447,7 @@ static ITextFontVtbl textfontvtbl = { - TextFont_SetWeight - }; - --static HRESULT create_textfont(ITextRange *range, ITextFont **ret) -+static HRESULT create_textfont(ITextRange *range, ITextSelection *selection, ITextFont **ret) - { - ITextFontImpl *font; - -@@ -2137,7 +2459,9 @@ static HRESULT create_textfont(ITextRange *range, ITextFont **ret) - font->ITextFont_iface.lpVtbl = &textfontvtbl; - font->ref = 1; - font->range = range; -- ITextRange_AddRef(range); -+ font->selection = selection; -+ if (range) ITextRange_AddRef(range); -+ if (selection) ITextSelection_AddRef(selection); - - *ret = &font->ITextFont_iface; - return S_OK; -@@ -3191,11 +3515,16 @@ static HRESULT WINAPI ITextSelection_fnSetEnd(ITextSelection *me, LONG cpLim) - static HRESULT WINAPI ITextSelection_fnGetFont(ITextSelection *me, ITextFont **pFont) - { - ITextSelectionImpl *This = impl_from_ITextSelection(me); -+ -+ TRACE("(%p)->(%p)\n", This, pFont); -+ - if (!This->reOle) - return CO_E_RELEASED; - -- FIXME("not implemented\n"); -- return E_NOTIMPL; -+ if (!pFont) -+ return E_INVALIDARG; -+ -+ return create_textfont(NULL, me, pFont); - } - - static HRESULT WINAPI ITextSelection_fnSetFont(ITextSelection *me, ITextFont *pFont) diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c -index e9ae68b..070b05a 100644 +index a553519..40577b3 100644 --- a/dlls/riched20/tests/richole.c +++ b/dlls/riched20/tests/richole.c -@@ -1506,6 +1506,97 @@ static void test_ITextSelection_SetEnd(void) +@@ -1546,6 +1546,97 @@ static void test_ITextSelection_SetEnd(void) release_interfaces(&w, &reOle, &txtDoc, &txtSel); } @@ -943,7 +689,7 @@ index e9ae68b..070b05a 100644 START_TEST(richole) { /* Must explicitly LoadLibrary(). The test has no references to functions in -@@ -1521,6 +1612,7 @@ START_TEST(richole) +@@ -1561,6 +1652,7 @@ START_TEST(richole) test_ITextSelection_SetStart(); test_ITextSelection_SetEnd(); test_ITextSelection_Collapse(); @@ -951,7 +697,7 @@ index e9ae68b..070b05a 100644 test_ITextDocument_Range(); test_ITextRange_GetChar(); test_ITextRange_GetStart_GetEnd(); -@@ -1528,6 +1620,7 @@ START_TEST(richole) +@@ -1568,6 +1660,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 7ececcb1..594a41a8 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,27 +1,19 @@ -From 41df8655376ce017e80ba6970a9400ff875f0ec5 Mon Sep 17 00:00:00 2001 +From 4fb5a547a488fe7e1e1acfc090ae0e919f7f0e65 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 ITextRange::GetPara. --- - dlls/riched20/richole.c | 223 ++++++++++++++++++++++++++++++++++++++++++ + dlls/riched20/richole.c | 222 ++++++++++++++++++++++++++++++++++++++++++ dlls/riched20/tests/richole.c | 47 +++++++++ - 2 files changed, 270 insertions(+) + 2 files changed, 269 insertions(+) diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c -index 54448f5..6db9775 100644 +index 71fb311..f664616 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c -@@ -53,6 +53,7 @@ typedef struct ITextSelectionImpl ITextSelectionImpl; - typedef struct IOleClientSiteImpl IOleClientSiteImpl; - typedef struct ITextRangeImpl ITextRangeImpl; - typedef struct ITextFontImpl ITextFontImpl; -+typedef struct ITextParaImpl ITextParaImpl; - - typedef struct IRichEditOleImpl { - IUnknown IUnknown_inner; -@@ -2511,9 +2512,24 @@ static ULONG WINAPI TextPara_Release(ITextPara *iface) +@@ -2515,9 +2515,24 @@ static ULONG WINAPI TextPara_Release(ITextPara *iface) return ref; } @@ -46,7 +38,7 @@ index 54448f5..6db9775 100644 *pctinfo = 0; return E_NOTIMPL; } -@@ -2521,14 +2537,24 @@ static HRESULT WINAPI TextPara_GetTypeInfoCount(ITextPara *iface, UINT *pctinfo) +@@ -2525,14 +2540,24 @@ static HRESULT WINAPI TextPara_GetTypeInfoCount(ITextPara *iface, UINT *pctinfo) static HRESULT WINAPI TextPara_GetTypeInfo(ITextPara *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) { @@ -71,7 +63,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2543,7 +2569,12 @@ static HRESULT WINAPI TextPara_Invoke( +@@ -2547,7 +2572,12 @@ static HRESULT WINAPI TextPara_Invoke( EXCEPINFO *pExcepInfo, UINT *puArgErr) { @@ -84,7 +76,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2551,6 +2582,10 @@ static HRESULT WINAPI TextPara_GetDuplicate(ITextPara *iface, ITextPara **ret) +@@ -2555,6 +2585,10 @@ static HRESULT WINAPI TextPara_GetDuplicate(ITextPara *iface, ITextPara **ret) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, ret); @@ -95,7 +87,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2558,6 +2593,10 @@ static HRESULT WINAPI TextPara_SetDuplicate(ITextPara *iface, ITextPara *para) +@@ -2562,6 +2596,10 @@ static HRESULT WINAPI TextPara_SetDuplicate(ITextPara *iface, ITextPara *para) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, para); @@ -106,7 +98,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2565,6 +2604,10 @@ static HRESULT WINAPI TextPara_CanChange(ITextPara *iface, LONG *ret) +@@ -2569,6 +2607,10 @@ static HRESULT WINAPI TextPara_CanChange(ITextPara *iface, LONG *ret) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, ret); @@ -117,7 +109,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2572,6 +2615,10 @@ static HRESULT WINAPI TextPara_IsEqual(ITextPara *iface, ITextPara *para, LONG * +@@ -2576,6 +2618,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); @@ -128,7 +120,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2579,6 +2626,10 @@ static HRESULT WINAPI TextPara_Reset(ITextPara *iface, LONG value) +@@ -2583,6 +2629,10 @@ static HRESULT WINAPI TextPara_Reset(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -139,7 +131,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2586,6 +2637,10 @@ static HRESULT WINAPI TextPara_GetStyle(ITextPara *iface, LONG *value) +@@ -2590,6 +2640,10 @@ static HRESULT WINAPI TextPara_GetStyle(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -150,7 +142,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2593,6 +2648,10 @@ static HRESULT WINAPI TextPara_SetStyle(ITextPara *iface, LONG value) +@@ -2597,6 +2651,10 @@ static HRESULT WINAPI TextPara_SetStyle(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -161,7 +153,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2600,6 +2659,10 @@ static HRESULT WINAPI TextPara_GetAlignment(ITextPara *iface, LONG *value) +@@ -2604,6 +2662,10 @@ static HRESULT WINAPI TextPara_GetAlignment(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -172,7 +164,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2607,6 +2670,10 @@ static HRESULT WINAPI TextPara_SetAlignment(ITextPara *iface, LONG value) +@@ -2611,6 +2673,10 @@ static HRESULT WINAPI TextPara_SetAlignment(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -183,7 +175,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2614,6 +2681,10 @@ static HRESULT WINAPI TextPara_GetHyphenation(ITextPara *iface, LONG *value) +@@ -2618,6 +2684,10 @@ static HRESULT WINAPI TextPara_GetHyphenation(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -194,7 +186,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2621,6 +2692,10 @@ static HRESULT WINAPI TextPara_SetHyphenation(ITextPara *iface, LONG value) +@@ -2625,6 +2695,10 @@ static HRESULT WINAPI TextPara_SetHyphenation(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -205,7 +197,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2628,6 +2703,10 @@ static HRESULT WINAPI TextPara_GetFirstLineIndent(ITextPara *iface, FLOAT *value +@@ -2632,6 +2706,10 @@ static HRESULT WINAPI TextPara_GetFirstLineIndent(ITextPara *iface, FLOAT *value { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -216,7 +208,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2635,6 +2714,10 @@ static HRESULT WINAPI TextPara_GetKeepTogether(ITextPara *iface, LONG *value) +@@ -2639,6 +2717,10 @@ static HRESULT WINAPI TextPara_GetKeepTogether(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -227,7 +219,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2642,6 +2725,10 @@ static HRESULT WINAPI TextPara_SetKeepTogether(ITextPara *iface, LONG value) +@@ -2646,6 +2728,10 @@ static HRESULT WINAPI TextPara_SetKeepTogether(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -238,7 +230,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2649,6 +2736,10 @@ static HRESULT WINAPI TextPara_GetKeepWithNext(ITextPara *iface, LONG *value) +@@ -2653,6 +2739,10 @@ static HRESULT WINAPI TextPara_GetKeepWithNext(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -249,7 +241,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2656,6 +2747,10 @@ static HRESULT WINAPI TextPara_SetKeepWithNext(ITextPara *iface, LONG value) +@@ -2660,6 +2750,10 @@ static HRESULT WINAPI TextPara_SetKeepWithNext(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -260,7 +252,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2663,6 +2758,10 @@ static HRESULT WINAPI TextPara_GetLeftIndent(ITextPara *iface, FLOAT *value) +@@ -2667,6 +2761,10 @@ static HRESULT WINAPI TextPara_GetLeftIndent(ITextPara *iface, FLOAT *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -271,7 +263,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2670,6 +2769,10 @@ static HRESULT WINAPI TextPara_GetLineSpacing(ITextPara *iface, FLOAT *value) +@@ -2674,6 +2772,10 @@ static HRESULT WINAPI TextPara_GetLineSpacing(ITextPara *iface, FLOAT *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -282,7 +274,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2677,6 +2780,10 @@ static HRESULT WINAPI TextPara_GetLineSpacingRule(ITextPara *iface, LONG *value) +@@ -2681,6 +2783,10 @@ static HRESULT WINAPI TextPara_GetLineSpacingRule(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -293,7 +285,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2684,6 +2791,10 @@ static HRESULT WINAPI TextPara_GetListAlignment(ITextPara *iface, LONG *value) +@@ -2688,6 +2794,10 @@ static HRESULT WINAPI TextPara_GetListAlignment(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -304,7 +296,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2691,6 +2802,10 @@ static HRESULT WINAPI TextPara_SetListAlignment(ITextPara *iface, LONG value) +@@ -2695,6 +2805,10 @@ static HRESULT WINAPI TextPara_SetListAlignment(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -315,7 +307,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2698,6 +2813,10 @@ static HRESULT WINAPI TextPara_GetListLevelIndex(ITextPara *iface, LONG *value) +@@ -2702,6 +2816,10 @@ static HRESULT WINAPI TextPara_GetListLevelIndex(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -326,7 +318,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2705,6 +2824,10 @@ static HRESULT WINAPI TextPara_SetListLevelIndex(ITextPara *iface, LONG value) +@@ -2709,6 +2827,10 @@ static HRESULT WINAPI TextPara_SetListLevelIndex(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -337,7 +329,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2712,6 +2835,10 @@ static HRESULT WINAPI TextPara_GetListStart(ITextPara *iface, LONG *value) +@@ -2716,6 +2838,10 @@ static HRESULT WINAPI TextPara_GetListStart(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -348,7 +340,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2719,6 +2846,10 @@ static HRESULT WINAPI TextPara_SetListStart(ITextPara *iface, LONG value) +@@ -2723,6 +2849,10 @@ static HRESULT WINAPI TextPara_SetListStart(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -359,7 +351,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2726,6 +2857,10 @@ static HRESULT WINAPI TextPara_GetListTab(ITextPara *iface, FLOAT *value) +@@ -2730,6 +2860,10 @@ static HRESULT WINAPI TextPara_GetListTab(ITextPara *iface, FLOAT *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -370,7 +362,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2733,6 +2868,10 @@ static HRESULT WINAPI TextPara_SetListTab(ITextPara *iface, FLOAT value) +@@ -2737,6 +2871,10 @@ static HRESULT WINAPI TextPara_SetListTab(ITextPara *iface, FLOAT value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%.2f)\n", This, value); @@ -381,7 +373,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2740,6 +2879,10 @@ static HRESULT WINAPI TextPara_GetListType(ITextPara *iface, LONG *value) +@@ -2744,6 +2882,10 @@ static HRESULT WINAPI TextPara_GetListType(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -392,7 +384,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2747,6 +2890,10 @@ static HRESULT WINAPI TextPara_SetListType(ITextPara *iface, LONG value) +@@ -2751,6 +2893,10 @@ static HRESULT WINAPI TextPara_SetListType(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -403,7 +395,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2754,6 +2901,10 @@ static HRESULT WINAPI TextPara_GetNoLineNumber(ITextPara *iface, LONG *value) +@@ -2758,6 +2904,10 @@ static HRESULT WINAPI TextPara_GetNoLineNumber(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -414,7 +406,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2761,6 +2912,10 @@ static HRESULT WINAPI TextPara_SetNoLineNumber(ITextPara *iface, LONG value) +@@ -2765,6 +2915,10 @@ static HRESULT WINAPI TextPara_SetNoLineNumber(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -425,7 +417,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2768,6 +2923,10 @@ static HRESULT WINAPI TextPara_GetPageBreakBefore(ITextPara *iface, LONG *value) +@@ -2772,6 +2926,10 @@ static HRESULT WINAPI TextPara_GetPageBreakBefore(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -436,7 +428,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2775,6 +2934,10 @@ static HRESULT WINAPI TextPara_SetPageBreakBefore(ITextPara *iface, LONG value) +@@ -2779,6 +2937,10 @@ static HRESULT WINAPI TextPara_SetPageBreakBefore(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -447,7 +439,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2782,6 +2945,10 @@ static HRESULT WINAPI TextPara_GetRightIndent(ITextPara *iface, FLOAT *value) +@@ -2786,6 +2948,10 @@ static HRESULT WINAPI TextPara_GetRightIndent(ITextPara *iface, FLOAT *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -458,7 +450,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2789,6 +2956,10 @@ static HRESULT WINAPI TextPara_SetRightIndent(ITextPara *iface, FLOAT value) +@@ -2793,6 +2959,10 @@ static HRESULT WINAPI TextPara_SetRightIndent(ITextPara *iface, FLOAT value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%.2f)\n", This, value); @@ -469,7 +461,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2796,6 +2967,10 @@ static HRESULT WINAPI TextPara_SetIndents(ITextPara *iface, FLOAT StartIndent, F +@@ -2800,6 +2970,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); @@ -480,7 +472,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2803,6 +2978,10 @@ static HRESULT WINAPI TextPara_SetLineSpacing(ITextPara *iface, LONG LineSpacing +@@ -2807,6 +2981,10 @@ static HRESULT WINAPI TextPara_SetLineSpacing(ITextPara *iface, LONG LineSpacing { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d %.2f)\n", This, LineSpacingRule, LineSpacing); @@ -491,7 +483,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2810,6 +2989,10 @@ static HRESULT WINAPI TextPara_GetSpaceAfter(ITextPara *iface, FLOAT *value) +@@ -2814,6 +2992,10 @@ static HRESULT WINAPI TextPara_GetSpaceAfter(ITextPara *iface, FLOAT *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -502,7 +494,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2817,6 +3000,10 @@ static HRESULT WINAPI TextPara_SetSpaceAfter(ITextPara *iface, FLOAT value) +@@ -2821,6 +3003,10 @@ static HRESULT WINAPI TextPara_SetSpaceAfter(ITextPara *iface, FLOAT value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%.2f)\n", This, value); @@ -513,7 +505,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2824,6 +3011,10 @@ static HRESULT WINAPI TextPara_GetSpaceBefore(ITextPara *iface, FLOAT *value) +@@ -2828,6 +3014,10 @@ static HRESULT WINAPI TextPara_GetSpaceBefore(ITextPara *iface, FLOAT *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -524,7 +516,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2831,6 +3022,10 @@ static HRESULT WINAPI TextPara_SetSpaceBefore(ITextPara *iface, FLOAT value) +@@ -2835,6 +3025,10 @@ static HRESULT WINAPI TextPara_SetSpaceBefore(ITextPara *iface, FLOAT value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%.2f)\n", This, value); @@ -535,7 +527,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2838,6 +3033,10 @@ static HRESULT WINAPI TextPara_GetWidowControl(ITextPara *iface, LONG *value) +@@ -2842,6 +3036,10 @@ static HRESULT WINAPI TextPara_GetWidowControl(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -546,7 +538,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2845,6 +3044,10 @@ static HRESULT WINAPI TextPara_SetWidowControl(ITextPara *iface, LONG value) +@@ -2849,6 +3047,10 @@ static HRESULT WINAPI TextPara_SetWidowControl(ITextPara *iface, LONG value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%d)\n", This, value); @@ -557,7 +549,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2852,6 +3055,10 @@ static HRESULT WINAPI TextPara_GetTabCount(ITextPara *iface, LONG *value) +@@ -2856,6 +3058,10 @@ static HRESULT WINAPI TextPara_GetTabCount(ITextPara *iface, LONG *value) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%p)\n", This, value); @@ -568,7 +560,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2859,6 +3066,10 @@ static HRESULT WINAPI TextPara_AddTab(ITextPara *iface, FLOAT tbPos, LONG tbAlig +@@ -2863,6 +3069,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); @@ -579,7 +571,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2866,6 +3077,10 @@ static HRESULT WINAPI TextPara_ClearAllTabs(ITextPara *iface) +@@ -2870,6 +3080,10 @@ static HRESULT WINAPI TextPara_ClearAllTabs(ITextPara *iface) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)\n", This); @@ -590,7 +582,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2873,6 +3088,10 @@ static HRESULT WINAPI TextPara_DeleteTab(ITextPara *iface, FLOAT pos) +@@ -2877,6 +3091,10 @@ static HRESULT WINAPI TextPara_DeleteTab(ITextPara *iface, FLOAT pos) { ITextParaImpl *This = impl_from_ITextPara(iface); FIXME("(%p)->(%.2f)\n", This, pos); @@ -601,7 +593,7 @@ index 54448f5..6db9775 100644 return E_NOTIMPL; } -@@ -2880,6 +3099,10 @@ static HRESULT WINAPI TextPara_GetTab(ITextPara *iface, LONG iTab, FLOAT *ptbPos +@@ -2884,6 +3102,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); @@ -613,10 +605,10 @@ index 54448f5..6db9775 100644 } diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c -index 070b05a..0fb5c98 100644 +index 40577b3..065c86c 100644 --- a/dlls/riched20/tests/richole.c +++ b/dlls/riched20/tests/richole.c -@@ -1597,6 +1597,52 @@ static void test_ITextSelection_GetFont(void) +@@ -1637,6 +1637,52 @@ static void test_ITextSelection_GetFont(void) ITextFont_Release(txtFont); } @@ -669,7 +661,7 @@ index 070b05a..0fb5c98 100644 START_TEST(richole) { /* Must explicitly LoadLibrary(). The test has no references to functions in -@@ -1621,6 +1667,7 @@ START_TEST(richole) +@@ -1661,6 +1707,7 @@ START_TEST(richole) test_ITextRange_SetStart(); test_ITextRange_SetEnd(); test_ITextRange_GetFont(); diff --git a/patches/riched20-IText_Interface/0004-riched20-Fix-ME_RunOfsFromCharOfs-when-nCharOfs-strl.patch b/patches/riched20-IText_Interface/0004-riched20-Fix-ME_RunOfsFromCharOfs-when-nCharOfs-strl.patch index d560a4ba..bb524ea0 100644 --- a/patches/riched20-IText_Interface/0004-riched20-Fix-ME_RunOfsFromCharOfs-when-nCharOfs-strl.patch +++ b/patches/riched20-IText_Interface/0004-riched20-Fix-ME_RunOfsFromCharOfs-when-nCharOfs-strl.patch @@ -1,4 +1,4 @@ -From 49d6ee6879df42615d3b8c97bd320382fb580585 Mon Sep 17 00:00:00 2001 +From 9e71184f8215f3693f9b1418225dfbc2c7b57d77 Mon Sep 17 00:00:00 2001 From: Jactry Zeng Date: Wed, 13 Aug 2014 14:57:52 +0800 Subject: riched20: Fix ME_RunOfsFromCharOfs() when nCharOfs > strlen(). @@ -37,5 +37,5 @@ index 38d0270..ad08b82 100644 /****************************************************************************** -- -2.3.2 +2.4.0 diff --git a/patches/riched20-IText_Interface/0005-riched20-Implement-ITextRange-GetText.patch b/patches/riched20-IText_Interface/0005-riched20-Implement-ITextRange-GetText.patch index fc49de2d..f9e7f44e 100644 --- a/patches/riched20-IText_Interface/0005-riched20-Implement-ITextRange-GetText.patch +++ b/patches/riched20-IText_Interface/0005-riched20-Implement-ITextRange-GetText.patch @@ -1,4 +1,4 @@ -From d0ddbc33e67637ac5ea3d73720d1260d37899bf8 Mon Sep 17 00:00:00 2001 +From b124ce2417572b6e7147bbfd8c931885886d37cb Mon Sep 17 00:00:00 2001 From: Jactry Zeng Date: Wed, 13 Aug 2014 15:40:11 +0800 Subject: riched20: Implement ITextRange::GetText. @@ -9,10 +9,10 @@ Subject: riched20: Implement ITextRange::GetText. 2 files changed, 67 insertions(+), 21 deletions(-) diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c -index d815142..12146ff 100644 +index f664616..4aee91f 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c -@@ -2173,14 +2173,40 @@ static HRESULT WINAPI ITextRange_fnInvoke(ITextRange *me, DISPID dispIdMember, R +@@ -1033,14 +1033,40 @@ static HRESULT WINAPI ITextRange_fnInvoke(ITextRange *me, DISPID dispIdMember, R return E_NOTIMPL; } @@ -55,7 +55,7 @@ index d815142..12146ff 100644 } static HRESULT WINAPI ITextRange_fnSetText(ITextRange *me, BSTR bstr) -@@ -3257,8 +3283,6 @@ static HRESULT WINAPI ITextSelection_fnGetText(ITextSelection *me, BSTR *pbstr) +@@ -3565,8 +3591,6 @@ static HRESULT WINAPI ITextSelection_fnGetText(ITextSelection *me, BSTR *pbstr) { ITextSelectionImpl *This = impl_from_ITextSelection(me); ME_Cursor *start = NULL, *end = NULL; @@ -64,7 +64,7 @@ index d815142..12146ff 100644 if (!This->reOle) return CO_E_RELEASED; -@@ -3267,23 +3291,7 @@ static HRESULT WINAPI ITextSelection_fnGetText(ITextSelection *me, BSTR *pbstr) +@@ -3575,23 +3599,7 @@ static HRESULT WINAPI ITextSelection_fnGetText(ITextSelection *me, BSTR *pbstr) return E_INVALIDARG; ME_GetSelection(This->reOle->editor, &start, &end); @@ -90,10 +90,10 @@ index d815142..12146ff 100644 static HRESULT WINAPI ITextSelection_fnSetText(ITextSelection *me, BSTR bstr) diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c -index 89b3839..33b777b 100644 +index 065c86c..44b1f4c 100644 --- a/dlls/riched20/tests/richole.c +++ b/dlls/riched20/tests/richole.c -@@ -1349,6 +1349,43 @@ static void test_ITextRange_GetPara(void) +@@ -1683,6 +1683,43 @@ static void test_ITextRange_GetPara(void) ITextPara_Release(txtPara); } @@ -137,7 +137,7 @@ index 89b3839..33b777b 100644 START_TEST(richole) { /* Must explicitly LoadLibrary(). The test has no references to functions in -@@ -1374,6 +1411,7 @@ START_TEST(richole) +@@ -1708,6 +1745,7 @@ START_TEST(richole) test_ITextRange_SetEnd(); test_ITextRange_GetFont(); test_ITextRange_GetPara(); @@ -146,5 +146,5 @@ index 89b3839..33b777b 100644 test_IOleWindow_GetWindow(); test_IOleInPlaceSite_GetWindow(); -- -2.3.2 +2.4.0 diff --git a/patches/riched20-IText_Interface/0006-riched20-Implement-ITextRange-SetRange.patch b/patches/riched20-IText_Interface/0006-riched20-Implement-ITextRange-SetRange.patch index c738d020..8dbc94ab 100644 --- a/patches/riched20-IText_Interface/0006-riched20-Implement-ITextRange-SetRange.patch +++ b/patches/riched20-IText_Interface/0006-riched20-Implement-ITextRange-SetRange.patch @@ -1,4 +1,4 @@ -From d0269eafaac5cf25dfa223e1d9a9edd2572b3755 Mon Sep 17 00:00:00 2001 +From bf01cfc213a0430c1086fd70dd92bfe7a684bd5d Mon Sep 17 00:00:00 2001 From: Jactry Zeng Date: Wed, 13 Aug 2014 17:17:14 +0800 Subject: riched20: Implement ITextRange::SetRange. @@ -9,10 +9,10 @@ Subject: riched20: Implement ITextRange::SetRange. 2 files changed, 60 insertions(+), 17 deletions(-) diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c -index 12146ff..cfe0138 100644 +index 4aee91f..fc9875f 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c -@@ -2529,14 +2529,36 @@ static HRESULT WINAPI ITextRange_fnSetIndex(ITextRange *me, LONG Unit, LONG Inde +@@ -1354,14 +1354,36 @@ static HRESULT WINAPI ITextRange_fnSetIndex(ITextRange *me, LONG Unit, LONG Inde return E_NOTIMPL; } @@ -51,7 +51,7 @@ index 12146ff..cfe0138 100644 } static HRESULT WINAPI ITextRange_fnInRange(ITextRange *me, ITextRange *pRange, LONG *pb) -@@ -3131,26 +3153,12 @@ ITextDocument_fnRange(ITextDocument* me, LONG cp1, LONG cp2, +@@ -3436,26 +3458,12 @@ ITextDocument_fnRange(ITextDocument* me, LONG cp1, LONG cp2, ITextRange** ppRange) { IRichEditOleImpl *This = impl_from_ITextDocument(me); @@ -80,10 +80,10 @@ index 12146ff..cfe0138 100644 } diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c -index 33b777b..a943393 100644 +index 44b1f4c..1529c3c 100644 --- a/dlls/riched20/tests/richole.c +++ b/dlls/riched20/tests/richole.c -@@ -1386,6 +1386,40 @@ static void test_ITextRange_GetText(void) +@@ -1720,6 +1720,40 @@ static void test_ITextRange_GetText(void) TEST_TXTRGE_GETTEXT(1, 1, NULL) } @@ -124,7 +124,7 @@ index 33b777b..a943393 100644 START_TEST(richole) { /* Must explicitly LoadLibrary(). The test has no references to functions in -@@ -1412,6 +1446,7 @@ START_TEST(richole) +@@ -1746,6 +1780,7 @@ START_TEST(richole) test_ITextRange_GetFont(); test_ITextRange_GetPara(); test_ITextRange_GetText(); @@ -133,5 +133,5 @@ index 33b777b..a943393 100644 test_IOleWindow_GetWindow(); test_IOleInPlaceSite_GetWindow(); -- -2.3.2 +2.4.0 diff --git a/patches/riched20-IText_Interface/0007-riched20-Implement-ITextRange-IsEqual.patch b/patches/riched20-IText_Interface/0007-riched20-Implement-ITextRange-IsEqual.patch index 260e792a..855cf128 100644 --- a/patches/riched20-IText_Interface/0007-riched20-Implement-ITextRange-IsEqual.patch +++ b/patches/riched20-IText_Interface/0007-riched20-Implement-ITextRange-IsEqual.patch @@ -1,4 +1,4 @@ -From dd58c449f3fd930e7067f4910d82fc4a118cb585 Mon Sep 17 00:00:00 2001 +From 02798a813a2f584e7e884531e4a89b6615d6ed4a Mon Sep 17 00:00:00 2001 From: Jactry Zeng Date: Fri, 15 Aug 2014 14:27:21 +0800 Subject: riched20: Implement ITextRange::IsEqual. @@ -9,10 +9,10 @@ Subject: riched20: Implement ITextRange::IsEqual. 2 files changed, 64 insertions(+), 2 deletions(-) diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c -index cfe0138..73e1916 100644 +index fc9875f..0052448 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c -@@ -2581,14 +2581,29 @@ static HRESULT WINAPI ITextRange_fnInStory(ITextRange *me, ITextRange *pRange, L +@@ -1406,14 +1406,29 @@ static HRESULT WINAPI ITextRange_fnInStory(ITextRange *me, ITextRange *pRange, L return E_NOTIMPL; } @@ -45,10 +45,10 @@ index cfe0138..73e1916 100644 static HRESULT WINAPI ITextRange_fnSelect(ITextRange *me) diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c -index a943393..6b1bada 100644 +index 1529c3c..e158a61 100644 --- a/dlls/riched20/tests/richole.c +++ b/dlls/riched20/tests/richole.c -@@ -1420,6 +1420,52 @@ static void test_ITextRange_SetRange(void) +@@ -1754,6 +1754,52 @@ static void test_ITextRange_SetRange(void) release_interfaces(&w, &reOle, &txtDoc, NULL); } @@ -101,7 +101,7 @@ index a943393..6b1bada 100644 START_TEST(richole) { /* Must explicitly LoadLibrary(). The test has no references to functions in -@@ -1447,6 +1493,7 @@ START_TEST(richole) +@@ -1781,6 +1827,7 @@ START_TEST(richole) test_ITextRange_GetPara(); test_ITextRange_GetText(); test_ITextRange_SetRange(); @@ -110,5 +110,5 @@ index a943393..6b1bada 100644 test_IOleWindow_GetWindow(); test_IOleInPlaceSite_GetWindow(); -- -2.3.2 +2.4.0 diff --git a/patches/riched20-IText_Interface/0008-riched20-Implement-ITextRange-GetStoryLength.patch b/patches/riched20-IText_Interface/0008-riched20-Implement-ITextRange-GetStoryLength.patch index db2d5ccb..b4c87e10 100644 --- a/patches/riched20-IText_Interface/0008-riched20-Implement-ITextRange-GetStoryLength.patch +++ b/patches/riched20-IText_Interface/0008-riched20-Implement-ITextRange-GetStoryLength.patch @@ -1,4 +1,4 @@ -From 5606c81aa12ad51c3028d7e48a419e5000a0053a Mon Sep 17 00:00:00 2001 +From d98c00a85b52d4d440b48ae7618cc9ec15bc1c82 Mon Sep 17 00:00:00 2001 From: Jactry Zeng Date: Mon, 18 Aug 2014 14:38:50 +0800 Subject: riched20: Implement ITextRange::GetStoryLength. @@ -9,10 +9,10 @@ Subject: riched20: Implement ITextRange::GetStoryLength. 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c -index 73e1916..525c7c1 100644 +index 0052448..4ec4513 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c -@@ -2463,8 +2463,10 @@ static HRESULT WINAPI ITextRange_fnGetStoryLength(ITextRange *me, LONG *pcch) +@@ -1288,8 +1288,10 @@ static HRESULT WINAPI ITextRange_fnGetStoryLength(ITextRange *me, LONG *pcch) if (!This->reOle) return CO_E_RELEASED; @@ -26,10 +26,10 @@ index 73e1916..525c7c1 100644 static HRESULT WINAPI ITextRange_fnGetStoryType(ITextRange *me, LONG *pValue) diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c -index 6b1bada..4e1a5a6 100644 +index e158a61..dd6cad4 100644 --- a/dlls/riched20/tests/richole.c +++ b/dlls/riched20/tests/richole.c -@@ -1466,6 +1466,37 @@ static void test_ITextRange_IsEqual(void) +@@ -1800,6 +1800,37 @@ static void test_ITextRange_IsEqual(void) release_interfaces(&w, &reOle, &txtDoc, NULL); } @@ -67,7 +67,7 @@ index 6b1bada..4e1a5a6 100644 START_TEST(richole) { /* Must explicitly LoadLibrary(). The test has no references to functions in -@@ -1494,6 +1525,7 @@ START_TEST(richole) +@@ -1828,6 +1859,7 @@ START_TEST(richole) test_ITextRange_GetText(); test_ITextRange_SetRange(); test_ITextRange_IsEqual(); @@ -76,5 +76,5 @@ index 6b1bada..4e1a5a6 100644 test_IOleWindow_GetWindow(); test_IOleInPlaceSite_GetWindow(); -- -2.3.2 +2.4.0 diff --git a/patches/riched20-IText_Interface/0009-riched20-Implement-ITextSelection-GetStoryLength.patch b/patches/riched20-IText_Interface/0009-riched20-Implement-ITextSelection-GetStoryLength.patch index cdffadc8..90e326ef 100644 --- a/patches/riched20-IText_Interface/0009-riched20-Implement-ITextSelection-GetStoryLength.patch +++ b/patches/riched20-IText_Interface/0009-riched20-Implement-ITextSelection-GetStoryLength.patch @@ -1,4 +1,4 @@ -From 58c621934c2fd7d20ebb3da783cfdcb8e28b1a10 Mon Sep 17 00:00:00 2001 +From 218106498ce512c7879c15e2859901f67c9d6160 Mon Sep 17 00:00:00 2001 From: Jactry Zeng Date: Mon, 18 Aug 2014 14:47:14 +0800 Subject: riched20: Implement ITextSelection::GetStoryLength. @@ -9,10 +9,10 @@ Subject: riched20: Implement ITextSelection::GetStoryLength. 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c -index 0bc302b..e42df2b 100644 +index 4ec4513..5d017e9 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c -@@ -3298,8 +3298,10 @@ static HRESULT WINAPI ITextSelection_fnGetStoryLength(ITextSelection *me, LONG * +@@ -3829,8 +3829,10 @@ static HRESULT WINAPI ITextSelection_fnGetStoryLength(ITextSelection *me, LONG * if (!This->reOle) return CO_E_RELEASED; @@ -26,10 +26,10 @@ index 0bc302b..e42df2b 100644 static HRESULT WINAPI ITextSelection_fnGetStoryType(ITextSelection *me, LONG *pValue) diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c -index 543f3ec..baed1f7 100644 +index dd6cad4..cd9931b 100644 --- a/dlls/riched20/tests/richole.c +++ b/dlls/riched20/tests/richole.c -@@ -1357,6 +1357,35 @@ static void test_ITextRange_GetStoryLength(void) +@@ -1831,6 +1831,35 @@ static void test_ITextRange_GetStoryLength(void) release_interfaces(&w, &reOle, &txtDoc, NULL); } @@ -65,7 +65,7 @@ index 543f3ec..baed1f7 100644 START_TEST(richole) { /* Must explicitly LoadLibrary(). The test has no references to functions in -@@ -1373,6 +1402,7 @@ START_TEST(richole) +@@ -1847,6 +1876,7 @@ START_TEST(richole) test_ITextSelection_SetEnd(); test_ITextSelection_Collapse(); test_ITextSelection_GetFont(); @@ -74,5 +74,5 @@ index 543f3ec..baed1f7 100644 test_ITextRange_GetChar(); test_ITextRange_GetStart_GetEnd(); -- -2.1.2 +2.4.0 diff --git a/patches/riched20-IText_Interface/0010-riched20-Silence-repeated-FIXMEs-triggered-by-Adobe-.patch b/patches/riched20-IText_Interface/0010-riched20-Silence-repeated-FIXMEs-triggered-by-Adobe-.patch index 53e7b30f..a3fcab39 100644 --- a/patches/riched20-IText_Interface/0010-riched20-Silence-repeated-FIXMEs-triggered-by-Adobe-.patch +++ b/patches/riched20-IText_Interface/0010-riched20-Silence-repeated-FIXMEs-triggered-by-Adobe-.patch @@ -1,18 +1,18 @@ -From 85ae581146a9791fd45006b273c19f822f1ccf4f Mon Sep 17 00:00:00 2001 +From 69ba6ab1953ff29538b3db3dcf87d02175c355ed 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 | 46 ++++++++++++++++++++++++++++++++++++---------- - 1 file changed, 36 insertions(+), 10 deletions(-) + dlls/riched20/richole.c | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c -index b9213f6..6676d9a 100644 +index 5d017e9..b5c2b9b 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c -@@ -294,6 +294,14 @@ static HRESULT WINAPI IRichEditOleImpl_inner_fnQueryInterface(IUnknown *iface, R +@@ -394,6 +394,14 @@ static HRESULT WINAPI IRichEditOleImpl_inner_fnQueryInterface(IUnknown *iface, R IUnknown_AddRef((IUnknown *)*ppvObj); return S_OK; } @@ -27,107 +27,7 @@ index b9213f6..6676d9a 100644 FIXME("%p: unhandled interface %s\n", This, debugstr_guid(riid)); return E_NOINTERFACE; -@@ -1927,6 +1935,7 @@ static HRESULT WINAPI TextFont_SetBackColor(ITextFont *iface, LONG value) - static HRESULT WINAPI TextFont_GetBold(ITextFont *iface, LONG *value) - { - ITextFontImpl *This = impl_from_ITextFont(iface); -+ static int once; - TRACE("(%p)->(%p)\n", This, value); - - if (This->range) -@@ -1940,7 +1949,7 @@ static HRESULT WINAPI TextFont_GetBold(ITextFont *iface, LONG *value) - if (!font_get_reole(This)) - return CO_E_RELEASED; - -- FIXME("not implemented\n"); -+ if (!once++) FIXME("not implemented\n"); - return E_NOTIMPL; - } - -@@ -1980,7 +1989,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); -- FIXME("(%p)->(%p): stub\n", This, value); -+ static int once; -+ -+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value); - - if (!value) - return E_INVALIDARG; -@@ -2052,6 +2063,7 @@ static HRESULT WINAPI TextFont_SetEngrave(ITextFont *iface, LONG value) - static HRESULT WINAPI TextFont_GetItalic(ITextFont *iface, LONG *value) - { - ITextFontImpl *This = impl_from_ITextFont(iface); -+ static int once; - TRACE("(%p)->(%p)\n", This, value); - - if (This->range) -@@ -2065,7 +2077,7 @@ static HRESULT WINAPI TextFont_GetItalic(ITextFont *iface, LONG *value) - if (!font_get_reole(This)) - return CO_E_RELEASED; - -- FIXME("not implemented\n"); -+ if (!once++) FIXME("not implemented\n"); - return E_NOTIMPL; - } - -@@ -2105,7 +2117,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); -- FIXME("(%p)->(%p): stub\n", This, value); -+ static int once; -+ -+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value); - - if (!font_get_reole(This)) - return CO_E_RELEASED; -@@ -2245,7 +2259,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); -- FIXME("(%p)->(%p): stub\n", This, value); -+ static int once; -+ -+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value); - - if (!value) - return E_INVALIDARG; -@@ -2317,7 +2333,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); -- FIXME("(%p)->(%p): stub\n", This, value); -+ static int once; -+ -+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value); - - if (!value) - return E_INVALIDARG; -@@ -2345,7 +2363,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); -- FIXME("(%p)->(%p): stub\n", This, value); -+ static int once; -+ -+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value); - - if (!value) - return E_INVALIDARG; -@@ -2401,7 +2421,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); -- FIXME("(%p)->(%p): stub\n", This, value); -+ static int once; -+ -+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value); - - if (!value) - return E_INVALIDARG; -@@ -2429,7 +2451,9 @@ static HRESULT WINAPI TextFont_SetUnderline(ITextFont *iface, LONG value) +@@ -2434,7 +2442,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); @@ -138,7 +38,7 @@ index b9213f6..6676d9a 100644 if (!font_get_reole(This)) return CO_E_RELEASED; -@@ -2723,7 +2747,9 @@ static HRESULT WINAPI TextPara_SetStyle(ITextPara *iface, LONG value) +@@ -2726,7 +2736,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/riched20-IText_Interface/0011-riched20-Implement-ITextSelection_fnGetDuplicate.patch b/patches/riched20-IText_Interface/0011-riched20-Implement-ITextSelection_fnGetDuplicate.patch index 80a45525..d8eef5f9 100644 --- a/patches/riched20-IText_Interface/0011-riched20-Implement-ITextSelection_fnGetDuplicate.patch +++ b/patches/riched20-IText_Interface/0011-riched20-Implement-ITextSelection_fnGetDuplicate.patch @@ -1,4 +1,4 @@ -From acafb0f9fc1775ba95c3f5dfba08c15fd6678904 Mon Sep 17 00:00:00 2001 +From 83ab3bf176f9ad2a08586e3173ed9c61307dcb59 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 1 Nov 2014 23:07:09 +0100 Subject: riched20: Implement ITextSelection_fnGetDuplicate. @@ -9,10 +9,10 @@ Fixes a crash with Adobe Reader when entering a page number. 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c -index 6676d9a..a7eb1d9 100644 +index b5c2b9b..83b9ac3 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c -@@ -3681,11 +3681,17 @@ static HRESULT WINAPI ITextSelection_fnSetChar(ITextSelection *me, LONG ch) +@@ -3677,11 +3677,17 @@ static HRESULT WINAPI ITextSelection_fnSetChar(ITextSelection *me, LONG ch) static HRESULT WINAPI ITextSelection_fnGetDuplicate(ITextSelection *me, ITextRange **ppRange) { ITextSelectionImpl *This = impl_from_ITextSelection(me); diff --git a/patches/wineconsole-Curses_Fake_Wnd/0001-wineconsole-Allocate-fake-hwnds-for-curses-backend.patch b/patches/wineconsole-Curses_Fake_Wnd/0001-wineconsole-Allocate-fake-hwnds-for-curses-backend.patch deleted file mode 100644 index c91345dd..00000000 --- a/patches/wineconsole-Curses_Fake_Wnd/0001-wineconsole-Allocate-fake-hwnds-for-curses-backend.patch +++ /dev/null @@ -1,44 +0,0 @@ -From ec8c72f2251bd35294f8ab396a18430b1c29b527 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Wed, 13 May 2015 19:06:23 +0200 -Subject: wineconsole: Allocate fake hwnds for curses backend. - -Based on a patch by Qian Hong. ---- - programs/wineconsole/curses.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/programs/wineconsole/curses.c b/programs/wineconsole/curses.c -index 24aab88..8d1b01e 100644 ---- a/programs/wineconsole/curses.c -+++ b/programs/wineconsole/curses.c -@@ -1001,6 +1001,7 @@ static void WCCURSES_DeleteBackend(struct inner_data* data) - #endif - endwin(); - -+ if (data->hWnd) DestroyWindow(data->hWnd); - HeapFree(GetProcessHeap(), 0, PRIVATE(data)->line); - HeapFree(GetProcessHeap(), 0, PRIVATE(data)); - data->private = NULL; -@@ -1042,6 +1043,8 @@ static int WCCURSES_MainLoop(struct inner_data* data) - */ - enum init_return WCCURSES_InitBackend(struct inner_data* data) - { -+ static const WCHAR messageW[] = {'M','e','s','s','a','g','e',0}; -+ - if( !WCCURSES_bind_libcurses() ) - return init_not_supported; - -@@ -1058,7 +1061,8 @@ enum init_return WCCURSES_InitBackend(struct inner_data* data) - data->fnScroll = WCCURSES_Scroll; - data->fnSetFont = WCCURSES_SetFont; - data->fnDeleteBackend = WCCURSES_DeleteBackend; -- data->hWnd = NULL; -+ data->hWnd = CreateWindowW( messageW, NULL, 0, 0, 0, 0, 0, HWND_MESSAGE, 0, -+ GetModuleHandleW(0), NULL ); - - /* FIXME: should find a good way to enable buffer scrolling - * For the time being, setting this to 1 will allow scrolling up/down --- -2.4.0 - diff --git a/patches/wineconsole-Curses_Fake_Wnd/definition b/patches/wineconsole-Curses_Fake_Wnd/definition deleted file mode 100644 index ae47963e..00000000 --- a/patches/wineconsole-Curses_Fake_Wnd/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [34930] Allocate fake hWnd for wineconsole curses backend diff --git a/patches/wined3d-CSMT_Main/9999-IfDefined.patch b/patches/wined3d-CSMT_Main/9999-IfDefined.patch index 0db049ae..16cc605b 100644 --- a/patches/wined3d-CSMT_Main/9999-IfDefined.patch +++ b/patches/wined3d-CSMT_Main/9999-IfDefined.patch @@ -1199,7 +1199,7 @@ diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader /* Load DirectX 9 float constants for pixel shader */ priv->highest_dirty_ps_const = shader_arb_load_constantsF(pshader, gl_info, GL_FRAGMENT_PROGRAM_ARB, -@@ -4652,7 +4656,11 @@ +@@ -4694,7 +4698,11 @@ } else { @@ -1211,7 +1211,7 @@ diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader shader_arb_ps_local_constants(compiled, context, state, rt_height); } -@@ -7766,7 +7774,11 @@ +@@ -7810,7 +7818,11 @@ /* Now load the surface */ if (wined3d_settings.offscreen_rendering_mode != ORM_FBO @@ -1223,7 +1223,7 @@ diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader == WINED3D_LOCATION_DRAWABLE && !wined3d_resource_is_offscreen(&src_surface->container->resource)) { -@@ -7796,6 +7808,7 @@ +@@ -7840,6 +7852,7 @@ /* Leave the opengl state valid for blitting */ arbfp_blit_unset(context->gl_info); @@ -1231,7 +1231,7 @@ diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader if (wined3d_settings.cs_multithreaded) context->gl_info->gl_ops.gl.p_glFinish(); else if (wined3d_settings.strict_draw_ordering -@@ -7807,6 +7820,17 @@ +@@ -7851,6 +7864,17 @@ wined3d_resource_validate_location(&dst_surface->resource, dst_surface->container->resource.draw_binding); wined3d_resource_invalidate_location(&dst_surface->resource, ~dst_surface->container->resource.draw_binding); diff --git a/patches/wined3d-Dirtify_Vertex_Shader/0001-wined3d-Dirtify-vertex-shader-on-transformed-untrans.patch b/patches/wined3d-Dirtify_Vertex_Shader/0001-wined3d-Dirtify-vertex-shader-on-transformed-untrans.patch deleted file mode 100644 index 2c3353ec..00000000 --- a/patches/wined3d-Dirtify_Vertex_Shader/0001-wined3d-Dirtify-vertex-shader-on-transformed-untrans.patch +++ /dev/null @@ -1,28 +0,0 @@ -From e921966b9073171d4a76ef6a96ba93413023e029 Mon Sep 17 00:00:00 2001 -From: Matteo Bruni -Date: Thu, 7 May 2015 16:07:53 +0200 -Subject: wined3d: Dirtify vertex shader on transformed <-> untransformed - transition. - ---- - dlls/wined3d/glsl_shader.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c -index 0a130e1..8e618e5 100644 ---- a/dlls/wined3d/glsl_shader.c -+++ b/dlls/wined3d/glsl_shader.c -@@ -7682,6 +7682,10 @@ static void glsl_vertex_pipe_vdecl(struct wined3d_context *context, - - context->last_was_rhw = transformed; - -+ /* Transformed position forces FFP draws. */ -+ if (transformed != wasrhw) -+ context->shader_update_mask |= 1 << WINED3D_SHADER_TYPE_VERTEX; -+ - if (!use_vs(state)) - { - if (context->last_was_vshader) --- -2.4.0 - diff --git a/patches/wined3d-Dirtify_Vertex_Shader/definition b/patches/wined3d-Dirtify_Vertex_Shader/definition deleted file mode 100644 index 26447ab1..00000000 --- a/patches/wined3d-Dirtify_Vertex_Shader/definition +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: [38539] Dirtify vertex shader on transformed update to fix graphical corruption -Category: stable