Solution Navigator - Icons

Aug 30, 2010 at 1:56 AM

I have recently been using the Solution Navigator from the Productivity Power Tools. In the Solution Explorer the status icons that I would anticipate and expect show next to the files - however in the Solution Navigator the yellow + is displayed next to each file even though the file does not have any uncommitted changes and was not recently added. When a file has uncommitted changes no icon is shown in the Solution Navigator.

Has anyone else seen this behaviour? It is not a huge issue - but the Solution Navigator is nice and I am curious what issue is making the seemingly incorrect icons display since the Solution Explorer shows the correct icons.

Thanks for any information,

Charles

Aug 30, 2010 at 4:38 AM

Yup. Seeing the same thing. Not losing any sleep over it. No doubt the discrepancy lies in the way the Solution Navigator probably generates its tree view.

It is discussed on their site (http://blogs.msdn.com/b/visualstudio/archive/2010/07/20/solution-navigator-blog-post.aspx) where they say "Unfortunately in cases where a provider overrides the default icons in the Solution Explorer, an update would be required from the source control provider rather than the Solution Navigator Team." (25th July).

& .. "We have added Ankh support. This will likely be in a future release of the power tool pack. Keep a look out." (16th Aug). It may be worth contacting them about it. I assume if one Tortoise client is fixed, they're all fixed? 2nd assumption: VHG uses Tortoise overlays internally.

Coordinator
Sep 4, 2010 at 8:44 AM

The Overlay Icon support I used is very standard. I implemented the interfaces  IVsSccGlyphs and IVsSccManager2.

namespace Microsoft.VisualStudio.Shell.Interop
{
    // Summary:
    //     Allows full customization of source control glyphs. (4 custom glyphs only)
    public interface IVsSccGlyphs
    {
        // Summary:
        //     Called by the IDE to get a custom glyph image list for source control status.
        //
        // Parameters:
        //   BaseIndex:
        //     [in] Value to add when returning glyph index.
        //
        //   pdwImageListHandle:
        //     [out] Handle to the custom image list.
        //
        // Returns:
        //     If the method succeeds, it returns Microsoft.VisualStudio.VSConstants.S_OK.
        //     If it fails, it returns an error code.
        int GetCustomGlyphList(uint BaseIndex, out uint pdwImageListHandle);
    }
}

namespace Microsoft.VisualStudio.Shell.Interop
{
    public interface IVsSccManager2 // Base source control functionality interface
    {
        int BrowseForProject(out string pbstrDirectory, out int pfOK);
        int CancelAfterBrowseForProject();
        /// Provide source control icons for the specified files and returns scc status of files
        int GetSccGlyph(int cFiles, string[] rgpszFullPaths, VsStateIcon[] rgsiGlyphs, uint[] rgdwSccStatus);
        int GetSccGlyphFromStatus(uint dwSccStatus, VsStateIcon[] psiGlyph);
        int IsInstalled(out int pbInstalled);
        int RegisterSccProject(IVsSccProject2 pscp2Project, string pszSccProjectName, string pszSccAuxPath, string pszSccLocalPath, string pszProvider);
        int UnregisterSccProject(IVsSccProject2 pscp2Project);
    }
}

Regards Bernd