This release focuses on streamlining the API, enhancing user interactions, and introducing robust state management capabilities.
- Breaking Changes:
- Made the setter of NodifyEditor.IsPanning private
- Made SelectionHelper internal
- Renamed HandleRightClickAfterPanningThreshold to MouseActionSuppressionThreshold in NodifyEditor
- Renamed StartCutting to BeginCutting in NodifyEditor
- Renamed Connector.EnableStickyConnections to ConnectorState.EnabledToggledConnectingMode
- Renamed PushItems to UpdatePushedArea and StartPushingItems to BeginPushingItems in NodifyEditor
- Renamed UnselectAllConnection to UnselectAllConnections in NodifyEditor
- Removed DragStarted, DragDelta and DragCompleted routed events from ItemContainer
- Replaced the System.Windows.Input.MouseGesture with Nodify.Interactivity.MouseGesture for default EditorGesture mappings
- Removed State, GetInitialState, PushState, PopState and PopAllStates from NodifyEditor and ItemContainer
- Replaced EditorState and ContainerState with InputElementState
- Moved AllowCuttingCancellation from CuttingLine to NodifyEditor
- Moved AllowDraggingCancellation from ItemContainer to NodifyEditor
- Moved EditorGestures under the Nodify.Interactivity namespace
- Moved editor events under the Nodify.Events namespace
- Features:
- Added BeginPanning, UpdatePanning, EndPanning, CancelPanning and AllowPanningCancellation to NodifyEditor and Minimap
- Added MouseLocation, ZoomAtPosition and GetLocationInsideMinimap to Minimap
- Added UpdateCuttingLine to NodifyEditor
- Added Select, BeginSelecting, UpdateSelection, EndSelecting, CancelSelecting and AllowSelectionCancellation to NodifyEditor
- Added IsDragging, BeginDragging, UpdateDragging, EndDragging and CancelDragging to NodifyEditor
- Added AlignSelection and AlignContainers methods to NodifyEditor
- Added LockSelection and UnlockSelection methods to NodifyEditor and EditorCommands
- Added ItemsMoved routed event to NodifyEditor
- Added HasCustomContextMenu dependency property to NodifyEditor, ItemContainer, Connector and BaseConnection
- Added Select, BeginDragging, UpdateDragging, EndDragging and CancelDragging to ItemContainer
- Added PreserveSelectionOnRightClick configuration field to ItemContainer
- Added BeginConnecting, UpdatePendingConnection, EndConnecting, CancelConnecting and RemoveConnections methods to Connector
- Added FindTargetConnector and FindConnectionTarget methods to Connector
- Added a custom MouseGesture with support for key combinations
- Added InputProcessor to NodifyEditor, ItemContainer, Connector, BaseConnection and Minimap, enabling the extension of controls with custom states
- Added DragState to simplify creating click-and-drag interactions, with support for initiating and completing them using the keyboard
- Added InputElementStateStack, InputElementStateStack.DragState and InputElementStateStack.InputElementState to manage transitions between states in UI elements
- Added InputProcessor.Shared to enable the addition of global input handlers
- Move the viewport to the mouse position when zooming on the Minimap if ResizeToViewport is false
- Added SplitAtLocation and Remove methods to BaseConnection
- Added AllowPanningWhileSelecting, AllowPanningWhileCutting and AllowPanningWhilePushingItems to EditorState
- Added AllowZoomingWhilePanning, AllowZoomingWhileSelecting, AllowZoomingWhileCutting and AllowZoomingWhilePushingItems to EditorState
- Added EnableToggledSelectingMode, EnableToggledPanningMode, EnableToggledPushingItemsMode and EnableToggledCuttingMode to EditorState
- Added MinimapState.EnableToggledPanningMode
- Added ContainerState.EnableToggledDraggingMode
- Added Unbind to InputGestureRef and EditorGestures.SelectionGestures
- Added EnableHitTesting to PendingConnection
- Bugfixes:
- Fixed an issue where the ItemContainer was selected by releasing the mouse button on it, even when the mouse was not captured
- Fixed an issue where the ItemContainer could open its context menu even when it was not selected
- Fixed an issue where the Home button caused the editor to fail to display items when contained within a ScrollViewer
- Fixed an issue where connector optimization did not work when SelectedItems was not data-bound
- Fixed EditorCommands.Align to perform a single arrange invalidation instead of one for each aligned container
- Fixed an issue where controls would capture the mouse unnecessarily; they now capture it only in response to a defined gesture
- Fixed an issue where the minimap could update the viewport without having the mouse captured
- Fixed ItemContainer.Select and NodifyEditor.SelectArea to clear the existing selection and select the containers within the same transaction
- Fixed an issue where editor interactions failed to cancel upon losing mouse capture
- Fixed an issue where selecting a new connection would not clear the previous selection within the same transaction
- Add panning methods to NodifyEditor by @miroiu in #153
- Improve cutting methods in NodifyEditor by @miroiu in #154
- Improve pushing items methods in NodifyEditor by @miroiu in #155
- Add selecting methods to NodifyEditor by @miroiu in #156
- Add dragging methods to NodifyEditor by @miroiu in #159
- Add dragging methods to ItemContainer by @miroiu in #160
- Suppress context menu for common actions by @miroiu in #162
- Add editor methods to align containers by @miroiu in #163
- Add HasCustomContextMenu to NodifyEditor and ItemContainer by @miroiu in #165
- Added Connector methods to manage a pending connection by @miroiu in #166
- Add a custom MouseGesture with support for key combinations by @miroiu in #167
- Fix minimap updating the viewport without having the mouse captured by @miroiu in #169
- End operation if cancellation is not supported by @miroiu in #171
- Replace selection within the same transaction by @miroiu in #172
- Redesigned state management by @miroiu in #170
- Reorganize folder structure by @miroiu in #174
- Add the possibility to register global input handlers by @miroiu in #175
- Added panning methods to Minimap by @miroiu in #176
- Enable custom input processing for BaseConnection by @miroiu in #177
- Enable toggled interactions for various editor operations by @miroiu in #178
- Replace connection selection within the same transaction by @miroiu in #179
- Add ItemsMoved routed event to NodifyEditor to simplify undo-redo by @miroiu in #180
- Add LockSelection and UnlockSelection to NodifyEditor by @miroiu in #181
- Unbind gestures by @miroiu in #182
- Retarget connections in Playground app by @miroiu in #183
- Improved support for toggled interactions by @miroiu in #184
- Generate API reference by @miroiu in #185
Full Changelog: v6.6.0...v7.0.0