1
0
mirror of https://github.com/valinet/ExplorerPatcher.git synced 2024-12-18 10:26:02 +01:00
Commit Graph

595 Commits

Author SHA1 Message Date
Valentin Radu
9ec44832dd Weather: Fixed a bug that could hang the host process and explorer
A nasty bug was sometime occurring where both explorer and the widget
host process could hang; this often happened when explorer was
restarted. The reason this happened was because the widget host
process could hang waiting for the "Lock_EPWeather_Instance" lock. This
was a global lock that made sure only one instance of the widget could
be created.

The idea of the global "Lock_EPWeather_Instance" lock was, of course,
pretty bad, but I chose it because I couldn't figure out/didn't want to
deal with passing an EPWeather "this" instance to WebView2 or
NetworkListManagerEvents functions. Bad decision.

This patch addresses this bug, by providing a generic object
which holds a reference to EPWeather "this" on which I build event
handlers for WebView2 and so on. Since these now contain this
reference, they cannot be static anymore, thus I switched to dynamically
allocating them and managing them throughout their lifetime using,
of course, reference counting. This is the proper solution.

Thus, this bug and any similar ones should now be fixed.
2022-08-05 15:31:36 +03:00
Valentin Radu
1c31c1c281 Weather: Free widget from a single place 2022-08-05 15:31:24 +03:00
Valentin Radu
953a984353 Version: 22000.795.48.1 2022-08-05 00:09:20 +03:00
Valentin Radu
7c1cb3d560 Weather: Do not display error page when network connectivity is lost; instead, keep showing cached data from last refresh 2022-08-04 23:58:28 +03:00
Valentin Radu
da3fece8cd Weather: Wait a bit before refreshing when network connectivity is restored
This is so that we avoid a situation where the browser was looping on
trying to display the error page. Each navigation request was
erroring out, and the error said something along the lines of
"Your computer went to sleep". Indeed, this bug could be reproduced by
hibernating the computer and then waking it up - it seemed to occur
pretty frequently, especially on battery, when the power budget is more
constrained, and thus the speed of the PC as well. Hopefully, this
commit and the previous one addresses this issue.
2022-08-04 23:57:33 +03:00
Valentin Radu
aeb8e54b58 Weather: Detect and break infinite loops on navigating to the error page 2022-08-04 23:56:55 +03:00
Valentin Radu
f7ffaca146 Version: 22000.708.47.2 2022-07-09 18:48:16 +03:00
Valentin Radu
81d804ab06 General: Fixed a system high DPI-related bug that caused wide Windows 10 taskbar buttons and incorrect (desktop) icon spacing 2022-07-09 18:48:00 +03:00
Valentin Radu
0ff6b1b365 Version: 22000.708.47.1 2022-07-04 23:41:52 +03:00
Valentin Radu
1cea91694f Symbols: Built-in support for OS build 22000.778 2022-07-04 23:41:31 +03:00
Valentin Radu
e988bbb08f General: Fixed a bug that had the Start button context menu / Win-X menu / power user menu fail to display and potentially lock the shell on OS builds 22000.778+ and 22621+ 2022-07-04 23:41:07 +03:00
Valentin Radu
d042e57ae4 Version: 22000.708.46.6 2022-06-13 14:11:17 +03:00
Valentin Radu
932f826ecb GUI: Fix a bug that had the window fail to display some sections under default settings 2022-06-13 14:09:31 +03:00
Valentin Radu
ae403668f6 Version: 22000.708.46.5 2022-06-07 19:36:58 +03:00
Valentin Radu
961cc11dda Weather: Fixed a bug that prevented the widget from working when WebView2 Runtime >= 102.0.1245.33 2022-06-07 19:35:41 +03:00
Valentin Radu
552a2e2040 General: Fixed a bug that could prevent Control Panel link redirection from working correctly 2022-06-07 19:34:38 +03:00
Valentin Radu
c1f9f49f37 Version: 22000.708.46.4 2022-05-28 13:47:34 +03:00
Valentin Radu
dbdc1b80f8 Weather: Show "Reload" link when data fails to load 2022-05-28 13:43:54 +03:00
Valentin Radu
5093e7de37 Weather: Fix and free event registration tokens 2022-05-28 13:41:05 +03:00
Valentin Radu
7deb97e510 sws: Sync with upstream
Changes in this version:
* [Store layout window flags in single variable](633fb2c51a)
* [Use external variable to detect if desktop is foreground](4b9ff84436)
* [Fix regression when detecting foreground window changes](8ab7a45162)
* [Draw DWM-like placeholder when window has zero width or height](764a2913b4)
* [Enforce a minimum size for a window rectangle](bc8b04e451)
2022-05-28 13:40:08 +03:00
Valentin Radu
9a7d2de43b Spotlight: Harden desktop window detection 2022-05-28 12:55:15 +03:00
Valentin Radu
9bf60309c0 General: Export variable that tells if desktop is in foreground 2022-05-28 12:54:36 +03:00
Valentin Radu
6bd514ba13 Version: 22000.708.46.3 2022-05-27 21:55:31 +03:00
Valentin Radu
c8bed99c1a Taskbar10: Option to hide the "Show desktop" button 2022-05-27 21:55:17 +03:00
Valentin Radu
434cdbdd46 Start10: Fixed a bug in Windows 10 where the Start menu was centered by default 2022-05-27 21:55:03 +03:00
Valentin Radu
a713d3964e Version: 22000.708.46.2 2022-05-27 21:53:57 +03:00
Valentin Radu
cf4700af6f sws: Fixed a bug that created unnecessary paint events when a window was flashing and the switcher is not shown 2022-05-27 21:52:42 +03:00
Valentin Radu
87a2638fb1 Spotlight: Fixed a bug that had Spotlight context menu entries appear in some menus other than the desktop context menu 2022-05-26 18:11:08 +03:00
Valentin Radu
26058f332d Version: 22000.708.46.1 2022-05-26 11:54:42 +03:00
Valentin Radu
b809e9e8ed GUI: Support switching more pages using the number row on the keyboard 2022-05-26 11:54:23 +03:00
Valentin Radu
7649805e18 GUI: Added support for hiding pages and page contents
Adds 2 new tags in the settings file that define the start and end of a
logical section, in order to enable the possibility of hiding parts of
the UI based on the current value of some setting:

    ;s Taskbar_Windows10Section IsOldTaskbar <- SECTION BEGIN
    ;g Taskbar_Windows10Section <- SECTION END

