[commit] r1976 - trunk/GME/GMEActiveBrowser

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Tue Jul 24 12:38:38 CDT 2012


Author: ksmyth
Date: Tue Jul 24 12:38:37 2012
New Revision: 1976

Log:
TreeBrowser: properly set custom tree icons on create/delete child

Modified:
   trunk/GME/GMEActiveBrowser/ActiveBrowserPropertyPage.cpp

Modified: trunk/GME/GMEActiveBrowser/ActiveBrowserPropertyPage.cpp
==============================================================================
--- trunk/GME/GMEActiveBrowser/ActiveBrowserPropertyPage.cpp	Mon Jul 23 13:24:35 2012	(r1975)
+++ trunk/GME/GMEActiveBrowser/ActiveBrowserPropertyPage.cpp	Tue Jul 24 12:38:37 2012	(r1976)
@@ -212,10 +212,10 @@
 		int nImage,nSelectedImage;
 		m_TreeAggregate.GetItemImage(pNMTreeView->itemNew.hItem,nImage,nSelectedImage);
 
-		if (nImage+ICON_NUMBER<8*ICON_NUMBER)
+		if (nImage<8*ICON_NUMBER)
 			m_TreeAggregate.SetItemImage(pNMTreeView->itemNew.hItem,nImage+ICON_NUMBER,nSelectedImage+ICON_NUMBER);
 		else
-			m_TreeAggregate.SetItemImage(pNMTreeView->itemNew.hItem, nImage+1, nSelectedImage+1);
+			m_TreeAggregate.SetItemImage(pNMTreeView->itemNew.hItem, (nImage & ~1) + 1, (nImage & ~1) + 1);
 
 	}
 	else // Collapsing
@@ -230,10 +230,10 @@
 		m_TreeAggregate.GetItemImage(pNMTreeView->itemNew.hItem,nImage,nSelectedImage);
 		
 		ASSERT(nImage-ICON_NUMBER>=0);
-		if (nImage+ICON_NUMBER<8*ICON_NUMBER)
+		if (nImage<8*ICON_NUMBER)
 			m_TreeAggregate.SetItemImage(pNMTreeView->itemNew.hItem,nImage-ICON_NUMBER,nSelectedImage-ICON_NUMBER);
 		else
-			m_TreeAggregate.SetItemImage(pNMTreeView->itemNew.hItem, nImage-1, nSelectedImage-1);
+			m_TreeAggregate.SetItemImage(pNMTreeView->itemNew.hItem, (nImage & ~1), (nImage & ~1));
 	}
 
 	
@@ -2036,23 +2036,29 @@
 				int nImage,nSelectedImage;
 				m_TreeAggregate.GetItemImage(hParentItem,nImage,nSelectedImage);				
 
-				if(tvItem.cChildren)
+				bool bIsExpanded =!!(m_TreeAggregate.GetItemState(hParentItem,TVIS_EXPANDED)&TVIS_EXPANDED);
+				if (nImage >= ICON_NUMBER * 8)
 				{
-					bool bIsExpanded=!!(m_TreeAggregate.GetItemState(hParentItem,TVIS_EXPANDED)&TVIS_EXPANDED);
-					if(bIsExpanded && nImage<ICON_NUMBER)
-					{
-						m_TreeAggregate.SetItemImage(hParentItem,nImage+ICON_NUMBER,nSelectedImage+ICON_NUMBER);
-					}
+					bIsExpanded &= !!tvItem.cChildren;
+					m_TreeAggregate.SetItemImage(hParentItem, (nImage & ~1) + (bIsExpanded ? 1 : 0), (nImage & ~1) + (bIsExpanded ? 1 : 0));
 				}
 				else
-				{	if(nImage>=ICON_NUMBER)
+				{
+					if(tvItem.cChildren)
 					{
-						m_TreeAggregate.SetItemImage(hParentItem,nImage-ICON_NUMBER,nSelectedImage-ICON_NUMBER);
+						if(bIsExpanded && nImage<ICON_NUMBER)
+						{
+							m_TreeAggregate.SetItemImage(hParentItem,nImage+ICON_NUMBER,nSelectedImage+ICON_NUMBER);
+						}
+					}
+					else
+					{	if (nImage>=ICON_NUMBER)
+						{
+							m_TreeAggregate.SetItemImage(hParentItem,nImage-ICON_NUMBER,nSelectedImage-ICON_NUMBER);
+						}
 					}
-
 				}
 
-
 				m_TreeAggregate.SetItem(&tvItem);
 			}
 		}
