This commit is contained in:
2026-06-16 16:58:26 +07:00
parent f3963a1fe3
commit 1889f1e032
12 changed files with 149 additions and 78 deletions

View File

@@ -903,10 +903,11 @@ namespace VFavorites
if (browser.GetFieldValue<int>("m_ViewMode") == 1)
{
TryOpenFolderInProjectBrowser(browser, folderInstanceId);
Selection.activeObject = folderAsset;
EditorGUIUtility.PingObject(folderAsset);
if (!TryOpenFolderInProjectBrowser(browser, folderInstanceId))
{
Selection.activeObject = folderAsset;
EditorGUIUtility.PingObject(folderAsset);
}
}
else
{
@@ -959,7 +960,7 @@ namespace VFavorites
if (!isWrappedBrowserLocked) return;
var unlockedBrowser = allBrowsers.FirstOrDefault(r => !r.GetMemberValue<bool>("isLocked"));
var browserToUse = isOneColumn ? unlockedBrowser : lockedBrowser;
var browserToUse = isOneColumn ? (unlockedBrowser ?? wrappedBrowser) : wrappedBrowser;
if (!browserToUse) return;
@@ -977,29 +978,31 @@ namespace VFavorites
}
static void TryOpenFolderInProjectBrowser(EditorWindow browser, int folderInstanceId)
static bool TryOpenFolderInProjectBrowser(EditorWindow browser, int folderInstanceId)
{
if (TryInvoke(browser, "ShowFolderContents", folderInstanceId, true)) return;
if (TryInvoke(browser, "ShowFolderContents", folderInstanceId, true)) return true;
t_BrowserWindow.SetFieldValue("s_LastInteractedProjectBrowser", browser, exceptionIfNotFound: false);
if (TryInvoke(browser, "SetFolderSelection", new[] { folderInstanceId }, false))
if (TryInvoke(t_BrowserWindow, "OpenSelectedFolders")) return;
if (TryInvoke(t_BrowserWindow, "OpenSelectedFolders")) return true;
var listAreaState = browser.GetFieldValue("m_ListAreaState", exceptionIfNotFound: false);
if (TrySetSelectedInstanceId(listAreaState, folderInstanceId))
if (TryInvoke(t_BrowserWindow, "OpenSelectedFolders")) return;
if (TryInvoke(t_BrowserWindow, "OpenSelectedFolders")) return true;
var folderAsset = EditorUtility.InstanceIDToObject(folderInstanceId);
if (folderAsset && AssetDatabase.OpenAsset(folderAsset)) return;
if (folderAsset && AssetDatabase.OpenAsset(folderAsset)) return true;
if (TryInvoke(browser, "FrameObjectPrivate", folderInstanceId, true, false)) return;
if (TryInvoke(browser, "FrameObject", folderInstanceId, true)) return;
if (TryInvoke(browser, "FrameObjectPrivate", folderInstanceId, true, false)) return true;
if (TryInvoke(browser, "FrameObject", folderInstanceId, true)) return true;
if (folderAsset) EditorGUIUtility.PingObject(folderAsset);
return false;
}
static bool TryInvoke(object target, string methodName, params object[] parameters)