Skip to content

Commit df6e760

Browse files
author
Sander van Rossen
committed
Fix for #234
1 parent c1d995d commit df6e760

File tree

3 files changed

+25
-11
lines changed

3 files changed

+25
-11
lines changed

RealtimeCSG/Assets/Plugins/RealtimeCSG/Editor/Scripts/View/GUI/EditModeGUI/EditModeSelection.GUI.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ internal sealed partial class EditModeSelectionGUI
1111
{
1212
static int SceneViewBrushEditorOverlayHash = "SceneViewBrushEditorOverlay".GetHashCode();
1313

14-
static GUI.WindowFunction windowFunction = new GUI.WindowFunction(EditModeSelectionGUI.HandleSceneGUI);
1514

1615
public static float OnEditModeSelectionGUI()
1716
{
@@ -32,6 +31,7 @@ public static float OnEditModeSelectionGUI()
3231
}
3332

3433
static GUIStyle sceneViewOverlayTransparentBackground = "SceneViewOverlayTransparentBackground";
34+
static GUI.WindowFunction windowFunction = new GUI.WindowFunction(EditModeSelectionGUI.HandleSceneGUI);
3535

3636
public static void HandleWindowGUI(Rect windowRect)
3737
{

RealtimeCSG/Assets/Plugins/RealtimeCSG/Editor/Scripts/View/GUI/EditModeGUI/EditModes/EditMode.Surface.GUI.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,6 +1053,7 @@ public static void OnSceneGUI(Rect windowRect, EditModeSurface tool)
10531053
boxArea.width += scrollbarWidth;
10541054
}
10551055
GUI.Box(boxArea, ContentSurfacesLabel, windowStyle);
1056+
int windowControlID = GUIUtility.GetControlID(SceneViewSurfaceOverlayHash, FocusType.Keyboard, boxArea);
10561057
{
10571058
currentArea.x += 5;
10581059
currentArea.width += 2;
@@ -1086,13 +1087,12 @@ public static void OnSceneGUI(Rect windowRect, EditModeSurface tool)
10861087
EditModeToolWindowSceneGUI.GetWindow();
10871088

10881089
TooltipUtility.SetToolTip(CSG_GUIStyleUtility.PopOutTooltip, buttonArea);
1089-
int controlID = GUIUtility.GetControlID(SceneViewSurfaceOverlayHash, FocusType.Keyboard, boxArea);
1090-
switch (Event.current.GetTypeForControl(controlID))
1090+
switch (Event.current.GetTypeForControl(windowControlID))
10911091
{
1092-
case EventType.MouseDown: { if (boxArea.Contains(Event.current.mousePosition)) { GUIUtility.hotControl = controlID; GUIUtility.keyboardControl = controlID; Event.current.Use(); } break; }
1092+
case EventType.MouseDown: { if (boxArea.Contains(Event.current.mousePosition)) { GUIUtility.hotControl = windowControlID; GUIUtility.keyboardControl = windowControlID; Event.current.Use(); } break; }
10931093
case EventType.MouseMove: { if (boxArea.Contains(Event.current.mousePosition)) { Event.current.Use(); } break; }
1094-
case EventType.MouseUp: { if (GUIUtility.hotControl == controlID) { GUIUtility.hotControl = 0; GUIUtility.keyboardControl = 0; Event.current.Use(); } break; }
1095-
case EventType.MouseDrag: { if (GUIUtility.hotControl == controlID) { Event.current.Use(); } break; }
1094+
case EventType.MouseUp: { if (GUIUtility.hotControl == windowControlID) { GUIUtility.hotControl = 0; GUIUtility.keyboardControl = 0; Event.current.Use(); } break; }
1095+
case EventType.MouseDrag: { if (GUIUtility.hotControl == windowControlID) { Event.current.Use(); } break; }
10961096
case EventType.ScrollWheel: { if (boxArea.Contains(Event.current.mousePosition)) { Event.current.Use(); } break; }
10971097
}
10981098
}

RealtimeCSG/Assets/Plugins/RealtimeCSG/Editor/Scripts/View/GUI/EditModeGUI/EditModes/EditMode.Surface.cs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -947,6 +947,7 @@ void CreateControlIDs()
947947

948948
[NonSerialized] Vector2 prevMousePos;
949949

950+
bool clickedInScene = false;
950951

951952
public void HandleEvents(SceneView sceneView, Rect sceneRect)
952953
{
@@ -969,27 +970,40 @@ public void HandleEvents(SceneView sceneView, Rect sceneRect)
969970

970971
switch (Event.current.type)
971972
{
972-
//case EventType.MouseDown:
973+
case EventType.MouseDown:
974+
{
975+
clickedInScene = false;
976+
if (!sceneRect.Contains(Event.current.mousePosition))
977+
break;
978+
979+
var guiArea = GetLastSceneGUIRect();
980+
if (guiArea.Contains(Event.current.mousePosition))
981+
break;
982+
983+
clickedInScene = true;
984+
break;
985+
}
973986
case EventType.MouseUp:
974987
case EventType.MouseDrag:
975988
{
976-
if (Event.current.button != 0 ||
989+
if (!clickedInScene ||
990+
Event.current.button != 0 ||
977991
GUIUtility.hotControl != 0)
978992
break;
979-
993+
980994
if (!sceneRect.Contains(Event.current.mousePosition))
981995
break;
982996

983997
var guiArea = GetLastSceneGUIRect();
984-
GameObject gameObject = null;
985998
if (guiArea.Contains(Event.current.mousePosition))
986999
break;
9871000

1001+
GameObject gameObject = null;
9881002
if (SceneQueryUtility.FindUnityWorldIntersection(camera, Event.current.mousePosition, out gameObject))
9891003
{
9901004
if (gameObject == null &&
9911005
Event.current.type == EventType.MouseUp)
992-
{
1006+
{
9931007
SelectionUtility.DeselectAll();
9941008
} else
9951009
SelectionUtility.DoSelectionClick(sceneView);

0 commit comments

Comments
 (0)