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

Not all overlays appear on Windows 7 with TSVN 1.6.7+

From: Valik <vampire.valik_at_gmail.com>
Date: Mon, 08 Mar 2010 04:54:04 -0500

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<body bgcolor="#ffffff" text="#000000">
I previously posted this issue on the users group but it went
<a class="moz-txt-link-freetext" href="http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&amp;dsMessageId=2448226">http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&amp;dsMessageId=2448226</a><br>
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).&nbsp; TSVN
1.6.6 works just fine.&nbsp; 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.&nbsp; I think the code is wrong and is needlessly
limiting the icons when there should be more than enough available
overlay slots.<br>
A quick glance at my ShellIconOverlayIdentifiers key and a bit of basic
math shows:<br>
  <li>1-9 TortoiseSVN stuff</li>
  <li>Offline Files</li>
That's a total of 12 overlays registered.&nbsp; When you add in the shortcut
arrow and UAC shield overlays that brings the total up to 14.&nbsp; The TSVN
documentation claims Windows has space for 15 icons.&nbsp; 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.&nbsp; However, TSVN itself is coded to check and drop the
Unversioned overlay if there are more than 10 handlers in the
registry.&nbsp; It drops the Ignored overlay if there are 11 handlers in the
registry.&nbsp; Obviously the 12 that I have registered are causing these
two to be dropped.&nbsp; <br>
The problem, I think, can be found in this chart from IconOverlay.cpp:<br>
&nbsp;&nbsp;&nbsp; // * shortcut (arrow) (not listed)<br>
&nbsp;&nbsp;&nbsp; // * shared (hand) (listed)<br>
&nbsp;&nbsp;&nbsp; // * UAC (shield) (not listed)<br>
&nbsp;&nbsp;&nbsp; // * Offline (not listed)<br>
There are a few things wrong with the chart.&nbsp; First, Offline Files is
listed under ShellIconOverlayIdentifiers on Windows XP and Windows 7
(the chart claims it is not listed).&nbsp; Second, the Shared hand icon is
not listed under Windows XP (your chart says that it is listed).&nbsp; More
importantly, the shared hand icon isn't present at all on Windows 7 so
it should not be counted for Windows 7.&nbsp; As far as I can ascertain both
Windows 7 and Windows XP contain only two "secret" overlays.&nbsp; Both
contain the shortcut arrow overlay and Windows XP contains the Shared
Hand where-as Windows 7 contains the UAC shield.&nbsp; I think for maximum
clarity your chart should be this:<br>
&nbsp;&nbsp;&nbsp; // The following overlays must be accounted for but are not listed
under ShellIconOverlayIdentifiers:<br>
&nbsp;&nbsp;&nbsp; // * Shortcut arrow<br>
&nbsp;&nbsp;&nbsp; // * Shared Hand (Windows XP only)<br>
&nbsp;&nbsp;&nbsp; // * UAC shield (Windows Vista+ only)<br>
I think your intent is to use no more than 14 overlays between what
Windows has pre-loaded and the 9 for TSVN.&nbsp; If that is the case, then
it's simply a matter of changing nOverlayLimit to 12 for Windows 7 and
Windows XP.&nbsp; If each version of Windows only contains 2 "secret"
overlays then there are 13 slots available under
ShellIconOverlayIdentifiers.&nbsp; Assuming the intent is to leave 1 unused
slot then that leaves 15 - 2 (secret) - 1 (unused) = 12 overlays TSVN
can use.&nbsp; The pre-registered overlays should not be factored into this
calculation because GetInstalledOverlays() will count them.&nbsp; On Windows
7 GetInstalledOverlays() should return 12 on a virgin install with just
TSVN installed.&nbsp; On Windows XP it should return 10.&nbsp; 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.<br>
All my comments are based upon what I know and understand about Windows
XP and Windows 7.&nbsp; I do not know about Windows Vista (I suspect it
contains 3 "secret" overlays, shortcuts, UAC and shared hand).&nbsp; 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.&nbsp; My information about the "secret" non-listed overlays
comes from experience, TSVN documentation and the TSVN source code (the
chart above).&nbsp; Wikipedia mentions (and more importantly cites) the
shared hand icon removal from Windows 7:
<a class="moz-txt-link-freetext" href="http://en.wikipedia.org/wiki/Features_removed_from_Windows_7">http://en.wikipedia.org/wiki/Features_removed_from_Windows_7</a><br>
<pre class="moz-signature" cols="72">--
- Valik</pre>


To unsubscribe from this discussion, e-mail: [dev-unsubscribe_at_tortoisesvn.tigris.org].
Received on 2010-03-08 10:58:17 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.