@Override
	public void mousePressed(MouseEvent e) {
		if (this.disabled) return;

		Rectangle grabber = this.getGrabber();

		this.grabbing = false;
		boolean signalGrabbingChange = false;

		if (e.getY() >= grabber.y && e.getY() < grabber.y + grabber.height) {
			if (e.getX() >= grabber.x && e.getX() < grabber.x + grabber.width) {
				this.grabbing = true;
				this.dragFlags = 0;
				this.grabOffset = grabber.x - e.getX();
				this.setCurs(Cursor.MOVE_CURSOR);
			}
			else {
				this.grabbing = true;
				this.dragFlags = 0;
				this.grabOffset = grabber.width / -2;
				this.setCurs(Cursor.MOVE_CURSOR);

				signalGrabbingChange = true;

				this.mouseDragged(e);
			}
		}

		if (this.grabbing) {
			this.signalChange(ChangeEvent.CLICKED | this.dragFlags | (signalGrabbingChange ? ChangeEvent.JUMPED : 0));
		}
	}