Overlay icons are not updated automatically

Description:
(Tortoise Git) overlay icons are not updated automatically while Directory Opus correctly detects content changes.

This issue is probably not limited to Tortoise Git, but might affect any shell extension providing overlay icons.

I have not tried the TortoiseSVN status column (as mentioned by FAQ 'Tortoise CVS / SVN icon overlays don't show'), which seems not to be available for TortoiseGit (grayed out in the settings panel).

Steps to reproduce:

  1. Create a git repository on a local drive and commit some empty file (demo.txt)
  2. Press F5 for the "unchanged" overlay icon (white check mark on green circle) to appear
  3. Add some content to the file (e.g. "abcde")
  4. Directory Opus picks up the changes and the displayed file size increases
    5a. Expected behavior: Directory Opus also updates the overlay icon - it should have changed to "changed" (white exclamation mark on red circle)
    5b. Actual behavior: The overlay icon is still the "unchanged" one - need to press F5 for Directory Opus to refresh the icon

Notes:

  • In step (4) Directory Opus detects that the file content has changed - hence I expect it to update the overlay icon (5a), too
  • In step (2) I'd like Directory Opus to update the overlay icon automatically, too - just like Windows Explorer does. Nevertheless, I think this is some sort of "extra feature", since in this case the overlay icon changes without the file content changing, too.

Thank you for your help!

If Tortoise Git generates the appropriate shell change events for the files/folders then the icons should be updated. (Or at least re-requested; the result is again up to Tortoise Git, which may for example be caching the icon states. You can tell if that's the problem by using F5 to refresh the display. If the old overlays remain then there's a caching problem somewhere.)

In my experience, the icon update events are not always generated reliably by similar shell extensions, but when they are Opus should react to them and does here at least.

Make sure the whole Opus process is not UAC elevated as that would block the change notifications from reaching the process. (Similarly, make sure whatever is generating them is not elevated either, else non-elevated processes cannot have a two-way conversation with it.)

Here's some more context:

  • Directory Opus is not UAC elevated
  • The icons are updated correctly when pressing F5
  • Windows Explorer updates the overlay icons immediately, so I assume the change notifications to work properly

If you want to diagnose what's happening, turn on Preferences / Miscellaneous / Advanced: shellchange_debug and then run DebugView and make some changes that should affect the icons.

You should see some "dopus: ShellChange: ..." lines in DebugView if change events are being generated for the files.

(You may also see random things from other programs/components, and the OS itself, where they've been left incorrectly outputting debug data in release builds, unfortunately. Not all the information you see in DebugView will come from Opus.)

For example, this video shows the notifications are received, with correct paths and dwEvent=2000 causing the overlays to change, when doing similar with Tortoise SVN:

At first I didn't see any ShellChange notifications. In order to reproduce your video, I installed Tortoise SVN. Now there are notifications for Tortoise Git as well as Tortoise SVN! The folder view is now updated as expected. I even uninstalled Tortoise SVN again... it still works!

At the end there have been two changes:

  • Tortoise SVN has been installed temporarily
  • The sytem has rebooted (...but this has happened before...)

Thanks again!