Skip to content

Commit d4b4b20

Browse files
committed
Cursor will now change to resize cursor while resizing the file browser on standalone platforms
1 parent 207620f commit d4b4b20

File tree

6 files changed

+204
-18
lines changed

6 files changed

+204
-18
lines changed

Plugins/SimpleFileBrowser/Resources/SimpleFileBrowserCanvas.prefab

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,7 @@ GameObject:
650650
- component: {fileID: 222000014084106484}
651651
- component: {fileID: 114000014287647564}
652652
- component: {fileID: 114000011715092176}
653+
- component: {fileID: 114458032168439820}
653654
m_Layer: 5
654655
m_Name: WindowDragGizmo
655656
m_TagString: Untagged
@@ -3425,6 +3426,18 @@ MonoBehaviour:
34253426
m_BlockingMask:
34263427
serializedVersion: 2
34273428
m_Bits: 4294967295
3429+
--- !u!114 &114458032168439820
3430+
MonoBehaviour:
3431+
m_ObjectHideFlags: 1
3432+
m_PrefabParentObject: {fileID: 0}
3433+
m_PrefabInternal: {fileID: 100100000}
3434+
m_GameObject: {fileID: 1000012300833210}
3435+
m_Enabled: 1
3436+
m_EditorHideFlags: 0
3437+
m_Script: {fileID: 11500000, guid: 759524cf7ef37f244bb00cd9724f0349, type: 3}
3438+
m_Name:
3439+
m_EditorClassIdentifier:
3440+
resizeCursor: {fileID: 2800000, guid: f54814069fd98ae45be23283803a557c, type: 3}
34283441
--- !u!114 &114509553718010344
34293442
MonoBehaviour:
34303443
m_ObjectHideFlags: 1

Plugins/SimpleFileBrowser/Scripts/FileBrowser.cs

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -150,14 +150,19 @@ private static FileBrowser Instance
150150
#pragma warning disable 0649
151151
[Header( "Settings" )]
152152

153-
public Color normalFileColor = Color.white;
154-
public Color hoveredFileColor = new Color32( 225, 225, 255, 255 );
155-
public Color selectedFileColor = new Color32( 0, 175, 255, 255 );
156-
157-
public Color wrongFilenameColor = new Color32( 255, 100, 100, 255 );
153+
[SerializeField]
154+
internal Color normalFileColor = Color.white;
155+
[SerializeField]
156+
internal Color hoveredFileColor = new Color32( 225, 225, 255, 255 );
157+
[SerializeField]
158+
internal Color selectedFileColor = new Color32( 0, 175, 255, 255 );
159+
[SerializeField]
160+
internal Color wrongFilenameColor = new Color32( 255, 100, 100, 255 );
158161

159-
public int minWidth = 380;
160-
public int minHeight = 300;
162+
[SerializeField]
163+
internal int minWidth = 380;
164+
[SerializeField]
165+
internal int minHeight = 300;
161166

162167
[SerializeField]
163168
private float narrowScreenWidth = 380f;
@@ -196,8 +201,10 @@ private static FileBrowser Instance
196201

197202
private Dictionary<string, Sprite> filetypeToIcon;
198203

199-
public Sprite multiSelectionToggleOffIcon;
200-
public Sprite multiSelectionToggleOnIcon;
204+
[SerializeField]
205+
internal Sprite multiSelectionToggleOffIcon;
206+
[SerializeField]
207+
internal Sprite multiSelectionToggleOnIcon;
201208

202209
[Header( "Internal References" )]
203210

@@ -226,6 +233,7 @@ private static FileBrowser Instance
226233
[SerializeField]
227234
private FileBrowserItem itemPrefab;
228235
private readonly List<FileBrowserItem> allItems = new List<FileBrowserItem>( 16 );
236+
private float itemHeight;
229237

230238
[SerializeField]
231239
private FileBrowserQuickLink quickLinkPrefab;
@@ -500,7 +508,7 @@ private void Awake()
500508
middleViewOriginalSize = middleView.sizeDelta;
501509
middleViewQuickLinksOriginalSize = middleViewQuickLinks.sizeDelta;
502510

503-
ItemHeight = ( (RectTransform) itemPrefab.transform ).sizeDelta.y;
511+
itemHeight = ( (RectTransform) itemPrefab.transform ).sizeDelta.y;
504512
nullPointerEventData = new PointerEventData( null );
505513

506514
#if !UNITY_EDITOR && ( UNITY_ANDROID || UNITY_IOS || UNITY_WSA || UNITY_WSA_10_0 )
@@ -590,12 +598,12 @@ private void OnApplicationFocus( bool focus )
590598
#endregion
591599

