라이브러리 정리

This commit is contained in:
logonkhi
2025-12-08 21:06:05 +09:00
parent bfee6d8745
commit cf31cc0159
330 changed files with 68800 additions and 42167 deletions

View File

@@ -60,6 +60,11 @@ namespace UVC.UI.Window
/// </summary>
public System.Action<TreeListItemData>? OnItemDeselected;
/// <summary>
/// 메인/검색 리스트에서 항목의 가시성 상태가 변경될 때 발생합니다.
/// </summary>
public System.Action<TreeListItemData, bool>? OnItemVisibilityChanged;
// 검색 목록에서 선택된 항목(클론된 데이터)
protected TreeListItemData? selectedSearchItem;
@@ -91,12 +96,14 @@ namespace UVC.UI.Window
if (treeList != null)
{
treeList.OnItemSelectionChanged += HandleMainSelectionChanged;
treeList.OnItemVisibilityChanged += HandleMainVisibilityChanged;
}
// 검색 리스트의 선택 변경을 감지 (선택 결과를 원본 트리에 반영하는 용도)
if (treeListSearch != null)
{
treeListSearch.OnItemSelectionChanged += OnSearchSelectionChanged;
treeListSearch.OnItemVisibilityChanged += HandleMainVisibilityChanged;
}
clearTextButton.onClick.AddListener(() =>
@@ -291,7 +298,7 @@ namespace UVC.UI.Window
if (changed)
{
//데이터 변경 알림
originalItem.NotifyDataChanged(ChangedType.TailButtons, originalItem);
treeListSearch.NotifyDataChanged(originalItem, ChangedType.TailButtons, originalItem);
}
}
});
@@ -340,6 +347,11 @@ namespace UVC.UI.Window
}
}
protected void HandleMainVisibilityChanged(TreeListItemData data, bool isVisible)
{
OnItemVisibilityChanged?.Invoke(data, isVisible);
}
protected void OnInputFieldSubmit(string text)
{
// 검색어가 있으면 검색 결과 목록 표시
@@ -461,20 +473,39 @@ namespace UVC.UI.Window
protected void OnDestroy()
{
inputField.onSubmit.RemoveListener(OnInputFieldSubmit);
clearTextButton.onClick.RemoveAllListeners();
// 1. 검색 작업 취소 및 정리 (먼저 수행)
CancelSearch();
// 2. 입력 이벤트 구독 해제
if (inputField != null)
{
inputField.onSubmit.RemoveListener(OnInputFieldSubmit);
}
if (clearTextButton != null)
{
clearTextButton.onClick.RemoveAllListeners();
}
// 3. TreeList 이벤트 구독 해제
if (treeListSearch != null)
{
treeListSearch.OnItemSelectionChanged -= OnSearchSelectionChanged;
treeListSearch.OnItemVisibilityChanged -= HandleMainVisibilityChanged;
}
if (treeList != null)
{
treeList.OnItemSelectionChanged -= HandleMainSelectionChanged;
treeList.OnItemVisibilityChanged -= HandleMainVisibilityChanged;
}
CancelSearch();
// 4. 외부 이벤트 핸들러 정리
OnItemSelected = null;
OnItemDeselected = null;
// 5. 참조 정리
selectedSearchItem = null;
}
}
}