Skip to content

Releases: miroiu/nodify

Release v7.1.0

07 Jul 18:01

Choose a tag to compare

This release introduces new keyboard navigation capabilities, improvements for gesture handling and hotkey display.

keyboard

  • Breaking Changes:
    • Added ProcessHandledEvents to IInputHandler and removed it from InputProcessor
    • Renamed EditorGestures.Editor.ResetViewportLocation to EditorGestures.Editor.ResetViewport
  • Features:
    • Introduced a new BringIntoView method overload in NodifyEditor that accepts an offset from the viewport edges
    • Added BringIntoViewEdgeOffset to NodifyEditor to control the viewport edge offset when bringing the focused element into view
    • Added ResetViewport to NodifyEditor to reset the viewport's location and zoom
    • Improved tab and directional navigation, ensuring that focused elements are automatically brought into view
    • Added keyboard navigation layers for nodes, connections and decorators; restricting keyboard navigation to the active layer
    • Added ActiveNavigationLayer, ActivateNextNavigationLayer, ActivatePreviousNavigationLayer, RegisterNavigationLayer, RemoveNavigationLayer and ActivateNavigationLayer to NodifyEditor for keyboard layers management
    • Added KeyboardNavigationLayer property to NodifyEditor that allows navigating through the ItemContainers
    • Added AutoRegisterConnectionsLayer, AutoRegisterDecoratorsLayer, AutoFocusFirstElement, AutoPanOnNodeFocus, PanViewportOnKeyboardDrag and MinimumNavigationStepSize to NodifyEditor
    • Added EditorGestures.Editor.Keyboard for keyboard navigation gestures
    • Added FindNextFocusTarget, OnElementFocused and OnKeyboardNavigationLayerActivated virtual methods to NodifyEditor
    • Added new gestures for keyboard navigation available in EditorGestures.Editor.Keyboard
    • Added ToggleContentSelection to GroupingNode and its corresponding gesture to toggle the selection of nodes inside the group
    • Added ZoomIn, ZoomOut and ResetViewport methods to the Minimap control
    • Added ZoomIn, ZoomOut, ResetViewport and Pan gestures to EditorGestures.Minimap
    • Added NavigationStepSize static property to Minimap
    • Added Unbind to all gestures inside EditorGestures
    • Added the KeyComboGesture that requires a trigger key to be held down before pressing a combo key
    • Added FocusVisualPen and FocusVisualPadding dependency properties to BaseConnection
    • Added default focus visuals for base editor controls that can be included by referencing the FocusVisual.xaml file
    • Added MaxHotKeys and HotKeysDisplayMode static configuration fields to PendingConnection
    • Added HotKeyControl with its corresponding theme resources to display the hotkeys for a pending connection
  • Allow implementations of IInputHandler to process handled events by @miroiu in #222
  • Keyboard navigation layers by @miroiu in #224
  • Add pending connection hot keys by @miroiu in #227

Full Changelog: v7.0.4...v7.1.0

Release v7.0.4

06 Jun 17:59

Choose a tag to compare

  • Features:
    • Added AsRef extension method to InputGesture to convert it to an InputGestureRef
  • Bugfixes:
    • Fixed an issue where the gesture used for EditorGestures.Editor.SelectAll extracted from the ApplicationCommands was assumed to be a KeyGesture
    • Fixed overrides of DrawDirectionalArrowheadGeometry virtual method not working in subclasses of the built in connections
    • Fixed a memory leak caused by the auto panning timer
  • Fixed the assumption that the ApplicationCommands.SelectAll is a KeyGesture by @miroiu in #213
  • Fixed overrides of arrowhead virtual methods not working for connections by @miroiu in #221
  • Fix memory leak caused by auto panning timer by @miroiu in #219

Full Changelog: v7.0.3...v7.0.4

Release v7.0.3

02 May 17:50

Choose a tag to compare

  • Bugfixes:
    • Fixed an issue where the SelectedEvent and UnselectedEvent events on the ItemContainer were not raised when the selection was completed
  • Raise ItemContainer Selected/Unselected events by @miroiu in #211

Full Changelog: v7.0.2...v7.0.3

Release v7.0.2

26 Apr 11:30

