0.2.0: Added drag and drop between entries in list and fixed some bugs

This commit is contained in:
Anders Ejlersen 2021-02-14 13:01:59 +01:00
parent dea60c6e4a
commit 1e1736f94a
8 changed files with 150 additions and 38 deletions

View file

@ -59,9 +59,10 @@ namespace Game.NavigationTool.Editor
}
HandleDragAndDropEvents();
HandleManipulatedEntry();
HandleManipulatedEntry(styles);
FavoritesGUIUtility.EndDraw();
}
private void HandleDragAndDropEvents()
{
Favorites favorites = FavoritesUtility.GetFavorites();
@ -76,20 +77,18 @@ namespace Game.NavigationTool.Editor
if (!viewTools.IsSearching())
toParent = FavoritesGUIUtility.hoverEntry;
favorites.AddRangeByPath(DragAndDrop.paths, toParent);
}
}
private static void HandleManipulatedEntry()
private static void HandleManipulatedEntry(Styles styles)
{
Favorites favorites = FavoritesUtility.GetFavorites();
Favorites.Entry entry = FavoritesGUIUtility.manipulatingEntry;
switch (FavoritesGUIUtility.manipulatingState)
{
case EManipulatingState.BeginClick:
break;
case EManipulatingState.PerformedClick:
if (entry.isAsset)
{
@ -102,23 +101,23 @@ namespace Game.NavigationTool.Editor
favorites.Save();
}
FavoritesGUIUtility.ClearManipulating();
break;
case EManipulatingState.EndClick:
FavoritesGUIUtility.ClearManipulating();
break;
case EManipulatingState.BeginDrag:
Rect rect = FavoritesGUIUtility.manipulatingRect;
rect.position = Event.current.mousePosition - FavoritesGUIUtility.manipulatingMouseOffset;
FavoritesGUIUtility.DrawShadowEntry(rect, entry, styles);
break;
case EManipulatingState.PerformedDrag:
FavoritesGUIUtility.ClearManipulating();
break;
case EManipulatingState.EndDrag:
favorites.Move(entry, FavoritesGUIUtility.hoverEntry);
FavoritesGUIUtility.ClearManipulating();
break;
case EManipulatingState.PerformedContextClick:
FavoritesGUIUtility.ClearManipulating();
EditorFavoritesPopupWindowContextMenu.Show(Event.current.mousePosition, entry);
break;
case EManipulatingState.EndClick:
case EManipulatingState.EndDrag:
case EManipulatingState.EndContextClick:
FavoritesGUIUtility.ClearManipulating();
break;