Files
inspectrum/cursor.h
Mike Walters ec7c42a38c Display drag/move mouse pointer when dragging cursors
Enables mouse tracking on PlotView to get mouse move events
even when not dragging.

Passes through Leave events to handle the case where the cursor
is near the edge of the widget and the mouse leaves the widget
without generating a mouse move event that isn't on the cursor.

Passes in mouse cursor shape to Cursor to define whether it should
be a horizontal resize, vertical resize or move (resize all).

Qt handles the case where the cursor is dragged off screen and
does not generate a Leave event while draggin (<3 Qt).
2016-08-12 15:42:24 +01:00

50 lines
1.3 KiB
C++

/*
* Copyright (C) 2016, Mike Walters <mike@flomp.net>
*
* This file is part of inspectrum.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include <QMouseEvent>
#include <QObject>
#include <QPoint>
#include "util.h"
class Cursor : public QObject
{
Q_OBJECT
public:
Cursor(Qt::Orientation orientation, Qt::CursorShape mouseCursorShape, QObject * parent);
int pos();
void setPos(int newPos);
bool mouseEvent(QEvent::Type type, QMouseEvent event);
signals:
void posChanged();
private:
int fromPoint(QPoint point);
bool pointOverCursor(QPoint point);
Qt::Orientation orientation;
Qt::CursorShape cursorShape;
bool dragging = false;
bool cursorOverrided = false;
int cursorPosition = 0;
};