Skip to content

Commit e7c4708

Browse files
committed
Fix for mouse keeping dragging when right click menu appears on mac.
1 parent 76d06e7 commit e7c4708

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

com.unity.sg2/Editor/GraphUI/GraphElements/Views/MainPreviewView.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,12 @@ void OnGeometryChangedEvent(GeometryChangedEvent evt)
185185
{
186186
// When the overlay containing this view is hidden, our size becomes 0. No need to resize in this case,
187187
// because the preview won't be shown and can't have a size of 0 regardless.
188-
if (evt.newRect == Rect.zero) return;
188+
if (evt.newRect == Rect.zero ||
189+
float.IsInfinity(evt.newRect.width) ||
190+
float.IsInfinity(evt.newRect.height)||
191+
float.IsNaN(evt.newRect.width)||
192+
float.IsNaN(evt.newRect.height) )
193+
return;
189194

190195
var targetWidth = new Length(evt.newRect.width, LengthUnit.Pixel);
191196
var targetHeight = new Length(evt.newRect.height, LengthUnit.Pixel);

com.unity.sg2/Editor/GraphUI/Manipulators/Draggable.cs

+14-6
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,29 @@ public Draggable(Action<Vector2> handler, bool outputDeltaMovement = false)
2626

2727
protected override void RegisterCallbacksOnTarget()
2828
{
29-
target.RegisterCallback(new EventCallback<MouseDownEvent>(OnMouseDown), TrickleDownEnum.NoTrickleDown);
30-
target.RegisterCallback(new EventCallback<MouseMoveEvent>(OnMouseMove), TrickleDownEnum.NoTrickleDown);
31-
target.RegisterCallback(new EventCallback<MouseUpEvent>(OnMouseUp), TrickleDownEnum.NoTrickleDown);
29+
target.RegisterCallback<MouseDownEvent>(OnMouseDown);
30+
target.RegisterCallback<MouseUpEvent>(OnMouseUp);
31+
target.RegisterCallback<MouseCaptureOutEvent>(OnCaptureLost);
3232
}
3333

3434
protected override void UnregisterCallbacksFromTarget()
3535
{
36-
target.UnregisterCallback(new EventCallback<MouseDownEvent>(OnMouseDown), TrickleDownEnum.NoTrickleDown);
37-
target.UnregisterCallback(new EventCallback<MouseMoveEvent>(OnMouseMove), TrickleDownEnum.NoTrickleDown);
38-
target.UnregisterCallback(new EventCallback<MouseUpEvent>(OnMouseUp), TrickleDownEnum.NoTrickleDown);
36+
target.UnregisterCallback<MouseCaptureOutEvent>(OnCaptureLost);
37+
target.UnregisterCallback<MouseDownEvent>(OnMouseDown);
38+
target.UnregisterCallback<MouseUpEvent>(OnMouseUp);
39+
}
40+
41+
void OnCaptureLost(MouseCaptureOutEvent e)
42+
{
43+
m_Active = false;
44+
target.UnregisterCallback<MouseMoveEvent>(OnMouseMove);
3945
}
4046

4147
void OnMouseDown(MouseDownEvent evt)
4248
{
4349
target.CaptureMouse();
4450
m_Active = true;
51+
target.RegisterCallback<MouseMoveEvent>(OnMouseMove);
4552
evt.StopPropagation();
4653
}
4754

@@ -63,6 +70,7 @@ void OnMouseMove(MouseMoveEvent evt)
6370
void OnMouseUp(MouseUpEvent evt)
6471
{
6572
m_Active = false;
73+
target.UnregisterCallback<MouseMoveEvent>(OnMouseMove);
6674

6775
if (target.HasMouseCapture())
6876
{

0 commit comments

Comments
 (0)