private void UpdateImageLists(bool bForce) { if(!bForce) { if(!m_docMgr.ActiveDatabase.UINeedsIconUpdate) return; m_docMgr.ActiveDatabase.UINeedsIconUpdate = false; } int cx = DpiUtil.ScaleIntX(16); int cy = DpiUtil.ScaleIntY(16); // // foreach(Image img in m_ilClientIcons.Images) imgList.Images.Add(img); // List<Image> lStdImages = new List<Image>(); // foreach(Image imgStd in m_ilClientIcons.Images) // { // // Plugins may supply DPI-scaled images by changing m_ilClientIcons // bool bStd = (imgStd.Height == 16); // lStdImages.Add(bStd ? DpiUtil.ScaleImage(imgStd, false) : imgStd); // } if(m_lStdClientImages == null) { ImageArchive arStd = new ImageArchive(); arStd.Load(DpiUtil.ScalingRequired ? Properties.Resources.Images_Client_HighRes : Properties.Resources.Images_Client_16); m_lStdClientImages = arStd.GetImages(cx, cy, true); } // ImageList imgListCustom = UIUtil.BuildImageList( // m_docMgr.ActiveDatabase.CustomIcons, cx, cy); // foreach(Image imgCustom in imgListCustom.Images) // imgList.Images.Add(imgCustom); // Breaks alpha partially List<Image> lCustom = UIUtil.BuildImageListEx( m_docMgr.ActiveDatabase.CustomIcons, cx, cy); List<Image> lAll = new List<Image>(m_lStdClientImages); lAll.AddRange(lCustom); ImageList imgList = new ImageList(); imgList.ImageSize = new Size(cx, cy); imgList.ColorDepth = ColorDepth.Depth32Bit; imgList.Images.AddRange(lAll.ToArray()); Debug.Assert(imgList.Images.Count == ((int)PwIcon.Count + lCustom.Count)); m_ilCurrentIcons = imgList; if(UIUtil.VistaStyleListsSupported) { m_tvGroups.ImageList = imgList; m_lvEntries.SmallImageList = imgList; } else { ImageList imgSafe = UIUtil.ConvertImageList24(lAll, cx, cy, AppDefs.ColorControlNormal); m_tvGroups.ImageList = imgSafe; // TreeView doesn't fully support alpha on < Vista m_lvEntries.SmallImageList = ((WinUtil.IsAtLeastWindowsVista || WinUtil.IsWindowsXP) ? imgList : imgSafe); } }