Skip to content

Commit 3ed04ad

Browse files
committed
feat: Replace GenericDropdownMenu with GenericMenu
The GenericDropdownMenu cannot display beyond the window it is in, and it has bugs in Unity 6000.0. Therefore, we are using GenericMenu instead. See: - https://issuetracker.unity3d.com/product/unity/issues/guid/UUM-77265 - https://discussions.unity.com/t/why-unity-6-changes-the-style-of-the-genericdropdownmenu-to-this-new-ugly-high-contrast-style/1501545/5
1 parent 8bf406d commit 3ed04ad

File tree

1 file changed

+5
-72
lines changed

1 file changed

+5
-72
lines changed

Editor/Scripts/AssetItemView.cs

+5-72
Original file line numberDiff line numberDiff line change
@@ -240,13 +240,15 @@ private void OnContextClick(Vector2 mousePosition)
240240
}
241241
}
242242

243+
// The GenericDropdownMenu cannot display beyond the window it is in, and it has bugs in Unity 6000.0.
244+
// Therefore, we are using GenericMenu instead.
245+
// MEMO Unity BUG: https://issuetracker.unity3d.com/product/unity/issues/guid/UUM-77265
246+
// Custom contextual menu is broken or displayed wrongly when it is created with GenericDropdownMenu UIElement
247+
243248
private void ShowProjectAssetContextMenu(Vector2 mousePosition)
244249
{
245250
Assert.IsTrue(AssetHandle.Category == AssetCategory.ProjectAsset);
246251

247-
// MEMO Unity BUG: https://issuetracker.unity3d.com/product/unity/issues/guid/UUM-77265
248-
// Custom contextual menu is broken or displayed wrongly when it is created with GenericDropdownMenu UIElement
249-
#if UNITY_6000_0_OR_NEWER
250252
GenericMenu genericMenu = new GenericMenu();
251253
if (AssetHandle.Asset)
252254
{
@@ -264,34 +266,12 @@ private void ShowProjectAssetContextMenu(Vector2 mousePosition)
264266

265267
genericMenu.AddItem(new GUIContent("Remove"), false, () => OnWantsToRemoveAssetItem?.Invoke(AssetHandle));
266268
genericMenu.ShowAsContext();
267-
#else
268-
GenericDropdownMenu menu = new GenericDropdownMenu();
269-
if (AssetHandle.Asset)
270-
{
271-
menu.AddItem("Open", false, AssetHandle.OpenAsset);
272-
menu.AddItem("Copy Path", false, AssetHandle.CopyPathToSystemBuffer);
273-
menu.AddItem("Copy Guid", false, AssetHandle.CopyGuidToSystemBuffer);
274-
menu.AddItem("Copy Type", false, AssetHandle.CopyTypeFullNameToSystemBuffer);
275-
menu.AddItem("Copy Instance ID", false, AssetHandle.CopyInstanceIdToSystemBuffer);
276-
menu.AddItem("Show in Folder", false, AssetHandle.ShowInFolder);
277-
}
278-
else
279-
{
280-
menu.AddItem("Copy Guid", false, AssetHandle.CopyGuidToSystemBuffer);
281-
}
282-
283-
menu.AddItem("Remove", false, () => OnWantsToRemoveAssetItem?.Invoke(AssetHandle));
284-
menu.DropDown(new Rect(mousePosition, Vector2.zero), this, false);
285-
#endif
286269
}
287270

288271
private void ShowSceneObjectContextMenu(Vector2 mousePosition)
289272
{
290273
Assert.IsTrue(AssetHandle.Category == AssetCategory.SceneObject);
291274

292-
// MEMO Unity BUG: https://issuetracker.unity3d.com/product/unity/issues/guid/UUM-77265
293-
// Custom contextual menu is broken or displayed wrongly when it is created with GenericDropdownMenu UIElement
294-
#if UNITY_6000_0_OR_NEWER
295275
GenericMenu genericMenu = new GenericMenu();
296276
if (AssetHandle.Asset)
297277
{
@@ -307,34 +287,13 @@ private void ShowSceneObjectContextMenu(Vector2 mousePosition)
307287

308288
genericMenu.AddItem(new GUIContent("Remove"), false, () => OnWantsToRemoveAssetItem?.Invoke(AssetHandle));
309289
genericMenu.ShowAsContext();
310-
#else
311-
GenericDropdownMenu menu = new GenericDropdownMenu();
312-
if (AssetHandle.Asset)
313-
{
314-
menu.AddItem("Open", false, AssetHandle.OpenAsset);
315-
menu.AddItem("Copy Hierarchy Path", false, AssetHandle.CopyPathToSystemBuffer);
316-
menu.AddItem("Copy Type", false, AssetHandle.CopyTypeFullNameToSystemBuffer);
317-
menu.AddItem("Copy Instance ID", false, AssetHandle.CopyInstanceIdToSystemBuffer);
318-
}
319-
else if (AssetHandle.Scene)
320-
{
321-
menu.AddItem("Open in Scene", false, AssetHandle.OpenAsset);
322-
}
323-
324-
menu.AddItem("Remove", false, () => OnWantsToRemoveAssetItem?.Invoke(AssetHandle));
325-
menu.DropDown(new Rect(mousePosition, Vector2.zero), this, false);
326-
#endif
327290
}
328291

329292
private void ShowExternalFileContextMenu(Vector2 mousePosition)
330293
{
331294
Assert.IsTrue(AssetHandle.Category == AssetCategory.ExternalFile);
332295

333296
string path = AssetHandle.GetAssetPath();
334-
335-
// MEMO Unity BUG: https://issuetracker.unity3d.com/product/unity/issues/guid/UUM-77265
336-
// Custom contextual menu is broken or displayed wrongly when it is created with GenericDropdownMenu UIElement
337-
#if UNITY_6000_0_OR_NEWER
338297
GenericMenu genericMenu = new GenericMenu();
339298
if (File.Exists(path) || Directory.Exists(path))
340299
{
@@ -349,43 +308,17 @@ private void ShowExternalFileContextMenu(Vector2 mousePosition)
349308

350309
genericMenu.AddItem(new GUIContent("Remove"), false, () => OnWantsToRemoveAssetItem?.Invoke(AssetHandle));
351310
genericMenu.ShowAsContext();
352-
#else
353-
GenericDropdownMenu menu = new GenericDropdownMenu();
354-
if (File.Exists(path) || Directory.Exists(path))
355-
{
356-
menu.AddItem("Open", false, AssetHandle.OpenAsset);
357-
menu.AddItem("Copy Path", false, AssetHandle.CopyPathToSystemBuffer);
358-
menu.AddItem("Show in Folder", false, AssetHandle.ShowInFolder);
359-
}
360-
else
361-
{
362-
menu.AddItem("Copy Path", false, AssetHandle.CopyPathToSystemBuffer);
363-
}
364-
365-
menu.AddItem("Remove", false, () => OnWantsToRemoveAssetItem?.Invoke(AssetHandle));
366-
menu.DropDown(new Rect(mousePosition, Vector2.zero), this, false);
367-
#endif
368311
}
369312

370313
private void ShowUrlContextMenu(Vector2 mousePosition)
371314
{
372315
Assert.IsTrue(AssetHandle.Category == AssetCategory.Url);
373316

374-
// MEMO Unity BUG: https://issuetracker.unity3d.com/product/unity/issues/guid/UUM-77265
375-
// Custom contextual menu is broken or displayed wrongly when it is created with GenericDropdownMenu UIElement
376-
#if UNITY_6000_0_OR_NEWER
377317
GenericMenu genericMenu = new GenericMenu();
378318
genericMenu.AddItem(new GUIContent("Open"), false, AssetHandle.OpenAsset);
379319
genericMenu.AddItem(new GUIContent("Copy URL"), false, AssetHandle.CopyPathToSystemBuffer);
380320
genericMenu.AddItem(new GUIContent("Remove"), false, () => OnWantsToRemoveAssetItem?.Invoke(AssetHandle));
381321
genericMenu.ShowAsContext();
382-
#else
383-
GenericDropdownMenu menu = new GenericDropdownMenu();
384-
menu.AddItem("Open", false, AssetHandle.OpenAsset);
385-
menu.AddItem("Copy URL", false, AssetHandle.CopyPathToSystemBuffer);
386-
menu.AddItem("Remove", false, () => OnWantsToRemoveAssetItem?.Invoke(AssetHandle));
387-
menu.DropDown(new Rect(mousePosition, Vector2.zero), this, false);
388-
#endif
389322
}
390323

391324

0 commit comments

Comments
 (0)