Choose a tag to compare

  • Features:
    • Added EditorGestures.Editor.SelectAll
  • Bugfixes:
    • Fixed an issue where the EditorCommands.SelectAll gesture could not be customized
  • Add EditorGestures.Editor.SelectAll by @miroiu in #207

Full Changelog: v7.0.1...v7.0.2

Release v7.0.1

24 Jan 19:04

Choose a tag to compare

  • Bugfixes:
    • Fixed an issue where connections would not gain focus when selected, which could prevent editor keybindings from functioning in certain scenarios
    • Resolved an issue where selecting a node did not deselect connections and vice versa
    • Fixed a bug preventing ItemContainers from being selected when the mouse could not be captured
    • Fixed an issue with key detection in Japanese IME environments, causing issues with the MouseGesture
  • Fix Chinese wiki sidebar by @jpk6789 in #186
  • Fix an issue where connections would not gain focus when selected by @miroiu in #190
  • Correct selection behavior for nodes and connections by @miroiu in #189
  • Fix issue with dragging item containers by @miroiu in #201

Full Changelog: v7.0.0...v7.0.1

Release v7.0.0

23 Dec 19:33

Choose a tag to compare

This release focuses on streamlining the API, enhancing user interactions, and introducing robust state management capabilities.

rewire

  • 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

Release v6.6.0

25 Nov 17:10

Choose a tag to compare

  • Features:
    • Added InputGroupStyle and OutputGroupStyle to Node
    • Added PanWithMouseWheel, PanHorizontalModifierKey and PanVerticalModifierKey to EditorGestures.Editor
    • Added CornerRadius dependency property to LineConnection, CircuitConnection and StepConnection
    • Added EditorGestures.Editor.PushItems gesture used to start pushing ItemContainers vertically or horizontally
    • Added PushedAreaStyle, PushedAreaOrientation and IsPushingItems dependency properties to NodifyEditor
    • Added NodifyEditor.SnapToGrid utility function
  • Bugfixes:
    • Fixed ItemContainer.BorderBrush and ItemContainer.SelectedBrush not reacting to theme changes
  • Add InputGroupStyle and OutputGroupStyle to Node by @miroiu in #145
  • Smooth connection corners by @miroiu in #149
  • Pan using the mouse wheel by @miroiu in #147
  • Move all items relative to the cursor by performing a drag gesture by @miroiu in #150
  • Fix ItemContainer borders not reacting to theme changes by @miroiu in #151

push-items

Full Changelog: v6.5.0...v6.6.0

Release v6.5.0

23 Oct 18:24

Choose a tag to compare

  • Features:
    • Added SelectedConnection, SelectedConnections, CanSelectMultipleConnections and CanSelectMultipleItems dependency properties to NodifyEditor
    • Added IsSelected and IsSelectable attached dependency properties to BaseConnection
    • Added PrioritizeBaseConnectionForSelection static field to BaseConnection
    • Added EditorGestures.Connection.Selection
    • Added support for ScrollViewer in NodifyEditor (implements IScrollInfo)
    • Added NodifyEditor.ScrollIncrement dependency property

scrollable

Full Changelog: v6.4.0...v6.5.0

Release v6.4.0

12 Sep 17:12
efa15e0

Choose a tag to compare

  • Features:
    • Added OutlineBrush and OutlineThickness dependency properties to BaseConnection to support increasing the selection area without increasing the stroke thickness
    • Added IsAnimatingDirectionalArrows and DirectionalArrowsAnimationDuration dependency properties to BaseConnection to support controlling the animation from XAML
  • Add OutlineBrush and OutlineThickness to BaseConnection by @miroiu in #133
  • Add IsAnimatingDirectionaArrows and DirectionalArrowsAnimationDuration to BaseConnection by @miroiu in #135

connection-outline

Full Changelog: v6.3.0...v6.4.0

Release v6.3.0

27 Jul 15:56

Choose a tag to compare

  • Features:
    • Added a CuttingLine control that removes intersecting connections
    • Added CuttingLineStyle, CuttingStartedCommand, CuttingCompletedCommand, IsCutting, EnableCuttingLinePreview and CuttingConnectionTypes to NodifyEditor
    • Added EditorGestures.Editor.Cutting and EditorGestures.Editor.CancelAction
  • Bugfixes:
    • Fixed connection styles not inheriting from the BaseConnection style

cutting

Full Changelog: v6.2.0...v6.3.0