private bool ParentViewGUI(ParentViewState pvState, ParentViewState anotherPvState, ref bool hasSelection)
 {
   bool flag1 = false;
   EditorGUIUtility.SetIconSize(this.iconSize);
   ListViewState lv = pvState.lv;
   bool shift = Event.current.shift;
   bool actionKey = EditorGUI.actionKey;
   int row = lv.row;
   int folder1 = -1;
   int file = -1;
   bool flag2 = false;
   foreach (ListViewElement listViewElement in ListViewGUILayout.ListView(lv, ListViewOptions.wantsToStartCustomDrag | ListViewOptions.wantsToAcceptCustomDrag, this.dragTitle, GUIStyle.none, new GUILayoutOption[0]))
   {
     if (folder1 == -1 && !pvState.IndexToFolderAndFile(listViewElement.row, ref folder1, ref file))
     {
       flag1 = true;
       break;
     }
     if (GUIUtility.keyboardControl == lv.ID && Event.current.type == EventType.KeyDown && actionKey)
       Event.current.Use();
     ParentViewFolder folder2 = pvState.folders[folder1];
     if (pvState.selectedItems[listViewElement.row] && Event.current.type == EventType.Repaint)
       ASCommitWindow.constants.entrySelected.Draw(listViewElement.position, false, false, false, false);
     if (ListViewGUILayout.HasMouseUp(listViewElement.position))
     {
       if (!shift && !actionKey)
         flag2 |= ListViewGUILayout.MultiSelection(row, pvState.lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
     }
     else if (ListViewGUILayout.HasMouseDown(listViewElement.position))
     {
       if (Event.current.clickCount == 2)
       {
         this.DoShowMyDiff(false);
         GUIUtility.ExitGUI();
       }
       else
       {
         if (!pvState.selectedItems[listViewElement.row] || shift || actionKey)
           flag2 |= ListViewGUILayout.MultiSelection(row, listViewElement.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
         pvState.selectedFile = file;
         pvState.selectedFolder = folder1;
         lv.row = listViewElement.row;
       }
     }
     else if (ListViewGUILayout.HasMouseDown(listViewElement.position, 1))
     {
       if (!pvState.selectedItems[listViewElement.row])
       {
         flag2 = true;
         pvState.ClearSelection();
         pvState.selectedItems[listViewElement.row] = true;
         pvState.selectedFile = file;
         pvState.selectedFolder = folder1;
         lv.row = listViewElement.row;
       }
       this.dropDownMenuItems[0] = pvState != this.pv1state ? "<<<" : ">>>";
       GUIUtility.hotControl = 0;
       EditorUtility.DisplayCustomMenu(new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 1f, 1f), this.dropDownMenuItems, (int[]) null, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), (object) null);
       Event.current.Use();
     }
     ChangeFlags changeFlags;
     if (file != -1)
     {
       Texture2D texture2D = AssetDatabase.GetCachedIcon(folder2.name + "/" + folder2.files[file].name) as Texture2D;
       if ((UnityEngine.Object) texture2D == (UnityEngine.Object) null)
         texture2D = InternalEditorUtility.GetIconForFile(folder2.files[file].name);
       GUILayout.Label(new GUIContent(folder2.files[file].name, (Texture) texture2D), ASCommitWindow.constants.element, new GUILayoutOption[0]);
       changeFlags = folder2.files[file].changeFlags;
     }
     else
     {
       GUILayout.Label(folder2.name, ASCommitWindow.constants.header, new GUILayoutOption[0]);
       changeFlags = folder2.changeFlags;
     }
     GUIContent content = (GUIContent) null;
     if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Undeleted) || ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Created))
       content = ASMainWindow.constants.badgeNew;
     else if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Deleted))
       content = ASMainWindow.constants.badgeDelete;
     else if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Renamed) || ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Moved))
       content = ASMainWindow.constants.badgeMove;
     if (content != null && Event.current.type == EventType.Repaint)
     {
       Rect position = new Rect((float) ((double) listViewElement.position.x + (double) listViewElement.position.width - (double) content.image.width - 5.0), listViewElement.position.y + listViewElement.position.height / 2f - (float) (content.image.height / 2), (float) content.image.width, (float) content.image.height);
       EditorGUIUtility.SetIconSize(Vector2.zero);
       GUIStyle.none.Draw(position, content, false, false, false, false);
       EditorGUIUtility.SetIconSize(this.iconSize);
     }
     pvState.NextFileFolder(ref folder1, ref file);
   }
   if (!flag1)
   {
     if (GUIUtility.keyboardControl == lv.ID)
     {
       if (Event.current.type == EventType.ValidateCommand && Event.current.commandName == "SelectAll")
         Event.current.Use();
       else if (Event.current.type == EventType.ExecuteCommand && Event.current.commandName == "SelectAll")
       {
         for (int index = 0; index < pvState.selectedItems.Length; ++index)
           pvState.selectedItems[index] = true;
         flag2 = true;
         Event.current.Use();
       }
     }
     if (lv.customDraggedFromID != 0 && lv.customDraggedFromID == anotherPvState.lv.ID)
       this.DoTransferAll(anotherPvState, pvState, pvState.selectedFolder, pvState.selectedFile);
     if (GUIUtility.keyboardControl == lv.ID && !actionKey)
     {
       if (lv.selectionChanged)
       {
         flag2 |= ListViewGUILayout.MultiSelection(row, lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
         if (!pvState.IndexToFolderAndFile(lv.row, ref pvState.selectedFolder, ref pvState.selectedFile))
           flag1 = true;
       }
       else if (pvState.selectedFolder != -1 && Event.current.type == EventType.KeyDown && (GUIUtility.keyboardControl == lv.ID && Event.current.keyCode == KeyCode.Return))
       {
         this.DoTransferAll(pvState, anotherPvState, pvState.selectedFolder, pvState.selectedFile);
         ListViewGUILayout.MultiSelection(row, lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
         pvState.IndexToFolderAndFile(lv.row, ref pvState.selectedFolder, ref pvState.selectedFile);
         Event.current.Use();
         flag1 = true;
       }
     }
     if (lv.selectionChanged || flag2)
     {
       if (pvState.IndexToFolderAndFile(lv.row, ref folder1, ref file))
         this.dragTitle = file != -1 ? pvState.folders[folder1].files[file].name : pvState.folders[folder1].name;
       anotherPvState.ClearSelection();
       anotherPvState.lv.row = -1;
       anotherPvState.selectedFile = -1;
       anotherPvState.selectedFolder = -1;
       this.MySelectionToGlobalSelection();
     }
   }
   EditorGUIUtility.SetIconSize(Vector2.zero);
   return !flag1;
 }
		private bool ParentViewGUI(ParentViewState pvState, ParentViewState anotherPvState, ref bool hasSelection)
		{
			bool flag = false;
			EditorGUIUtility.SetIconSize(this.iconSize);
			ListViewState lv = pvState.lv;
			bool shift = Event.current.shift;
			bool actionKey = EditorGUI.actionKey;
			int row = lv.row;
			int num = -1;
			int num2 = -1;
			bool flag2 = false;
			foreach (ListViewElement listViewElement in ListViewGUILayout.ListView(lv, (ListViewOptions)12, this.dragTitle, GUIStyle.none, new GUILayoutOption[0]))
			{
				if (num == -1 && !pvState.IndexToFolderAndFile(listViewElement.row, ref num, ref num2))
				{
					flag = true;
					break;
				}
				if (GUIUtility.keyboardControl == lv.ID && Event.current.type == EventType.KeyDown && actionKey)
				{
					Event.current.Use();
				}
				ParentViewFolder parentViewFolder = pvState.folders[num];
				if (pvState.selectedItems[listViewElement.row] && Event.current.type == EventType.Repaint)
				{
					ASCommitWindow.constants.entrySelected.Draw(listViewElement.position, false, false, false, false);
				}
				if (ListViewGUILayout.HasMouseUp(listViewElement.position))
				{
					if (!shift && !actionKey)
					{
						flag2 |= ListViewGUILayout.MultiSelection(row, pvState.lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
					}
				}
				else
				{
					if (ListViewGUILayout.HasMouseDown(listViewElement.position))
					{
						if (Event.current.clickCount == 2)
						{
							this.DoShowMyDiff(false);
							GUIUtility.ExitGUI();
						}
						else
						{
							if (!pvState.selectedItems[listViewElement.row] || shift || actionKey)
							{
								flag2 |= ListViewGUILayout.MultiSelection(row, listViewElement.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
							}
							pvState.selectedFile = num2;
							pvState.selectedFolder = num;
							lv.row = listViewElement.row;
						}
					}
					else
					{
						if (ListViewGUILayout.HasMouseDown(listViewElement.position, 1))
						{
							if (!pvState.selectedItems[listViewElement.row])
							{
								flag2 = true;
								pvState.ClearSelection();
								pvState.selectedItems[listViewElement.row] = true;
								pvState.selectedFile = num2;
								pvState.selectedFolder = num;
								lv.row = listViewElement.row;
							}
							this.dropDownMenuItems[0] = ((pvState != this.pv1state) ? "<<<" : ">>>");
							GUIUtility.hotControl = 0;
							Rect position = new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 1f, 1f);
							EditorUtility.DisplayCustomMenu(position, this.dropDownMenuItems, null, new EditorUtility.SelectMenuItemFunction(this.ContextMenuClick), null);
							Event.current.Use();
						}
					}
				}
				ChangeFlags changeFlags;
				if (num2 != -1)
				{
					Texture2D texture2D = AssetDatabase.GetCachedIcon(parentViewFolder.name + "/" + parentViewFolder.files[num2].name) as Texture2D;
					if (texture2D == null)
					{
						texture2D = InternalEditorUtility.GetIconForFile(parentViewFolder.files[num2].name);
					}
					GUILayout.Label(new GUIContent(parentViewFolder.files[num2].name, texture2D), ASCommitWindow.constants.element, new GUILayoutOption[0]);
					changeFlags = parentViewFolder.files[num2].changeFlags;
				}
				else
				{
					GUILayout.Label(parentViewFolder.name, ASCommitWindow.constants.header, new GUILayoutOption[0]);
					changeFlags = parentViewFolder.changeFlags;
				}
				GUIContent gUIContent = null;
				if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Undeleted) || ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Created))
				{
					gUIContent = ASMainWindow.constants.badgeNew;
				}
				else
				{
					if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Deleted))
					{
						gUIContent = ASMainWindow.constants.badgeDelete;
					}
					else
					{
						if (ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Renamed) || ASCommitWindow.HasFlag(changeFlags, ChangeFlags.Moved))
						{
							gUIContent = ASMainWindow.constants.badgeMove;
						}
					}
				}
				if (gUIContent != null && Event.current.type == EventType.Repaint)
				{
					Rect position2 = new Rect(listViewElement.position.x + listViewElement.position.width - (float)gUIContent.image.width - 5f, listViewElement.position.y + listViewElement.position.height / 2f - (float)(gUIContent.image.height / 2), (float)gUIContent.image.width, (float)gUIContent.image.height);
					EditorGUIUtility.SetIconSize(Vector2.zero);
					GUIStyle.none.Draw(position2, gUIContent, false, false, false, false);
					EditorGUIUtility.SetIconSize(this.iconSize);
				}
				pvState.NextFileFolder(ref num, ref num2);
			}
			if (!flag)
			{
				if (GUIUtility.keyboardControl == lv.ID)
				{
					if (Event.current.type == EventType.ValidateCommand && Event.current.commandName == "SelectAll")
					{
						Event.current.Use();
					}
					else
					{
						if (Event.current.type == EventType.ExecuteCommand && Event.current.commandName == "SelectAll")
						{
							for (int i = 0; i < pvState.selectedItems.Length; i++)
							{
								pvState.selectedItems[i] = true;
							}
							flag2 = true;
							Event.current.Use();
						}
					}
				}
				if (lv.customDraggedFromID != 0 && lv.customDraggedFromID == anotherPvState.lv.ID)
				{
					this.DoTransferAll(anotherPvState, pvState, pvState.selectedFolder, pvState.selectedFile);
				}
				if (GUIUtility.keyboardControl == lv.ID && !actionKey)
				{
					if (lv.selectionChanged)
					{
						flag2 |= ListViewGUILayout.MultiSelection(row, lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
						if (!pvState.IndexToFolderAndFile(lv.row, ref pvState.selectedFolder, ref pvState.selectedFile))
						{
							flag = true;
						}
					}
					else
					{
						if (pvState.selectedFolder != -1 && Event.current.type == EventType.KeyDown && GUIUtility.keyboardControl == lv.ID && Event.current.keyCode == KeyCode.Return)
						{
							this.DoTransferAll(pvState, anotherPvState, pvState.selectedFolder, pvState.selectedFile);
							ListViewGUILayout.MultiSelection(row, lv.row, ref pvState.initialSelectedItem, ref pvState.selectedItems);
							pvState.IndexToFolderAndFile(lv.row, ref pvState.selectedFolder, ref pvState.selectedFile);
							Event.current.Use();
							flag = true;
						}
					}
				}
				if (lv.selectionChanged || flag2)
				{
					if (pvState.IndexToFolderAndFile(lv.row, ref num, ref num2))
					{
						this.dragTitle = ((num2 != -1) ? pvState.folders[num].files[num2].name : pvState.folders[num].name);
					}
					anotherPvState.ClearSelection();
					anotherPvState.lv.row = -1;
					anotherPvState.selectedFile = -1;
					anotherPvState.selectedFolder = -1;
					this.MySelectionToGlobalSelection();
				}
			}
			EditorGUIUtility.SetIconSize(Vector2.zero);
			return !flag;
		}