For s, the parameters represent these:

* Taskbar_Windows10Section = name of the current section
* IsOldTaskbar = if the check associated with this name (function call)
  returns FALSE, the section will not be displayed on the screen; that
  is, the code will skip drawing whatever is inside the 2 tags
2022-05-26 11:23:01 +03:00
Valentin Radu
d0ad8bd1e3 Spotlight: Added section, logic and configuration parameters
This commit includes support for the Windows spotlight feature from
22000.708+ OS builds.
Related to this, ExplorerPatcher now offers the following functionality:
* Hide the "Learn about this picture" icon
* Choose which items from the Windows spotlight icon context menu to
  have replicated in the desktop context menu (legacy context menu only)
* Set a schedule for "Switch to next picture"
* Manipulate the feature from the Properties UI, bypassing the desktop
  icon
2022-05-26 11:17:53 +03:00
Valentin Radu
13e1cc7a1b Symbols: Built-in support for OS build 22000.708 2022-05-26 11:09:37 +03:00
Valentin Radu
9e6d13a9f1 Version: 22000.675.45.2 2022-05-24 19:22:44 +03:00
Valentin Radu
d9004c1566 sws: Fixed a bug that caused the switcher to display a hung UWP app twice 2022-05-24 19:20:34 +03:00
Valentin Radu
7f76dca159 libvalinet: Fixed memory leak in toast.h 2022-05-23 21:47:48 +03:00
Valentin Radu
7596548350 Version: 22000.675.45.1 2022-05-17 22:39:37 +03:00
Valentin Radu
d350b0e178 sws: Fixed #1084 2022-05-17 22:33:30 +03:00
Valentin Radu
86739da8f3 Symbols: Built-in support for OS build 22000.675 2022-05-17 22:10:46 +03:00
Valentin Radu
d5f510f572 Version: 22000.613.44.2 2022-04-30 04:04:01 +03:00
Valentin Radu
cd2d5c66f9 Weather: Fixed a bug that could hang or lock the shutdown/restart
sign out process when using the weather widget

The hang was happening because the UI thread of explorer was hanging in
`dllmain!PeopleBand_DrawTextWithGlowHook` in a call to `AcquireSRWLockExclusive`
when the host process for the widget terminated (due to the system shutting
down - the case when hr is 0x800706ba aka "RPC server is unavailable"). When the
remote process dies, say we are in `dllmain!PeopleBand_DrawTextWithGlowHook`;
a call to some interface from it hangs for a bit, and during
that time the calling thread is able to continue its lifetime, during which a
subsequent call to `dllmain!PeopleBand_DrawTextWithGlowHook` is made (another
widget redraw is requested). As SRW locks do not really support recursion (calling
the same function from the same thread), this behavior is then expected and the
whole thing hangs, thus hanging the shutdown process (and explorer's UI thread in
turn). That's why when you clicked "Cancel" when the UI to close hung apps was
displayed at shutdown, you returned to a frozen desktop. Apparently, Windows lets
explorer hang indefinitely at shutdown, which made matters even worse.

The solution is two fold:
* Widget destruction is dispatched to the service thread. This is not strictly
necessary, but allows for better control of where the thing is destroyed from.
* Switched from SRW locks to a critical section, which is a per-thread lock. All
this has to do is make sure the program destroys the widget only when no other
routine (usually drawing stuff) uses it.

This should pretty much mitigate the issue, hopefully.
2022-04-30 04:03:30 +03:00
Valentin Radu
5e17f5a817 Weather: Fixed a bug that had "COM Surrogate" display as a running
app in Task Manager after the widget flyout was opened the first time
2022-04-30 03:35:13 +03:00
Valentin Radu
52e86d739a Version: 22000.613.44.1 2022-04-14 10:50:28 +03:00
Valentin Radu
d828fa2137 Other: Option to disable Win+F hotkey 2022-04-14 10:48:16 +03:00
Valentin Radu
448f3ef9b7 Symbols: Built-in support for 22000.613 2022-04-14 10:46:03 +03:00
Valentin-Gabriel Radu
78b8c6edd4
Taskbar10: Fixed a bug that prevented UndeadStartCorner from working properly when the taskbar alignment setting was never used 2022-03-30 22:26:00 +03:00
Valentin Radu
8461f3a33d Version: 22000.556.43.4 2022-03-28 23:35:20 +03:00
Valentin Radu
a2b28e5345 File Explorer: Option to enable legacy file transfer dialog 2022-03-28 23:34:04 +03:00
Valentin Radu
5da58c530f Version: 22000.556.43.3 2022-03-28 20:40:03 +03:00
Valentin Radu
d071ad0db6 File Explorer: Localization for classic drive groupings 2022-03-28 20:36:34 +03:00