Shell Extension¶
The Shell Extension is similar to the TortoiseSVN and TortoiseGit shell extensions.
Overlays limitation¶
Pithos Client uses TortoiseExtensions to overcome the 15 overlay icons limitation of Windows. Windows allows only 15 overlay icons and some of these are used by the OS itself. Overlay icons are defined in the Registry. While more than 15 icons can be defined, only the first 15 icons can be active at a time. To address this, the Tortoise clients use a common TortoiseExtensions library and set of icons to display file status (Modified, Normal, Conflict, etc).
Pithos Client also uses TortoiseExtensions, with the addition of the "sync" icon, to display files that are being synchronized.
File Status¶
The Shell Extensions retrieves the file status from the Client Core. The core stores the file status in memory and/or disk.
Status Change Notification¶
When a change of status is detected Windows Explorer must be notified with the SHChangeNotify Win32 API call to refresh the overlays. The Shell Extension will receive the notification and call the Shell Extension for updated overlays.
Gotchas¶
x64 bit¶
The Shell Exxtensions must be compiled as "Any CPU", otherwise they will not be loaded by Windows Explorer. Specifically, Windows Explorer only loads DLLs compiled for the same target as the OS.
Registration¶
The client must also be compiled as "Any CPU" as the client also registers the shell extensions. Running a 32bit client on a 64bit OS registers the extensions under the wrong Registration key.