File: cursor-shape-changer.cpp

package info (click to toggle)
obs-advanced-scene-switcher 1.32.8-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 43,492 kB
  • sloc: xml: 297,593; cpp: 147,875; python: 387; sh: 280; ansic: 170; makefile: 33
file content (34 lines) | stat: -rw-r--r-- 819 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "cursor-shape-changer.hpp"

#include <QCursor>
#include <QEvent>
#include <QGuiApplication>

namespace advss {

CursorShapeChanger::CursorShapeChanger(QObject *parent, Qt::CursorShape shape)
	: QObject(parent),
	  _shape(shape)
{
}

bool CursorShapeChanger::eventFilter(QObject *o, QEvent *e)
{
	if ((e->type() == QEvent::HoverEnter || e->type() == QEvent::Enter) &&
	    !_overrideActive) {
		_overrideActive = true;
		QGuiApplication::setOverrideCursor(QCursor(_shape));
	} else if (_overrideActive && e->type() == QEvent::Leave) {
		_overrideActive = false;
		QGuiApplication::restoreOverrideCursor();
	}

	return QObject::eventFilter(o, e);
}

void SetCursorOnWidgetHover(QWidget *widget, Qt::CursorShape shape)
{
	widget->installEventFilter(new CursorShapeChanger(widget, shape));
}

} // namespace advss