{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":192386577,"defaultBranch":"master","name":"reactos","ownerLogin":"oleg-dubinskiy","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2019-06-17T17:00:36.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/26385117?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1724598972.0","currentOid":""},"activityList":{"items":[{"before":"c948ea859bf7557cc1c4d84bedb4dc2e8cd42372","after":"cfaf0f6e9a42a641065547f04481c2a5b3722b1a","ref":"refs/heads/hpoussins-return-fix","pushedAt":"2024-08-25T17:05:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTOS:FSRTL] FsRtlAcquireFileExclusiveCommon: don't return before acquiring a file resource, except special cases\nDon't return before file object's resource is acquired in FsRtlAcquireFileExclusiveCommon, except some special return cases, when return is reuired. Based on hpoussin_filter_extra.patch by Herve Poussineau (hpoussin) with improved comment, which matches the actual behaviour now.\nThis is required by fltmgr.sys driver from Windows XP/Server 2003 to work correctly, so this change fixes asserts/exceptions when releasing the file via FsRtlReleaseFile after acquiring, when using 3rd party filter drivers from several antivirus programs (e. g., Avast Free Antivirus all versions, AVG Antivirus Free 18.8, Avira AntiVir Personal 8.2, Dr. Web Security Space 8.0, Kaspersky Antivirus 2012 etc. etc.).\nCORE-14157, CORE-14635, CORE-19318","shortMessageHtmlLink":"[NTOS:FSRTL] FsRtlAcquireFileExclusiveCommon: don't return before acq…"}},{"before":null,"after":"c948ea859bf7557cc1c4d84bedb4dc2e8cd42372","ref":"refs/heads/hpoussins-return-fix","pushedAt":"2024-08-25T15:16:12.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[CMD] Convert to explicitly unicode","shortMessageHtmlLink":"[CMD] Convert to explicitly unicode"}},{"before":"cca9acfa1d9d2bf258f34ea89b210d5e8fb0563d","after":"c948ea859bf7557cc1c4d84bedb4dc2e8cd42372","ref":"refs/heads/master","pushedAt":"2024-08-25T13:45:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[CMD] Convert to explicitly unicode","shortMessageHtmlLink":"[CMD] Convert to explicitly unicode"}},{"before":"ea60890961dcdda7356a3c6cfed919fd20905f88","after":"cca9acfa1d9d2bf258f34ea89b210d5e8fb0563d","ref":"refs/heads/master","pushedAt":"2024-08-25T12:33:29.000Z","pushType":"push","commitsCount":68,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[SHELL32] Create link must ask for a parsing name for file targets (#7267)","shortMessageHtmlLink":"[SHELL32] Create link must ask for a parsing name for file targets (r…"}},{"before":"1843630a5dec9ae79b4a8b0b9f911b04d37241cb","after":"427759c500c57253271707043946ac2e9eee5f8c","ref":"refs/heads/mm-patch-2","pushedAt":"2024-08-21T10:07:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTOS:MM] Implement MmAllocate/FreeMappingAddress\nImplement MmAllocateMappingAddress and MmFreeMappingAddress routines.\nBased on mm-implement-mappingaddress.patch by Thomas Faber with some changes from me.\nRequired by Microsoft NTFS driver (from Windows Server 2003 SP2 only, the one from Windows XP SP3 does not need them) and by NDIS & TDI drivers (both from Windows XP SP3 and Windows Server 2003 SP2). Also they are called when using Dr. Web Security Space 8 filter drivers together with MS FltMgr & TDI.\nFortunately, this part (these two routines) are enough to get the drivers working in both cases, and others (partially incomplete) routines are not badly required, so they can be finished and committed later.\nCORE-10147, CORE-14635, CORE-17409, CORE-19318","shortMessageHtmlLink":"[NTOS:MM] Implement MmAllocate/FreeMappingAddress"}},{"before":"ea60890961dcdda7356a3c6cfed919fd20905f88","after":"1843630a5dec9ae79b4a8b0b9f911b04d37241cb","ref":"refs/heads/mm-patch-2","pushedAt":"2024-08-20T15:03:57.000Z","pushType":"push","commitsCount":58,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTOS:MM] Implement MmAllocate/FreeMappingAddress\nImplement MmAllocateMappingAddress and MmFreeMappingAddress routines.\nBased on mm-implement-mappingaddress.patch by Thomas Faber with some changes from me.\nRequired by Microsoft NTFS driver (from Windows Server 2003 SP2 only, the one from Windows XP SP3 does not need them) and by NDIS & TDI drivers (both from Windows XP SP3 and Windows Server 2003 SP2). Also they are called when using Dr. Web Security Space 8 filter drivers together with MS FltMgr & TDI.\nFortunately, this part (these two routines) are enough to get the drivers working in both cases, and others (partially incomplete) routines are not badly required, so they can be finished and committed later.\nCORE-10147, CORE-14635, CORE-17409, CORE-19318","shortMessageHtmlLink":"[NTOS:MM] Implement MmAllocate/FreeMappingAddress"}},{"before":null,"after":"ea60890961dcdda7356a3c6cfed919fd20905f88","ref":"refs/heads/mm-patch-2","pushedAt":"2024-08-20T14:38:43.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NETSHELL][SHELL32] Make NetShell PIDL format more Windows compatible (#7183)\n\n- The PIDL format needs to be Windows compatible so that wlanwiz can get the connection GUID.\r\n- SHELL32::ILIsEqual cannot deem PIDL formats it does not understand as invalid.\r\n- DefView must ask the folder when comparing PIDLs.","shortMessageHtmlLink":"[NETSHELL][SHELL32] Make NetShell PIDL format more Windows compatible (…"}},{"before":"fdc1d96dc1259093a07d6cd36c050716e831de74","after":"ea60890961dcdda7356a3c6cfed919fd20905f88","ref":"refs/heads/master","pushedAt":"2024-08-09T17:45:20.000Z","pushType":"push","commitsCount":12,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NETSHELL][SHELL32] Make NetShell PIDL format more Windows compatible (#7183)\n\n- The PIDL format needs to be Windows compatible so that wlanwiz can get the connection GUID.\r\n- SHELL32::ILIsEqual cannot deem PIDL formats it does not understand as invalid.\r\n- DefView must ask the folder when comparing PIDLs.","shortMessageHtmlLink":"[NETSHELL][SHELL32] Make NetShell PIDL format more Windows compatible (…"}},{"before":"42da3390d3c4f7948bc54ab5d418ade4ac25e323","after":null,"ref":"refs/heads/mm-patch-1","pushedAt":"2024-08-08T19:02:53.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"}},{"before":"b5c1014736c5317125f620c885486849f912963c","after":"42da3390d3c4f7948bc54ab5d418ade4ac25e323","ref":"refs/heads/mm-patch-1","pushedAt":"2024-08-08T15:05:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTOS:MM] Implement MmProbeAndLockProcessPages\nImplement undocumented MmProbeAndLockProcessPages routine. Based on mm-implement-mappingaddress.patch by Thomas Faber from CORE-10147, with some improvements from me.\nIt's badly required by FltMgr.sys driver from Windows XP/Server 2003 and closely used by a lot of apps those are depending on this driver (e. g., Avast Free Antivirus several versions, Avira Antivir Personal 8.2 etc. etc.).\nFixes several asserts from MDL support routines when the 3rd-party minifilter drivers are loading FltMgr.\nCORE-14157","shortMessageHtmlLink":"[NTOS:MM] Implement MmProbeAndLockProcessPages"}},{"before":"d18a208194fac8718124933424c239d2b7c262f1","after":"b5c1014736c5317125f620c885486849f912963c","ref":"refs/heads/mm-patch-1","pushedAt":"2024-08-08T14:34:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTOS:MM] Implement MmProbeAndLockProcessPages\nImplement undocumented MmProbeAndLockProcessPages routine. Based on mm-implement-mappingaddress.patch by Thomas Faber from CORE-10147, with some improvements from me.\nIt's badly required by FltMgr.sys driver from Windows XP/Server 2003 and closely used by a lot of apps those are depending on this driver (e. g., Avast Free Antivirus several versions, Avira Antivir Personal 8.2 etc. etc.).\nFixes several asserts from MDL support routines when the 3rd-party minifilter drivers are loading FltMgr.\nCORE-14157","shortMessageHtmlLink":"[NTOS:MM] Implement MmProbeAndLockProcessPages"}},{"before":"959ad8a619271c0cf866bce1dec088bcd447218f","after":"d18a208194fac8718124933424c239d2b7c262f1","ref":"refs/heads/mm-patch-1","pushedAt":"2024-08-08T14:17:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTOS:MM] Implement MmProbeAndLockProcessPages\nImplement undocumented MmProbeAndLockProcessPages routine. Based on mm-implement-mappingaddress.patch by Thomas Faber from CORE-10147, with some improvements from me.\nIt's badly required by FltMgr.sys driver from Windows XP/Server 2003 and closely used by a lot of apps those are depending on this driver (e. g., Avast Free Antivirus several versions, Avira Antivir Personal 8.2 etc. etc.).\nFixes several asserts from MDL support routines when the 3rd-party minifilter drivers are loading FltMgr.\nCORE-14157","shortMessageHtmlLink":"[NTOS:MM] Implement MmProbeAndLockProcessPages"}},{"before":"cb1fe04d2cb9ea9da3cfc4a2010275b7d308bc4f","after":"959ad8a619271c0cf866bce1dec088bcd447218f","ref":"refs/heads/mm-patch-1","pushedAt":"2024-08-08T13:46:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTOS:MM] Implement MmProbeAndLockProcessPages\nImplement undocumented MmProbeAndLockProcessPages routine. Based on mm-implement-mappingaddress.patch by Thomas Faber from CORE-10147, with some improvements from me.\nIt's badly required by FltMgr.sys driver from Windows XP/Server 2003 and closely used by a lot of apps those are depending on this driver (e. g., Avast Free Antivirus several versions, Avira Antivir Personal 8.2 etc. etc.).\nFixes several asserts from MDL support routines when the 3rd-party minifilter drivers are loading FltMgr.\nCORE-14157","shortMessageHtmlLink":"[NTOS:MM] Implement MmProbeAndLockProcessPages"}},{"before":"7dcf956d64109ecdc10cc0c2db5da75323a368b1","after":"cb1fe04d2cb9ea9da3cfc4a2010275b7d308bc4f","ref":"refs/heads/mm-patch-1","pushedAt":"2024-08-08T13:40:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTOS:MM] Implement MmProbeAndLockProcessPages\nImplement undocumented MmProbeAndLockProcessPages routine. Based on mm-implement-mappingaddress.patch by Thomas Faber from CORE-10147, with some improvements from me.\nIt's badly required by FltMgr.sys driver from Windows XP/Server 2003 and closely used by a lot of apps those are depending on this driver (e. g., Avast Free Antivirus several versions, Avira Antivir Personal 8.2 etc. etc.).\nFixes several asserts from MDL support routines when the 3rd-party minifilter drivers are loading FltMgr.\nCORE-14157","shortMessageHtmlLink":"[NTOS:MM] Implement MmProbeAndLockProcessPages"}},{"before":"8f483a76a60024ea403823e4970f69ca19bae3c4","after":"7dcf956d64109ecdc10cc0c2db5da75323a368b1","ref":"refs/heads/mm-patch-1","pushedAt":"2024-08-08T12:24:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTOS:MM] Implement MmProbeAndLockProcessPages\nImplement undocumented MmProbeAndLockProcessPages routine. Based on mm-implement-mappingaddress.patch by Thomas Faber from CORE-10147, with some improvements from me.\nIt's badly required by FltMgr.sys driver from Windows XP/Server 2003 and closely used by a lot of apps those are depending on this driver (e. g., Avast Free Antivirus several versions, Avira Antivir Personal 8.2 etc. etc.).\nFixes several asserts from MDL support routines when the 3rd-party minifilter drivers are loading FltMgr.\nCORE-14157","shortMessageHtmlLink":"[NTOS:MM] Implement MmProbeAndLockProcessPages"}},{"before":"fdc1d96dc1259093a07d6cd36c050716e831de74","after":"8f483a76a60024ea403823e4970f69ca19bae3c4","ref":"refs/heads/mm-patch-1","pushedAt":"2024-08-08T10:35:30.000Z","pushType":"push","commitsCount":9,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[COMDLG32] *.rc Tweak AUTORADIOBUTTONS (#7178)\n\n\r\n- Tweak AUTORADIOBUTTONS (AUTORADIOBUTTON implies BS_AUTORADIOBUTTON). This saves a bit of source-file-size and binary size.\r\n- and use the backspace key for improving alignment to column 39 for the controls names in PRINT32_SETUP DIALOG & PRINT32 DIALOG\r\n- and fix 3 accel collisions for upper chinese translation &OA &A &R\r\n- and add a few FIXMEs for existing accel collisions in other languages\r\n- fix a few strings in cdlg_Sr.rc\r\n\r\nJIRA issue: none\r\n\r\nNote1: I intentionally used only the backspace-key and not the space key to improve the alignment in PRINT32_SETUP DIALOG & PRINT32 DIALOG, so please refrain from any review-suggestions of the form \"oh you could add another space here, or another space there\". I will not do that in this PR. I just aligned some strings to column 39 (same as it is used within the Wine-master-rc-file)\r\n\r\nNote2: I will only accept accelerator suggestions as replacement for the added accel-FIXMEs that have been double-checked by a native translator from the native 2k3sp2, but no guesses.","shortMessageHtmlLink":"[COMDLG32] *.rc Tweak AUTORADIOBUTTONS (reactos#7178)"}},{"before":null,"after":"fdc1d96dc1259093a07d6cd36c050716e831de74","ref":"refs/heads/mm-patch-1","pushedAt":"2024-08-08T09:57:40.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[ISAPNP] Make sure that APCs are disabled before acquiring a lock\n\nNote: We could just use a fast mutex instead","shortMessageHtmlLink":"[ISAPNP] Make sure that APCs are disabled before acquiring a lock"}},{"before":"39077a7bf0de87142f7c2919dfe0eb32964ff3d0","after":"fdc1d96dc1259093a07d6cd36c050716e831de74","ref":"refs/heads/master","pushedAt":"2024-08-03T17:04:50.000Z","pushType":"push","commitsCount":70,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[ISAPNP] Make sure that APCs are disabled before acquiring a lock\n\nNote: We could just use a fast mutex instead","shortMessageHtmlLink":"[ISAPNP] Make sure that APCs are disabled before acquiring a lock"}},{"before":"987e07ef598f9d599fa2d5673e05a2b164120cde","after":"370f736d6235dfd4459c662c03a6b2c91dfd11ca","ref":"refs/heads/custom_cursors_support_new","pushedAt":"2024-07-21T09:00:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTUSER][USER32] Make possible to set custom mouse cursors\n\n[NTUSER]\n\n - Implement SPI_SETCURSORS case for SystemParametersInfoA/W. According to MSDN, it updates the system mouse cursors by the ones provided by user (can be set via main.cpl). It does not use any parameters from SystemParametersInfo:\n\n 1. First, get the cursor path from user defined values in registry via win32k!RegReadUserSetting.\n 2. Then load the cursor handle from the specified cursor via user32!LoadImageW called from the aprropriate win32k callback via KeUserModeCallback.\n 3. Set received handle for an appropriate resource ID via win32k!NtUserSetSystemCursor. Do this for each system defined cursor.\n\n - NEW: Call an internal handler for SPI_SETCURSORS from win32k!SpiUpdatePerUserSystemParameters, to reload user-defined cursors from Registry after reboot. This is called from WinLogon at each startup.\n - Implement co_IntLoadImage callback for user32!LoadImageW. Add an appropriate part in user32 also.\n - Rewrite co_IntSetupDefaultCursors callback, responsible for default (system) cursors loading. Call a callback to user32!LoadImageW, to load each system cursor, and then use win32k!NtUserSetSystemCursor to set each of them as the current system cursor.\n - Refactor some other several cursor/icon functions: NtUserFindExistingCursorIcon, NtUserSetSystemCursor and DefWndHandleSetCursor.\n - Handle HTHELP case in win32k!GetNCHitEx and user32!CreateDialogIndirectA/W, which is responsible for help button class. Set an appropriate cursor for this case in DefWndHandleSetCursor (DefWindowProc!WM_SETCURSOR message).\n - Remove bogus WM_SETCURSOR handing from win32k!DesktopWindowProc and user32!DesktopWndProcW, since it does not load a proper cursor at all, only default IDC_ARROW. It is already handled properly in win32k!IntDefWindowProc.\n - Set correct GreSetPointerShape flags for animated mouse cursors.\n - NEW: Add the system timer for animated mouse cursors where an each frame is enumerated separately and call it from win32k!UserSetCursor. This allows *.ani cursors to actually animate.\n\n[USER32]\n\n - Add/fix user mode parts of LoadImage and SetDefaultCursors callbacks. Don't try to load system cursor scheme, it should be done in main.cpl instead.\n - Handle animated mouse cursors (*.ani). Load them correcly in user32!CURSORICON_LoadFromFileW. We already have CURSORICON_GetCursorDataFromANI, which handles it properly. Also set the correct flags for CURSORDATA structure and enable CURSORF_ACON flag on cursor creation in case cursor is animated.\n - NEW: Load user-defined cursors from HKCU\\Control Panel\\Cursors Reigstry key. Call it from user32!ClientThreadSetup, to load a cursors at each startup.\n - NEW: Add a small workaround to user32!LoadCursorW: try to find and load current cursor from Registry set by user first, in case it is set. Only in case it was not found, continue normal execution: load default system cursor, as the function should do. This allows to properly load the correct cursor for all UI elements.\n\nRemaining bugs/issues:\n\n - Animated cursors always have a bit wrong position compared to Windows. However it's absolutely correct for standart cursors (with a *.cur extension).\n - Sometimes the animation becomes too fast (perhaps because of a recusrsive win32k!IntSetTimer calls, need it some another condition to kill the timer?).\n - In case of changing *.cur -> *.ani, sometimes the animation is continuing infinitely on some UI elements (or in the window where the previous *.ani cursor was initially set), even after cursor is changed. Needs to restart an app/explorer/etc. to avoid the problem. However, this does not occur when changing *.cur -> *.cur, *.cur -> *.ani and *.ani -> *.ani. Again, it seems to require one more condition to kill the timer.\n\nCORE-14165, CORE-14166","shortMessageHtmlLink":"[NTUSER][USER32] Make possible to set custom mouse cursors"}},{"before":"13b69725008a712640da158c3e0657823df54a1f","after":"39077a7bf0de87142f7c2919dfe0eb32964ff3d0","ref":"refs/heads/master","pushedAt":"2024-07-20T19:44:24.000Z","pushType":"push","commitsCount":210,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[BROWSEUI][SHDOCVW][SDK] Fix INamespaceProxy interface (#7156)\n\nUse correct interface definition for standardization.\r\nJIRA issue: CORE-19686\r\nUse INamespaceProxy interface\r\nthat is documented in the\r\nMicrosoft official site\r\n( https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/ee318424%28v=vs.85%29 )\r\nand Windows 10 PSDK\r\n(see um/ienamespacecontrol.idl file).","shortMessageHtmlLink":"[BROWSEUI][SHDOCVW][SDK] Fix INamespaceProxy interface (reactos#7156)"}},{"before":"be768f9c66e649c1138cd5e6becbd95dfef3af5d","after":"987e07ef598f9d599fa2d5673e05a2b164120cde","ref":"refs/heads/custom_cursors_support_new","pushedAt":"2024-07-20T14:02:02.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTUSER][USER32] Make possible to set custom mouse cursors\n\n[NTUSER]\n\n - Implement SPI_SETCURSORS case for SystemParametersInfoA/W. According to MSDN, it updates the system mouse cursors by the ones provided by user (can be set via main.cpl). It does not use any parameters from SystemParametersInfo:\n\n 1. First, get the cursor path from user defined values in registry via win32k!RegReadUserSetting.\n 2. Then load the cursor handle from the specified cursor via user32!LoadImageW called from the aprropriate win32k callback via KeUserModeCallback.\n 3. Set received handle for an appropriate resource ID via win32k!NtUserSetSystemCursor. Do this for each system defined cursor.\n\n - NEW: Call an internal handler for SPI_SETCURSORS from win32k!SpiUpdatePerUserSystemParameters, to reload user-defined cursors from Registry after reboot. This is called from WinLogon at each startup.\n - Implement co_IntLoadImage callback for user32!LoadImageW. Add an appropriate part in user32 also.\n - Rewrite co_IntSetupDefaultCursors callback, responsible for default (system) cursors loading. Call a callback to user32!LoadImageW, to load each system cursor, and then use win32k!NtUserSetSystemCursor to set each of them as the current system cursor.\n - Refactor some other several cursor/icon functions: NtUserFindExistingCursorIcon, NtUserSetSystemCursor and DefWndHandleSetCursor.\n - Handle HTHELP case in win32k!GetNCHitEx and user32!CreateDialogIndirectA/W, which is responsible for help button class. Set an appropriate cursor for this case in DefWndHandleSetCursor (DefWindowProc!WM_SETCURSOR message).\n - Remove bogus WM_SETCURSOR handing from win32k!DesktopWindowProc and user32!DesktopWndProcW, since it does not load a proper cursor at all, only default IDC_ARROW. It is already handled properly in win32k!IntDefWindowProc.\n - Set correct GreSetPointerShape flags for animated mouse cursors.\n - NEW: Add the system timer for animated mouse cursors where an each frame is enumerated separately and call it from win32k!UserSetCursor. This allows *.ani cursors to actually animate.\n\n[USER32]\n\n - Add/fix user mode parts of LoadImage and SetDefaultCursors callbacks. Don't try to load system cursor scheme, it should be done in main.cpl instead.\n - Handle animated mouse cursors (*.ani). Load them correcly in user32!CURSORICON_LoadFromFileW. We already have CURSORICON_GetCursorDataFromANI, which handles it properly. Also set the correct flags for CURSORDATA structure and enable CURSORF_ACON flag on cursor creation in case cursor is animated.\n - NEW: Load user-defined cursors from HKCU\\Control Panel\\Cursors Reigstry key. Call it from user32!ClientThreadSetup, to load a cursors at each startup.\n - NEW: Add a small workaround to user32!LoadCursorW: try to find and load current cursor from Registry set by user first, in case it is set. Only in case it was not found, continue normal execution: load default system cursor, as the function should do. This allows to properly load the correct cursor for all UI elements.\n\nRemaining bugs/issues:\n\n - Animated cursors always have a bit wrong position compared to Windows. However it's absolutely correct for standart cursors (with a *.cur extension).\n - Sometimes the animation becomes too fast (perhaps because of a recusrsive win32k!IntSetTimer calls, need it some another condition to kill the timer?).\n - In case of changing *.cur -> *.ani, sometimes the animation is continuing infinitely on some UI elements (or in the window where the previous *.ani cursor was initially set), even after cursor is changed. Needs to restart an app/explorer/etc. to avoid the problem. However, this does not occur when changing *.cur -> *.cur, *.cur -> *.ani and *.ani -> *.ani. Again, it seems to require one more condition to kill the timer.\n\nCORE-14165, CORE-14166","shortMessageHtmlLink":"[NTUSER][USER32] Make possible to set custom mouse cursors"}},{"before":"6ea9eeea9717cf71a51d83e838c6c0cb646f3875","after":"be768f9c66e649c1138cd5e6becbd95dfef3af5d","ref":"refs/heads/custom_cursors_support_new","pushedAt":"2024-07-15T08:06:58.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTUSER][USER32] Make possible to set custom mouse cursors\n\n[NTUSER]\n\n - Implement SPI_SETCURSORS case for SystemParametersInfoA/W. According to MSDN, it updates the system mouse cursors by the ones provided by user (can be set via main.cpl). It does not use any parameters from SystemParametersInfo:\n\n 1. First, get the cursor path from user defined values in registry via win32k!RegReadUserSetting.\n 2. Then load the cursor handle from the specified cursor via user32!LoadImageW called from the aprropriate win32k callback via KeUserModeCallback.\n 3. Set received handle for an appropriate resource ID via win32k!NtUserSetSystemCursor. Do this for each system defined cursor.\n\n - NEW: Call an internal handler for SPI_SETCURSORS from win32k!SpiUpdatePerUserSystemParameters, to reload user-defined cursors from Registry after reboot. This is called from WinLogon at each startup.\n - Implement co_IntLoadImage callback for user32!LoadImageW. Add an appropriate part in user32 also.\n - Rewrite co_IntSetupDefaultCursors callback, responsible for default (system) cursors loading. Call a callback to user32!LoadImageW, to load each system cursor, and then use win32k!NtUserSetSystemCursor to set each of them as the current system cursor.\n - Refactor some other several cursor/icon functions: NtUserFindExistingCursorIcon, NtUserSetSystemCursor and DefWndHandleSetCursor.\n - Handle HTHELP case in win32k!GetNCHitEx and user32!CreateDialogIndirectA/W, which is responsible for help button class. Set an appropriate cursor for this case in DefWndHandleSetCursor (DefWindowProc!WM_SETCURSOR message).\n - Remove bogus WM_SETCURSOR handing from win32k!DesktopWindowProc and user32!DesktopWndProcW, since it does not load a proper cursor at all, only default IDC_ARROW. It is already handled properly in win32k!IntDefWindowProc.\n - Set correct GreSetPointerShape flags for animated mouse cursors.\n - NEW: Add the system timer for animated mouse cursors where an each frame is enumerated separately and call it from win32k!UserSetCursor. This allows *.ani cursors to actually animate.\n\n[USER32]\n\n - Add/fix user mode parts of LoadImage and SetDefaultCursors callbacks. Don't try to load system cursor scheme, it should be done in main.cpl instead.\n - Handle animated mouse cursors (*.ani). Load them correcly in user32!CURSORICON_LoadFromFileW. We already have CURSORICON_GetCursorDataFromANI, which handles it properly. Also set the correct flags for CURSORDATA structure and enable CURSORF_ACON flag on cursor creation in case cursor is animated.\n - NEW: Load user-defined cursors from HKCU\\Control Panel\\Cursors Reigstry key. Call it from user32!ClientThreadSetup, to load a cursors at each startup.\n - NEW: Add a small workaround to user32!LoadCursorW: try to find and load current cursor from Registry set by user first, in case it is set. Only in case it was not found, continue normal execution: load default system cursor, as the function should do. This allows to properly load the correct cursor for all UI elements.\n\nRemaining bugs/issues:\n\n - Animated cursors always have a bit wrong position compared to Windows. However it's absolutely correct for standart cursors (with a *.cur extension).\n - Sometimes the animation becomes too fast (perhaps because of a recusrsive win32k!IntSetTimer calls, need it some another condition to kill the timer?).\n - In case of changing *.cur -> *.ani, sometimes the animation is continuing infinitely on some UI elements (or in the window where the previous *.ani cursor was initially set), even after cursor is changed. Needs to restart an app/explorer/etc. to avoid the problem. However, this does not occur when changing *.cur -> *.cur, *.cur -> *.ani and *.ani -> *.ani. Again, it seems to require one more condition to kill the timer.\n\nCORE-14165, CORE-14166","shortMessageHtmlLink":"[NTUSER][USER32] Make possible to set custom mouse cursors"}},{"before":"c2b82eb15badfad1234f174855b39f54a41f9328","after":"6ea9eeea9717cf71a51d83e838c6c0cb646f3875","ref":"refs/heads/custom_cursors_support_new","pushedAt":"2024-07-14T19:41:04.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTUSER][USER32] Make possible to set custom mouse cursors\n\n[NTUSER]\n\n - Implement SPI_SETCURSORS case for SystemParametersInfoA/W. According to MSDN, it updates the system mouse cursors by the ones provided by user (can be set via main.cpl). It does not use any parameters from SystemParametersInfo:\n\n 1. First, get the cursor path from user defined values in registry via win32k!RegReadUserSetting.\n 2. Then load the cursor handle from the specified cursor via user32!LoadImageW called from the aprropriate win32k callback via KeUserModeCallback.\n 3. Set received handle for an appropriate resource ID via win32k!NtUserSetSystemCursor. Do this for each system defined cursor.\n\n - NEW: Call an internal handler for SPI_SETCURSORS from win32k!SpiUpdatePerUserSystemParameters, to reload user-defined cursors from Registry after reboot. This is called from WinLogon at each startup.\n - Implement co_IntLoadImage callback for user32!LoadImageW. Add an appropriate part in user32 also.\n - Rewrite co_IntSetupDefaultCursors callback, responsible for default (system) cursors loading. Call a callback to user32!LoadImageW, to load each system cursor, and then use win32k!NtUserSetSystemCursor to set each of them as the current system cursor.\n - Refactor some other several cursor/icon functions: NtUserFindExistingCursorIcon, NtUserSetSystemCursor and DefWndHandleSetCursor.\n - Handle HTHELP case in win32k!GetNCHitEx and user32!CreateDialogIndirectA/W, which is responsible for help button class. Set an appropriate cursor for this case in DefWndHandleSetCursor (DefWindowProc!WM_SETCURSOR message).\n - Remove bogus WM_SETCURSOR handing from win32k!DesktopWindowProc and user32!DesktopWndProcW, since it does not load a proper cursor at all, only default IDC_ARROW. It is already handled properly in win32k!IntDefWindowProc.\n - Set correct GreSetPointerShape flags for animated mouse cursors.\n - NEW: Add the system timer for animated mouse cursors where an each frame is enumerated separately and call it from win32k!UserSetCursor. This allows *.ani cursors to actually animate.\n\n[USER32]\n\n - Add/fix user mode parts of LoadImage and SetDefaultCursors callbacks. Don't try to load system cursor scheme, it should be done in main.cpl instead.\n - Handle animated mouse cursors (*.ani). Load them correcly in user32!CURSORICON_LoadFromFileW. We already have CURSORICON_GetCursorDataFromANI, which handles it properly. Also set the correct flags for CURSORDATA structure and enable CURSORF_ACON flag on cursor creation in case cursor is animated.\n - NEW: Load user-defined cursors from HKCU\\Control Panel\\Cursors Reigstry key. Call it from user32!ClientThreadSetup, to load a cursors at each startup.\n - NEW: Add a small workaround to user32!LoadCursorW: try to find and load current cursor from Registry set by user first, in case it is set. Only in case it was not found, continue normal execution: load default system cursor, as the function should do. This allows to properly load the correct cursor for all UI elements.\n\nRemaining bugs/issues:\n\n - Animated cursors always have a bit wrong position compared to Windows. However it's absolutely correct for standart cursors (with a *.cur extension).\n - Sometimes the animation becomes too fast (perhaps because of a recusrsive win32k!IntSetTimer calls, need it some another condition to kill the timer?).\n - In case of changing *.cur -> *.ani, sometimes the animation is continuing infinitely on some UI elements (or in the window where the previous *.ani cursor was initially set), even after cursor is changed. Needs to restart an app/explorer/etc. to avoid the problem. However, this does not occur when changing *.cur -> *.cur, *.cur -> *.ani and *.ani -> *.ani. Again, it seems to require one more condition to kill the timer.\n\nCORE-14165, CORE-14166","shortMessageHtmlLink":"[NTUSER][USER32] Make possible to set custom mouse cursors"}},{"before":"1eeee97dd5f4dbced30c54793f44ec51e35a9236","after":"c2b82eb15badfad1234f174855b39f54a41f9328","ref":"refs/heads/custom_cursors_support_new","pushedAt":"2024-07-14T08:32:52.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTUSER][USER32] Make possible to set custom mouse cursors\n\n[NTUSER]\n\n - Implement SPI_SETCURSORS case for SystemParametersInfoA/W. According to MSDN, it updates the system mouse cursors by the ones provided by user (can be set via main.cpl). It does not use any parameters from SystemParametersInfo:\n\n 1. First, get the cursor path from user defined values in registry via win32k!RegReadUserSetting.\n 2. Then load the cursor handle from the specified cursor via user32!LoadImageW called from the aprropriate win32k callback via KeUserModeCallback.\n 3. Set received handle for an appropriate resource ID via win32k!NtUserSetSystemCursor. Do this for each system defined cursor.\n\n - NEW: Call an internal handler for SPI_SETCURSORS from win32k!SpiUpdatePerUserSystemParameters, to reload user-defined cursors from Registry after reboot. This is called from WinLogon at each startup.\n - Implement co_IntLoadImage callback for user32!LoadImageW. Add an appropriate part in user32 also.\n - Rewrite co_IntSetupDefaultCursors callback, responsible for default (system) cursors loading. Call a callback to user32!LoadImageW, to load each system cursor, and then use win32k!NtUserSetSystemCursor to set each of them as the current system cursor.\n - Refactor some other several cursor/icon functions: NtUserFindExistingCursorIcon, NtUserSetSystemCursor and DefWndHandleSetCursor.\n - Handle HTHELP case in win32k!GetNCHitEx and user32!CreateDialogIndirectA/W, which is responsible for help button class. Set an appropriate cursor for this case in DefWndHandleSetCursor (DefWindowProc!WM_SETCURSOR message).\n - Remove bogus WM_SETCURSOR handing from win32k!DesktopWindowProc and user32!DesktopWndProcW, since it does not load a proper cursor at all, only default IDC_ARROW. It is already handled properly in win32k!IntDefWindowProc.\n - Set correct GreSetPointerShape flags for animated mouse cursors.\n - NEW: Add the system timer for animated mouse cursors where an each frame is enumerated separately and call it from win32k!UserSetCursor. This allows *.ani cursors to actually animate.\n\n[USER32]\n\n - Add/fix user mode parts of LoadImage and SetDefaultCursors callbacks. Don't try to load system cursor scheme, it should be done in main.cpl instead.\n - Handle animated mouse cursors (*.ani). Load them correcly in user32!CURSORICON_LoadFromFileW. We already have CURSORICON_GetCursorDataFromANI, which handles it properly. Also set the correct flags for CURSORDATA structure and enable CURSORF_ACON flag on cursor creation in case cursor is animated.\n - NEW: Load user-defined cursors from HKCU\\Control Panel\\Cursors Reigstry key. Call it from user32!ClientThreadSetup, to load a cursors at each startup.\n - NEW: Add a small workaround to user32!LoadCursorW: try to find and load current cursor from Registry set by user first, in case it is set. Only in case it was not found, continue normal execution: load default system cursor, as the function should do. This allows to properly load the correct cursor for all UI elements.\n\nRemaining bugs/issues:\n\n - Animated cursors always have a bit wrong position compared to Windows. However it's absolutely correct for standart cursors (with a *.cur extension).\n - Sometimes the animation becomes too fast (perhaps because of a recusrsive win32k!IntSetTimer calls, need it some another condition to kill the timer?).\n - In case of changing *.cur -> *.ani, sometimes the animation is continuing infinitely on some UI elements (or in the window where the previous *.ani cursor was initially set), even after cursor is changed. Needs to restart an app/explorer/etc. to avoid the problem. However, this does not occur when changing *.cur -> *.cur, *.cur -> *.ani and *.ani -> *.ani. Again, it seems to require one more condition to kill the timer.\n\nCORE-14165, CORE-14166","shortMessageHtmlLink":"[NTUSER][USER32] Make possible to set custom mouse cursors"}},{"before":"fc18e2d511d27de67b9830fd964dd1ef1d5972b2","after":"1eeee97dd5f4dbced30c54793f44ec51e35a9236","ref":"refs/heads/custom_cursors_support_new","pushedAt":"2024-07-13T18:06:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTUSER][USER32] Make possible to set custom mouse cursors\n\n[NTUSER]\n\n - Implement SPI_SETCURSORS case for SystemParametersInfoA/W. According to MSDN, it updates the system mouse cursors by the ones provided by user (can be set via main.cpl). It does not use any parameters from SystemParametersInfo:\n\n 1. First, get the cursor path from user defined values in registry via win32k!RegReadUserSetting.\n 2. Then load the cursor handle from the specified cursor via user32!LoadImageW called from the aprropriate win32k callback via KeUserModeCallback.\n 3. Set received handle for an appropriate resource ID via win32k!NtUserSetSystemCursor. Do this for each system defined cursor.\n\n - NEW: Call an internal handler for SPI_SETCURSORS from win32k!SpiUpdatePerUserSystemParameters, to reload user-defined cursors from Registry after reboot. This is called from WinLogon at each startup.\n - Implement co_IntLoadImage callback for user32!LoadImageW. Add an appropriate part in user32 also.\n - Rewrite co_IntSetupDefaultCursors callback, responsible for default (system) cursors loading. Call a callback to user32!LoadImageW, to load each system cursor, and then use win32k!NtUserSetSystemCursor to set each of them as the current system cursor.\n - Refactor some other several cursor/icon functions: NtUserFindExistingCursorIcon, NtUserSetSystemCursor and DefWndHandleSetCursor.\n - Handle HTHELP case in win32k!GetNCHitEx and user32!CreateDialogIndirectA/W, which is responsible for help button class. Set an appropriate cursor for this case in DefWndHandleSetCursor (DefWindowProc!WM_SETCURSOR message).\n - Remove bogus WM_SETCURSOR handing from win32k!DesktopWindowProc and user32!DesktopWndProcW, since it does not load a proper cursor at all, only default IDC_ARROW. It is already handled properly in win32k!IntDefWindowProc.\n - Set correct GreSetPointerShape flags for animated mouse cursors.\n - NEW: Add the system timer for animated mouse cursors where an each frame is enumerated separately and call it from win32k!UserSetCursor. This allows *.ani cursors to actually animate.\n\n[USER32]\n\n - Add/fix user mode parts of LoadImage and SetDefaultCursors callbacks. Don't try to load system cursor scheme, it should be done in main.cpl instead.\n - Handle animated mouse cursors (*.ani). Load them correcly in user32!CURSORICON_LoadFromFileW. We already have CURSORICON_GetCursorDataFromANI, which handles it properly. Also set the correct flags for CURSORDATA structure and enable CURSORF_ACON flag on cursor creation in case cursor is animated.\n - NEW: Load user-defined cursors from HKCU\\Control Panel\\Cursors Reigstry key. Call it from user32!ClientThreadSetup, to load a cursors at each startup.\n - NEW: Add a small workaround to user32!LoadCursorW: try to find and load current cursor from Registry set by user first, in case it is set. Only in case it was not found, continue normal execution: load default system cursor, as the function should do. This allows to properly load the correct cursor for all UI elements.\n\nRemaining bugs/issues:\n\n - Animated cursors always have a bit wrong position compared to Windows. However it's absolutely correct for standart cursors (with a *.cur extension).\n - Sometimes the animation becomes too fast (perhaps because of a recusrsive win32k!IntSetTimer calls, need it some another condition to kill the timer?).\n - In case of changing *.cur -> *.ani, sometimes the animation is continuing infinitely on some UI elements (or in the window where the previous *.ani cursor was initially set), even after cursor is changed. Needs to restart an app/explorer/etc. to avoid the problem. However, this does not occur when changing *.cur -> *.cur, *.cur -> *.ani and *.ani -> *.ani. Again, it seems to require one more condition to kill the timer.\n\nCORE-14165, CORE-14166","shortMessageHtmlLink":"[NTUSER][USER32] Make possible to set custom mouse cursors"}},{"before":"1ad09e7b41a1bcaddcf1bd7ced1efc4dd039afd7","after":"fc18e2d511d27de67b9830fd964dd1ef1d5972b2","ref":"refs/heads/custom_cursors_support_new","pushedAt":"2024-07-13T12:39:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTUSER][USER32] Make possible to set custom mouse cursors\n\n[NTUSER]\n\n - Implement SPI_SETCURSORS case for SystemParametersInfoA/W. According to MSDN, it updates the system mouse cursors by the ones provided by user (can be set via main.cpl). It does not use any parameters from SystemParametersInfo:\n\n 1. First, get the cursor path from user defined values in registry via win32k!RegReadUserSetting.\n 2. Then load the cursor handle from the specified cursor via user32!LoadImageW called from the aprropriate win32k callback via KeUserModeCallback.\n 3. Set received handle for an appropriate resource ID via win32k!NtUserSetSystemCursor. Do this for each system defined cursor.\n\n - NEW: Call an internal handler for SPI_SETCURSORS from win32k!SpiUpdatePerUserSystemParameters, to reload user-defined cursors from Registry after reboot. This is called from WinLogon at each startup.\n - Implement co_IntLoadImage callback for user32!LoadImageW. Add an appropriate part in user32 also.\n - Rewrite co_IntSetupDefaultCursors callback, responsible for default (system) cursors loading. Call a callback to user32!LoadImageW, to load each system cursor, and then use win32k!NtUserSetSystemCursor to set each of them as the current system cursor.\n - Refactor some other several cursor/icon functions: NtUserFindExistingCursorIcon, NtUserSetSystemCursor and DefWndHandleSetCursor.\n - Handle HTHELP case in win32k!GetNCHitEx and user32!CreateDialogIndirectA/W, which is responsible for help button class. Set an appropriate cursor for this case in DefWndHandleSetCursor (DefWindowProc!WM_SETCURSOR message).\n - Remove bogus WM_SETCURSOR handing from win32k!DesktopWindowProc and user32!DesktopWndProcW, since it does not load a proper cursor at all, only default IDC_ARROW. It is already handled properly in win32k!IntDefWindowProc.\n - Set correct GreSetPointerShape flags for animated mouse cursors.\n - NEW: Add the system timer for animated mouse cursors where an each frame is enumerated separately and call it from win32k!UserSetCursor. This allows *.ani cursors to actually animate.\n\n[USER32]\n\n - Add/fix user mode parts of LoadImage and SetDefaultCursors callbacks. Don't try to load system cursor scheme, it should be done in main.cpl instead.\n - Handle animated mouse cursors (*.ani). Load them correcly in user32!CURSORICON_LoadFromFileW. We already have CURSORICON_GetCursorDataFromANI, which handles it properly. Also set the correct flags for CURSORDATA structure and enable CURSORF_ACON flag on cursor creation in case cursor is animated.\n - NEW: Load user-defined cursors from HKCU\\Control Panel\\Cursors Reigstry key. Call it from user32!ClientThreadSetup, to load a cursors at each startup.\n - NEW: Add a small workaround to user32!LoadCursorW: try to find and load current cursor from Registry set by user first, in case it is set. Only in case it was not found, continue normal execution: load default system cursor, as the function should do. This allows to properly load the correct cursor for all UI elements.\n\nRemaining bugs/issues:\n\n - Animated cursors always have a bit wrong position compared to Windows. However it's absolutely correct for standart cursors (with a *.cur extension).\n - Sometimes the animation becomes too fast (perhaps because of a recusrsive win32k!IntSetTimer calls, need it some another condition to kill the timer?).\n - In case of changing *.cur -> *.ani, sometimes the animation is continuing infinitely on some UI elements (or in the window where the previous *.ani cursor was initially set), even after cursor is changed. Needs to restart an app/explorer/etc. to avoid the problem. However, this does not occur when changing *.cur -> *.cur, *.cur -> *.ani and *.ani -> *.ani. Again, it seems to require one more condition to kill the timer.\n\nCORE-14165, CORE-14166","shortMessageHtmlLink":"[NTUSER][USER32] Make possible to set custom mouse cursors"}},{"before":"2f24da815019481674b3a9dd7c849c8e86a82c4f","after":"1ad09e7b41a1bcaddcf1bd7ced1efc4dd039afd7","ref":"refs/heads/custom_cursors_support_new","pushedAt":"2024-07-13T09:18:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTUSER][USER32] Make possible to set custom mouse cursors\n\n[NTUSER]\n\n - Implement SPI_SETCURSORS case for SystemParametersInfoA/W. According to MSDN, it updates the system mouse cursors by the ones provided by user (can be set via main.cpl). It does not use any parameters from SystemParametersInfo:\n\n 1. First, get the cursor path from user defined values in registry via win32k!RegReadUserSetting.\n 2. Then load the cursor handle from the specified cursor via user32!LoadImageW called from the aprropriate win32k callback via KeUserModeCallback.\n 3. Set received handle for an appropriate resource ID via win32k!NtUserSetSystemCursor. Do this for each system defined cursor.\n\n - NEW: Call an internal handler for SPI_SETCURSORS from win32k!SpiUpdatePerUserSystemParameters, to reload user-defined cursors from Registry after reboot. This is called from WinLogon at each startup.\n - Implement co_IntLoadImage callback for user32!LoadImageW. Add an appropriate part in user32 also.\n - Rewrite co_IntSetupDefaultCursors callback, responsible for default (system) cursors loading. Call a callback to user32!LoadImageW, to load each system cursor, and then use win32k!NtUserSetSystemCursor to set each of them as the current system cursor.\n - Refactor some other several cursor/icon functions: NtUserFindExistingCursorIcon, NtUserSetSystemCursor and DefWndHandleSetCursor.\n - Handle HTHELP case in win32k!GetNCHitEx and user32!CreateDialogIndirectA/W, which is responsible for help button class. Set an appropriate cursor for this case in DefWndHandleSetCursor (DefWindowProc!WM_SETCURSOR message).\n - Remove bogus WM_SETCURSOR handing from win32k!DesktopWindowProc and user32!DesktopWndProcW, since it does not load a proper cursor at all, only default IDC_ARROW. It is already handled properly in win32k!IntDefWindowProc.\n - Set correct GreSetPointerShape flags for animated mouse cursors.\n - NEW: Add the system timer for animated mouse cursors where an each frame is enumerated separately and call it from win32k!UserSetCursor. This allows *.ani cursors to actually animate.\n\n[USER32]\n\n - Add/fix user mode parts of LoadImage and SetDefaultCursors callbacks. Don't try to load system cursor scheme, it should be done in main.cpl instead.\n - Handle animated mouse cursors (*.ani). Load them correcly in user32!CURSORICON_LoadFromFileW. We already have CURSORICON_GetCursorDataFromANI, which handles it properly. Also set the correct flags for CURSORDATA structure and enable CURSORF_ACON flag on cursor creation in case cursor is animated.\n - NEW: Load user-defined cursors from HKCU\\Control Panel\\Cursors Reigstry key. Call it from user32!ClientThreadSetup, to load a cursors at each startup.\n - NEW: Add a small workaround to user32!LoadCursorW: try to find and load current cursor from Registry set by user first, in case it is set. Only in case it was not found, continue normal execution: load default system cursor, as the function should do. This allows to properly load the correct cursor for all UI elements.\n\nRemaining bugs/issues:\n\n - Animated cursors always have a bit wrong position compared to Windows. However it's absolutely correct for standart cursors (with a *.cur extension).\n - Sometimes the animation becomes too fast (perhaps because of a recusrsive win32k!IntSetTimer calls, need it some another condition to kill the timer?).\n - In case of changing *.cur -> *.ani, sometimes the animation is continuing infinitely on some UI elements (or in the window where the previous *.ani cursor was initially set), even after cursor is changed. Needs to restart an app/explorer/etc. to avoid the problem. However, this does not occur when changing *.cur -> *.cur, *.cur -> *.ani and *.ani -> *.ani. Again, it seems to require one more condition to kill the timer.\n\nCORE-14165, CORE-14166","shortMessageHtmlLink":"[NTUSER][USER32] Make possible to set custom mouse cursors"}},{"before":"6a927fe27bf800c404112684aefb835438435320","after":"2f24da815019481674b3a9dd7c849c8e86a82c4f","ref":"refs/heads/custom_cursors_support_new","pushedAt":"2024-07-12T17:47:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTUSER][USER32] Make possible to set custom mouse cursors\n\n[NTUSER]\n\n - Implement SPI_SETCURSORS case for SystemParametersInfoA/W. According to MSDN, it updates the system mouse cursors by the ones provided by user (can be set via main.cpl). It does not use any parameters from SystemParametersInfo:\n\n 1. First, get the cursor path from user defined values in registry via win32k!RegReadUserSetting.\n 2. Then load the cursor handle from the specified cursor via user32!LoadImageW called from the aprropriate win32k callback via KeUserModeCallback.\n 3. Set received handle for an appropriate resource ID via win32k!NtUserSetSystemCursor. Do this for each system defined cursor.\n\n - NEW: Call an internal handler for SPI_SETCURSORS from win32k!SpiUpdatePerUserSystemParameters, to reload user-defined cursors from Registry after reboot. This is called from WinLogon at each startup.\n - Implement co_IntLoadImage callback for user32!LoadImageW. Add an appropriate part in user32 also.\n - Rewrite co_IntSetupDefaultCursors callback, responsible for default (system) cursors loading. Call a callback to user32!LoadImageW, to load each system cursor, and then use win32k!NtUserSetSystemCursor to set each of them as the current system cursor.\n - Refactor some other several cursor/icon functions: NtUserFindExistingCursorIcon, NtUserSetSystemCursor and DefWndHandleSetCursor.\n - Handle HTHELP case in win32k!GetNCHitEx and user32!CreateDialogIndirectA/W, which is responsible for help button class. Set an appropriate cursor for this case in DefWndHandleSetCursor (DefWindowProc!WM_SETCURSOR message).\n - Remove bogus WM_SETCURSOR handing from win32k!DesktopWindowProc and user32!DesktopWndProcW, since it does not load a proper cursor at all, only default IDC_ARROW. It is already handled properly in win32k!IntDefWindowProc.\n - Set correct GreSetPointerShape flags for animated mouse cursors.\n - NEW: Add the system timer for animated mouse cursors where an each frame is enumerated separately and call it from win32k!UserSetCursor. This allows *.ani cursors to actually animate.\n\n[USER32]\n\n - Add/fix user mode parts of LoadImage and SetDefaultCursors callbacks. Don't try to load system cursor scheme, it should be done in main.cpl instead.\n - Handle animated mouse cursors (*.ani). Load them correcly in user32!CURSORICON_LoadFromFileW. We already have CURSORICON_GetCursorDataFromANI, which handles it properly. Also set the correct flags for CURSORDATA structure and enable CURSORF_ACON flag on cursor creation in case cursor is animated.\n - NEW: Load user-defined cursors from HKCU\\Control Panel\\Cursors Reigstry key. Call it from user32!ClientThreadSetup, to load a cursors at each startup.\n - NEW: Add a small workaround to user32!LoadCursorW: try to find and load current cursor from Registry set by user first, in case it is set. Only in case it was not found, continue normal execution: load default system cursor, as the function should do. This allows to properly load the correct cursor for all UI elements.\n\nRemaining bugs/issues:\n\n - Animated cursors always have a bit wrong position compared to Windows. However it's absolutely correct for standart cursors (with a *.cur extension).\n - Sometimes the animation becomes too fast (perhaps because of a recusrsive win32k!IntSetTimer calls, need it some another condition to kill the timer?).\n - In case of changing *.cur -> *.ani, sometimes the animation is continuing infinitely on some UI elements (or in the window where the previous *.ani cursor was initially set), even after cursor is changed. Needs to restart an app/explorer/etc. to avoid the problem. However, this does not occur when changing *.cur -> *.cur, *.cur -> *.ani and *.ani -> *.ani. Again, it seems to require one more condition to kill the timer.\n\nCORE-14165, CORE-14166","shortMessageHtmlLink":"[NTUSER][USER32] Make possible to set custom mouse cursors"}},{"before":"1681c21ed5b7024780ae18f80ec5cac325945b62","after":"6a927fe27bf800c404112684aefb835438435320","ref":"refs/heads/custom_cursors_support_new","pushedAt":"2024-07-09T20:52:54.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTUSER][USER32] Make possible to set custom mouse cursors\n\n[NTUSER]\n\n - Implement SPI_SETCURSORS case for SystemParametersInfoA/W. According to MSDN, it updates the system mouse cursors by the ones provided by user (can be set via main.cpl). It does not use any parameters from SystemParametersInfo:\n\n 1. First, get the cursor path from user defined values in registry via win32k!RegReadUserSetting.\n 2. Then load the cursor handle from the specified cursor via user32!LoadImageW called from the aprropriate win32k callback via KeUserModeCallback.\n 3. Set received handle for an appropriate resource ID via win32k!NtUserSetSystemCursor. Do this for each system defined cursor.\n\n - NEW: Call an internal handler for SPI_SETCURSORS from win32k!SpiUpdatePerUserSystemParameters, to reload user-defined cursors from Registry after reboot. This is called from WinLogon at each startup.\n - Implement co_IntLoadImage callback for user32!LoadImageW. Add an appropriate part in user32 also.\n - Rewrite co_IntSetupDefaultCursors callback, responsible for default (system) cursors loading. Call a callback to user32!LoadImageW, to load each system cursor, and then use win32k!NtUserSetSystemCursor to set each of them as the current system cursor.\n - Refactor some other several cursor/icon functions: NtUserFindExistingCursorIcon, NtUserSetSystemCursor and DefWndHandleSetCursor.\n - Handle HTHELP case in win32k!GetNCHitEx and user32!CreateDialogIndirectA/W, which is responsible for help button class. Set an appropriate cursor for this case in DefWndHandleSetCursor (DefWindowProc!WM_SETCURSOR message).\n - Remove bogus WM_SETCURSOR handing from win32k!DesktopWindowProc and user32!DesktopWndProcW, since it does not load a proper cursor at all, only default IDC_ARROW. It is already handled properly in win32k!IntDefWindowProc.\n - Set correct GreSetPointerShape flags for animated mouse cursors.\n - NEW: Add the system timer for animated mouse cursors where an each frame is enumerated separately and call it from win32k!UserSetCursor. This allows *.ani cursors to actually animate.\n\n[USER32]\n\n - Add/fix user mode parts of LoadImage and SetDefaultCursors callbacks. Don't try to load system cursor scheme, it should be done in main.cpl instead.\n - Handle animated mouse cursors (*.ani). Load them correcly in user32!CURSORICON_LoadFromFileW. We already have CURSORICON_GetCursorDataFromANI, which handles it properly. Also set the correct flags for CURSORDATA structure and enable CURSORF_ACON flag on cursor creation in case cursor is animated.\n - NEW: Load user-defined cursors from HKCU\\Control Panel\\Cursors Reigstry key. Call it from user32!ClientThreadSetup, to load a cursors at each startup.\n - NEW: Add a small workaround to user32!LoadCursorW: try to find and load current cursor from Registry set by user first, in case it is set. Only in case it was not found, continue normal execution: load default system cursor, as the function should do. This allows to properly load the correct cursor for all UI elements.\n\nRemaining bugs/issues:\n\n - Animated cursors always have a bit wrong position compared to Windows. However it's absolutely correct for standart cursors (with a *.cur extension).\n - Sometimes the animation becomes too fast (perhaps because of a recusrsive win32k!IntSetTimer calls, need it some another condition to kill the timer?).\n - In case of changing *.cur -> *.ani, sometimes the animation is continuing infinitely on some UI elements (or in the window where the previous *.ani cursor was initially set), even after cursor is changed. Needs to restart an app/explorer/etc. to avoid the problem. However, this does not occur when changing *.cur -> *.cur, *.cur -> *.ani and *.ani -> *.ani. Again, it seems to require one more condition to kill the timer.\n\nCORE-14165, CORE-14166","shortMessageHtmlLink":"[NTUSER][USER32] Make possible to set custom mouse cursors"}},{"before":"d84f7729350073f491e738153a8b5bf6c1d32952","after":"1681c21ed5b7024780ae18f80ec5cac325945b62","ref":"refs/heads/custom_cursors_support_new","pushedAt":"2024-07-09T18:51:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oleg-dubinskiy","name":"Oleg Dubinskiy","path":"/oleg-dubinskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26385117?s=80&v=4"},"commit":{"message":"[NTUSER][USER32] Make possible to set custom mouse cursors\n\n[NTUSER]\n\n - Implement SPI_SETCURSORS case for SystemParametersInfoA/W. According to MSDN, it updates the system mouse cursors by the ones provided by user (can be set via main.cpl). It does not use any parameters from SystemParametersInfo:\n\n 1. First, get the cursor path from user defined values in registry via win32k!RegReadUserSetting.\n 2. Then load the cursor handle from the specified cursor via user32!LoadImageW called from the aprropriate win32k callback via KeUserModeCallback.\n 3. Set received handle for an appropriate resource ID via win32k!NtUserSetSystemCursor. Do this for each system defined cursor.\n\n - NEW: Call an internal handler for SPI_SETCURSORS from win32k!SpiUpdatePerUserSystemParameters, to reload user-defined cursors from Registry after reboot. This is called from WinLogon at each startup.\n - Implement co_IntLoadImage callback for user32!LoadImageW. Add an appropriate part in user32 also.\n - Rewrite co_IntSetupDefaultCursors callback, responsible for default (system) cursors loading. Call a callback to user32!LoadImageW, to load each system cursor, and then use win32k!NtUserSetSystemCursor to set each of them as the current system cursor.\n - Refactor some other several cursor/icon functions: NtUserFindExistingCursorIcon, NtUserSetSystemCursor and DefWndHandleSetCursor.\n - Handle HTHELP case in win32k!GetNCHitEx and user32!CreateDialogIndirectA/W, which is responsible for help button class. Set an appropriate cursor for this case in DefWndHandleSetCursor (DefWindowProc!WM_SETCURSOR message).\n - Remove bogus WM_SETCURSOR handing from win32k!DesktopWindowProc and user32!DesktopWndProcW, since it does not load a proper cursor at all, only default IDC_ARROW. It is already handled properly in win32k!IntDefWindowProc.\n - Set correct GreSetPointerShape flags for animated mouse cursors.\n - NEW: Add the system timer for animated mouse cursors where an each frame is enumerated separately and call it from win32k!UserSetCursor. This allows *.ani cursors to actually animate.\n\n[USER32]\n\n - Add/fix user mode parts of LoadImage and SetDefaultCursors callbacks. Don't try to load system cursor scheme, it should be done in main.cpl instead.\n - Handle animated mouse cursors (*.ani). Load them correcly in user32!CURSORICON_LoadFromFileW. We already have CURSORICON_GetCursorDataFromANI, which handles it properly. Also set the correct flags for CURSORDATA structure and enable CURSORF_ACON flag on cursor creation in case cursor is animated.\n - NEW: Load user-defined cursors from HKCU\\Control Panel\\Cursors Reigstry key. Call it from user32!ClientThreadSetup, to load a cursors at each startup.\n - NEW: Add a small workaround to user32!LoadCursorW: try to find and load current cursor from Registry set by user first, in case it is set. Only in case it was not found, continue normal execution: load default system cursor, as the function should do. This allows to properly load the correct cursor for all UI elements.\n\nRemaining bugs/issues:\n\n - Animated cursors always have a bit wrong position compared to Windows. However it's absolutely correct for standart cursors (with a *.cur extension).\n - Sometimes the animation becomes too fast (perhaps because of a recusrsive win32k!IntSetTimer calls, need it some another condition to kill the timer?).\n - In case of changing *.cur -> *.ani, sometimes the animation is continuing infinitely on some UI elements (or in the window where the previous *.ani cursor was initially set), even after cursor is changed. Needs to restart an app/explorer/etc. to avoid the problem. However, this does not occur when changing *.cur -> *.cur, *.cur -> *.ani and *.ani -> *.ani. Again, it seems to require one more condition to kill the timer.\n\nCORE-14165, CORE-14166","shortMessageHtmlLink":"[NTUSER][USER32] Make possible to set custom mouse cursors"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEo5jQHwA","startCursor":null,"endCursor":null}},"title":"Activity · oleg-dubinskiy/reactos"}