 						self.topConstraint.constant = self.verticalConstant(for: initialPosition,
 																			hostHeight: hostView.frame.height,
 																			height: self.frame.height)
+						self.state = .onHold
 						self.show(edge: edgeToShow, hostView: hostView, isTraversingView: false)
 					} else {
 						self.animation(self.superview!, constraint: self.horizontalConstraint,
 									   constant: positions.start, timing: timingAnim2, options: [.curveEaseOut], finished: {
 										firstStepDone(hasBoomerang)
+										self.state = .onHold
 						})
 					}
 		})

	///- Parameter hostView: The menu's hostView, to calculate the positions
	///- Parameter isTraversingView: Should the indicator traverse the hostView, and stick to the opposite edge ?
	func show(edge: UIRectEdge, hostView: UIView, isTraversingView: Bool) {
		guard let superView = self.superview else { return }
		self.edge = edge
		self.setNeedsDisplay()
		let positions = positionValues(hostView)


		animation(superView, constraint: horizontalConstraint,
				  constant: animationValueOne, timing: isTraversingView ? 0.3 : 0.15, options: [.curveEaseIn], finished: {
					guard self.state != .restoring else { return /*second show animation cancelled, indicator is restoring*/ }
					self.animation(superView, constraint: self.horizontalConstraint,
								   constant: animationValueTwo, timing: 0.2, options: [.curveEaseOut], finished: {
									self.state = .onHold
					})
		})
	}
