/// <summary> /// Fires the LayerMoved event. /// </summary> /// <param name="sender">The layer that was moved.</param> /// <param name="e">LayerEventArgs.</param> protected virtual void OnLayerMoved(object sender, LayerMovedEventArgs e) { if (EventsSuspended) { return; } LayerMoved?.Invoke(sender, e); }
/// <summary> /// Moves a layer from one point to another in the frame. /// If the layer index and the new index are the same, nothing is done /// </summary> /// <param name="layerIndex">The index of the layer to swap</param> /// <param name="newIndex">The index of the second layer to swap</param> public void MoveLayer(int layerIndex, int newIndex) { if (layerIndex == newIndex) { return; } // Notify before event BeforeLayerMoved?.Invoke(this, new LayerControllerLayerMovedEventArgs(layerIndex, newIndex)); // Move layer if (layerIndex < newIndex) { // Move layer by swapping it until it is in the new desired place for (int i = layerIndex; i < newIndex; i++) { _frame.SwapLayers(i, i + 1); } } else if (layerIndex > newIndex) { // Move layer by swapping it until it is in the new desired place for (int i = layerIndex; i > newIndex; i--) { _frame.SwapLayers(i, i - 1); } } // Notify after event LayerMoved?.Invoke(this, new LayerControllerLayerMovedEventArgs(layerIndex, newIndex)); // Update active layer index if (ActiveLayerIndex == layerIndex) { ActiveLayerIndex = newIndex; } else if (ActiveLayerIndex == newIndex) { ActiveLayerIndex = layerIndex; } }
private void OnLayerMoved(ILayer layer) { LayerMoved?.Invoke(layer); }