parent
c34b0d9c16
commit
bdae96379f
Binary file not shown.
@ -0,0 +1,26 @@
|
||||
#include <QtGlobal>
|
||||
|
||||
#include "mousetap.h"
|
||||
#ifdef Q_OS_WIN32
|
||||
#include "winmousetap.h"
|
||||
#endif
|
||||
#ifdef Q_OS_OSX
|
||||
#include "cocoamousetap.h"
|
||||
#endif
|
||||
|
||||
MouseTap *MouseTap::s_instance = Q_NULLPTR;
|
||||
MouseTap *MouseTap::getInstance()
|
||||
{
|
||||
if (s_instance == Q_NULLPTR) {
|
||||
#ifdef Q_OS_WIN32
|
||||
s_instance = new WinMouseTap();
|
||||
#endif
|
||||
#ifdef Q_OS_OSX
|
||||
s_instance = new CocoaMouseTap();
|
||||
#endif
|
||||
#ifdef Q_OS_LINUX
|
||||
Q_ASSERT(false);
|
||||
#endif
|
||||
}
|
||||
return s_instance;
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
#ifndef MOUSETAP_H
|
||||
#define MOUSETAP_H
|
||||
class QWidget;
|
||||
class MouseTap {
|
||||
public:
|
||||
static MouseTap* getInstance();
|
||||
virtual void initMouseEventTap() = 0;
|
||||
virtual void quitMouseEventTap() = 0;
|
||||
virtual void enableMouseEventTap(QWidget* widget, bool enabled) = 0;
|
||||
|
||||
private:
|
||||
static MouseTap *s_instance;
|
||||
};
|
||||
#endif // MOUSETAP_H
|
||||
@ -0,0 +1,18 @@
|
||||
HEADERS += \
|
||||
$$PWD/mousetap.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/mousetap.cpp
|
||||
|
||||
win32 {
|
||||
HEADERS += $$PWD/winmousetap.h
|
||||
SOURCES += $$PWD/winmousetap.cpp
|
||||
LIBS += -lUser32
|
||||
}
|
||||
|
||||
mac {
|
||||
HEADERS += $$PWD/cocoamousetap.h
|
||||
OBJECTIVE_SOURCES += $$PWD/cocoamousetap.mm
|
||||
LIBS += -framework Appkit
|
||||
QMAKE_CFLAGS += -mmacosx-version-min=10.6
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
#include <Windows.h>
|
||||
#include <QWidget>
|
||||
|
||||
#include "winmousetap.h"
|
||||
|
||||
WinMouseTap::WinMouseTap()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
WinMouseTap::~WinMouseTap()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void WinMouseTap::initMouseEventTap()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void WinMouseTap::quitMouseEventTap()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void WinMouseTap::enableMouseEventTap(QWidget *widget, bool enabled)
|
||||
{
|
||||
if (!widget) {
|
||||
return;
|
||||
}
|
||||
if(enabled) {
|
||||
QRect rc(widget->mapToGlobal(widget->pos())
|
||||
, widget->size());
|
||||
RECT mainRect;
|
||||
mainRect.left = (LONG)rc.left();
|
||||
mainRect.right = (LONG)rc.right();
|
||||
mainRect.top = (LONG)rc.top();
|
||||
mainRect.bottom = (LONG)rc.bottom();
|
||||
ClipCursor(&mainRect);
|
||||
} else {
|
||||
ClipCursor(Q_NULLPTR);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
#ifndef WINMOUSETAP_H
|
||||
#define WINMOUSETAP_H
|
||||
|
||||
#include "mousetap.h"
|
||||
|
||||
class WinMouseTap : public MouseTap
|
||||
{
|
||||
public:
|
||||
WinMouseTap();
|
||||
virtual ~WinMouseTap();
|
||||
|
||||
void initMouseEventTap() override;
|
||||
void quitMouseEventTap() override;
|
||||
void enableMouseEventTap(QWidget* widget, bool enabled) override;
|
||||
};
|
||||
|
||||
#endif // WINMOUSETAP_H
|
||||
@ -1,6 +1 @@
|
||||
mac {
|
||||
HEADERS += $$PWD/cocoamousetap.h
|
||||
OBJECTIVE_SOURCES += $$PWD/cocoamousetap.mm
|
||||
LIBS += -framework Appkit
|
||||
QMAKE_CFLAGS += -mmacosx-version-min=10.6
|
||||
}
|
||||
include ($$PWD/mousetap/mousetap.pri)
|
||||
|
||||
Loading…
Reference in new issue