@@ -2092,19 +2098,27 @@
 				int nImage,nSelectedImage;
 				m_TreeAggregate.GetItemImage(hParentItem,nImage,nSelectedImage);
 
-				if(tvItem.cChildren)
+				bool bIsExpanded = !!(m_TreeAggregate.GetItemState(hParentItem,TVIS_EXPANDED)&TVIS_EXPANDED);
+				if (nImage >= ICON_NUMBER * 8)
 				{
-					bool bIsExpanded=!!(m_TreeAggregate.GetItemState(hParentItem,TVIS_EXPANDED)&TVIS_EXPANDED);
-					if(bIsExpanded && nImage<ICON_NUMBER)
-					{
-						m_TreeAggregate.SetItemImage(hParentItem,nImage+ICON_NUMBER,nSelectedImage+ICON_NUMBER);
-					}
+					bIsExpanded &= !!tvItem.cChildren;
+					m_TreeAggregate.SetItemImage(hParentItem, (nImage & ~1) + (bIsExpanded ? 1 : 0), (nImage & ~1) + (bIsExpanded ? 1 : 0));
 				}
 				else
-				{	
-					if(nImage>=ICON_NUMBER)
+				{
+					if(tvItem.cChildren)
 					{
-						m_TreeAggregate.SetItemImage(hParentItem,nImage-ICON_NUMBER,nSelectedImage-ICON_NUMBER);
+						if(bIsExpanded && nImage<ICON_NUMBER)
+						{
+							m_TreeAggregate.SetItemImage(hParentItem,nImage+ICON_NUMBER,nSelectedImage+ICON_NUMBER);
+						}
+					}
+					else
+					{	
+						if(nImage>=ICON_NUMBER)
+						{
+							m_TreeAggregate.SetItemImage(hParentItem,nImage-ICON_NUMBER,nSelectedImage-ICON_NUMBER);
+						}
 					}
 				}
 
@@ -2137,19 +2151,26 @@
 				int nImage,nSelectedImage;
 				m_TreeAggregate.GetItemImage(hParentItem,nImage,nSelectedImage);				
 
-				if(tvItem.cChildren)
+				if (nImage >= ICON_NUMBER * 8)
 				{
-					if(bIsExpanded && nImage<ICON_NUMBER)
-					{
-						m_TreeAggregate.SetItemImage(hParentItem,nImage+ICON_NUMBER,nSelectedImage+ICON_NUMBER);
-					}
+					m_TreeAggregate.SetItemImage(hParentItem, (nImage & ~1) + (bIsExpanded ? 1 : 0), (nImage & ~1) + (bIsExpanded ? 1 : 0));
 				}
 				else
-				{	if(nImage>=ICON_NUMBER)
+				{
+					if(tvItem.cChildren)
 					{
-						m_TreeAggregate.SetItemImage(hParentItem,nImage-ICON_NUMBER,nSelectedImage-ICON_NUMBER);
+						if(bIsExpanded && nImage<ICON_NUMBER)
+						{
+							m_TreeAggregate.SetItemImage(hParentItem,nImage+ICON_NUMBER,nSelectedImage+ICON_NUMBER);
+						}
 					}
+					else
+					{	if(nImage>=ICON_NUMBER)
+						{
+							m_TreeAggregate.SetItemImage(hParentItem,nImage-ICON_NUMBER,nSelectedImage-ICON_NUMBER);
+						}
 
+					}
 				}
 
 				m_TreeAggregate.SetItem(&tvItem);
@@ -2184,15 +2205,13 @@
 					int nImage,nSelectedImage;
 					m_TreeAggregate.GetItemImage(hParentItem,nImage,nSelectedImage);				
 
-					// NOTE: the if branch is totally useless, since bIsExpanded is false
-					if(tvItem.cChildren)
+					if (nImage >= ICON_NUMBER * 8)
 					{
-						if(bIsExpanded && nImage<ICON_NUMBER) // change to opened icon
-						{
-							m_TreeAggregate.SetItemImage(hParentItem,nImage+ICON_NUMBER,nSelectedImage+ICON_NUMBER);
-						}
+						bIsExpanded &= !!tvItem.cChildren;
+						m_TreeAggregate.SetItemImage(hParentItem, (nImage & ~1) + (bIsExpanded ? 1 : 0), (nImage & ~1) + (bIsExpanded ? 1 : 0));
 					}
-					else // if no children then if opened icon used previously, change it to the closed icon
+					else
+					// if no children then if opened icon used previously, change it to the closed icon
 					{	
 						if(nImage>=ICON_NUMBER)
 						{


More information about the gme-commit mailing list