[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Not all overlays appear on Windows 7 with TSVN 1.6.7+

From: Valik <vampire.valik_at_gmail.com>
Date: Mon, 8 Mar 2010 11:36:01 -0800 (PST)

On Mar 8, 6:35 am, Simon Large <simon.tortoise..._at_googlemail.com>
> [snip unreadable content]

I think calling it unreadable is a bit of a stretch but whatever.
Here's the plain-text version:

I previously posted this issue on the users group but it went
unanswered: http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2448226

To recap, the issue is TSVN 1.6.7 and later (nightlies included) do
not show the Ignored and Unversioned overlays on Windows 7 (32-bit).
TSVN 1.6.6 works just fine. I checked the revision range between TSVN
1.6.6. and 1.6.7 and found a few commits that modify the code related
to the overlay count. I think the code is wrong and is needlessly
limiting the icons when there should be more than enough available
overlay slots.

A quick glance at my ShellIconOverlayIdentifiers key and a bit of
basic math shows:

    * 1-9 TortoiseSVN stuff
    * EnhanceStorageShell
    * Offline Files
    * SharingPrivate

That's a total of 12 overlays registered. When you add in the
shortcut arrow and UAC shield overlays that brings the total up to
14. The TSVN documentation claims Windows has space for 15 icons. So
on Windows 7 with no other overlay tools installed I should be seeing
all 9 TSVN overlays and 5 pre-installed Windows overlays with room for
1 more overlay. However, TSVN itself is coded to check and drop the
Unversioned overlay if there are more than 10 handlers in the
registry. It drops the Ignored overlay if there are 11 handlers in
the registry. Obviously the 12 that I have registered are causing
these two to be dropped.

The problem, I think, can be found in this chart from IconOverlay.cpp:
    // * shortcut (arrow) (not listed)
    // * shared (hand) (listed)
    // * UAC (shield) (not listed)
    // * Offline (not listed)

There are a few things wrong with the chart. First, Offline Files is
listed under ShellIconOverlayIdentifiers on Windows XP and Windows 7
(the chart claims it is not listed). Second, the Shared hand icon is
not listed under Windows XP (your chart says that it is listed). More
importantly, the shared hand icon isn't present at all on Windows 7 so
it should not be counted for Windows 7. As far as I can ascertain
both Windows 7 and Windows XP contain only two "secret" overlays.
Both contain the shortcut arrow overlay and Windows XP contains the
Shared Hand where-as Windows 7 contains the UAC shield. I think for
maximum clarity your chart should be this:

    // The following overlays must be accounted for but are not listed
under ShellIconOverlayIdentifiers:
    // * Shortcut arrow
    // * Shared Hand (Windows XP only)
    // * UAC shield (Windows Vista+ only)

I think your intent is to use no more than 14 overlays between what
Windows has pre-loaded and the 9 for TSVN. If that is the case, then
it's simply a matter of changing nOverlayLimit to 12 for Windows 7 and
Windows XP. If each version of Windows only contains 2 "secret"
overlays then there are 13 slots available under
ShellIconOverlayIdentifiers. Assuming the intent is to leave 1 unused
slot then that leaves 15 - 2 (secret) - 1 (unused) = 12 overlays TSVN
can use. The pre-registered overlays should not be factored into this
calculation because GetInstalledOverlays() will count them. On
Windows 7 GetInstalledOverlays() should return 12 on a virgin install
with just TSVN installed. On Windows XP it should return 10. If
nOverlayLimit is adjusted to 12 for both Windows XP and Windows 7 then
all icons should show up on virgin installations containing nothing
but TSVN.

All my comments are based upon what I know and understand about
Windows XP and Windows 7. I do not know about Windows Vista (I
suspect it contains 3 "secret" overlays, shortcuts, UAC and shared
hand). I have checked the ShellIconOverlayIdentifiers key on both
Windows 7 32-bit and Windows XP 32-bit and have performed my
calculations based on what I found there. My information about the
"secret" non-listed overlays comes from experience, TSVN documentation
and the TSVN source code (the chart above). Wikipedia mentions (and
more importantly cites) the shared hand icon removal from Windows 7:


To unsubscribe from this discussion, e-mail: [dev-unsubscribe_at_tortoisesvn.tigris.org].
Received on 2010-03-08 20:39:42 CET

This is an archived mail posted to the TortoiseSVN Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.