592600
#region Interface Methods
593-
public OnItemClickedHandler OnItemClicked { get { return null; } set { } }
601+
OnItemClickedHandler IListViewAdapter.OnItemClicked { get { return null; } set { } }
594602

595-
public int Count { get { return validFileEntries.Count; } }
596-
public float ItemHeight { get; private set; }
603+
int IListViewAdapter.Count { get { return validFileEntries.Count; } }
604+
float IListViewAdapter.ItemHeight { get { return itemHeight; } }
597605

598-
public ListItem CreateItem()
606+
ListItem IListViewAdapter.CreateItem()
599607
{
600608
FileBrowserItem item = (FileBrowserItem) Instantiate( itemPrefab, filesContainer, false );
601609
item.SetFileBrowser( this );
@@ -604,7 +612,7 @@ public ListItem CreateItem()
604612
return item;
605613
}
606614

607-
public void SetItemContent( ListItem item )
615+
void IListViewAdapter.SetItemContent( ListItem item )
608616
{
609617
FileBrowserItem file = (FileBrowserItem) item;
610618
FileSystemEntry fileInfo = validFileEntries[item.Position];
@@ -1382,14 +1390,14 @@ private bool AddQuickLink( Sprite icon, string name, string path, ref Vector2 an
13821390
quickLink.SetQuickLink( folderIcon, name, path );
13831391

13841392
quickLink.TransformComponent.anchoredPosition = anchoredPos;
1385-
anchoredPos.y -= ItemHeight;
1393+
anchoredPos.y -= itemHeight;
13861394

13871395
addedQuickLinksSet.Add( path );
13881396

13891397
return true;
13901398
}
13911399

1392-
public void EnsureWindowIsWithinBounds()
1400+
internal void EnsureWindowIsWithinBounds()
13931401
{
13941402
Vector2 canvasSize = rectTransform.sizeDelta;
13951403
Vector2 windowSize = windowTR.sizeDelta;
@@ -1424,7 +1432,7 @@ public void EnsureWindowIsWithinBounds()
14241432
windowTR.sizeDelta = windowSize;
14251433
}
14261434

1427-
public void OnWindowDimensionsChanged( Vector2 size )
1435+
internal void OnWindowDimensionsChanged( Vector2 size )
14281436
{
14291437
float windowWidth = size.x;
14301438
float quickLinksWidth = Mathf.Min( middleViewQuickLinksOriginalSize.x, windowWidth * quickLinksMaxWidthPercentage );
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
using UnityEngine;
2+
using UnityEngine.EventSystems;
3+
4+
namespace SimpleFileBrowser
5+
{
6+
public class FileBrowserCursorHandler : MonoBehaviour
7+
#if UNITY_EDITOR || ( !UNITY_ANDROID && !UNITY_IOS )
8+
, IPointerEnterHandler, IPointerExitHandler, IBeginDragHandler, IEndDragHandler
9+
#endif
10+
{
11+
#if UNITY_EDITOR || ( !UNITY_ANDROID && !UNITY_IOS )
12+
#pragma warning disable 0649
13+
[SerializeField]
14+
private Texture2D resizeCursor;
15+
#pragma warning restore 0649
16+
17+
private bool isHovering;
18+
private bool isResizing;
19+
20+
void IPointerEnterHandler.OnPointerEnter( PointerEventData eventData )
21+
{
22+
isHovering = true;
23+
24+
if( !eventData.dragging )
25+
ShowResizeCursor();
26+
}
27+
28+
void IPointerExitHandler.OnPointerExit( PointerEventData eventData )
29+
{
30+
isHovering = false;
31+
32+
if( !isResizing )
33+
ShowDefaultCursor();
34+
}
35+
36+
void IBeginDragHandler.OnBeginDrag( PointerEventData eventData )
37+
{
38+
isResizing = true;
39+
ShowResizeCursor();
40+
}
41+
42+
void IEndDragHandler.OnEndDrag( PointerEventData eventData )
43+
{
44+
isResizing = false;
45+
46+
if( !isHovering )
47+
ShowDefaultCursor();
48+
}
49+
50+
private void ShowDefaultCursor()
51+
{
52+
Cursor.SetCursor( null, Vector2.zero, CursorMode.Auto );
53+
}
54+
55+
private void ShowResizeCursor()
56+
{
57+
Cursor.SetCursor( resizeCursor, new Vector2( resizeCursor.width * 0.5f, resizeCursor.height * 0.5f ), CursorMode.Auto );
58+
}
59+
#endif
60+
}
61+
}

Plugins/SimpleFileBrowser/Scripts/FileBrowserCursorHandler.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Binary file not shown.

Plugins/SimpleFileBrowser/Sprites/ResizeCursor.psd.meta

Lines changed: 92 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)