mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-07-16 10:03:35 -07:00
Hide Mouse after Timeout in Qt GUI
This commit is contained in:
parent
4f60ceb1d4
commit
a3ae9d4f74
3 changed files with 36 additions and 4 deletions
|
@ -59,6 +59,8 @@ class AVOpenGLWidget: public QOpenGLWidget
|
||||||
AVOpenGLFrameUploader *frame_uploader;
|
AVOpenGLFrameUploader *frame_uploader;
|
||||||
QThread *frame_uploader_thread;
|
QThread *frame_uploader_thread;
|
||||||
|
|
||||||
|
QTimer *mouse_timer;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static QSurfaceFormat CreateSurfaceFormat();
|
static QSurfaceFormat CreateSurfaceFormat();
|
||||||
|
|
||||||
|
@ -69,8 +71,15 @@ class AVOpenGLWidget: public QOpenGLWidget
|
||||||
AVOpenGLFrame *GetBackgroundFrame() { return &frames[1 - frame_fg]; }
|
AVOpenGLFrame *GetBackgroundFrame() { return &frames[1 - frame_fg]; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
void mouseMoveEvent(QMouseEvent *event) override;
|
||||||
|
|
||||||
void initializeGL() override;
|
void initializeGL() override;
|
||||||
void paintGL() override;
|
void paintGL() override;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void ResetMouseTimeout();
|
||||||
|
public slots:
|
||||||
|
void HideMouse();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CHIAKI_AVOPENGLWIDGET_H
|
#endif // CHIAKI_AVOPENGLWIDGET_H
|
||||||
|
|
|
@ -23,6 +23,9 @@
|
||||||
#include <QOpenGLExtraFunctions>
|
#include <QOpenGLExtraFunctions>
|
||||||
#include <QOpenGLDebugLogger>
|
#include <QOpenGLDebugLogger>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
|
#define MOUSE_TIMEOUT_MS 1000
|
||||||
|
|
||||||
//#define DEBUG_OPENGL
|
//#define DEBUG_OPENGL
|
||||||
|
|
||||||
|
@ -96,6 +99,11 @@ AVOpenGLWidget::AVOpenGLWidget(VideoDecoder *decoder, QWidget *parent)
|
||||||
frame_uploader = nullptr;
|
frame_uploader = nullptr;
|
||||||
frame_uploader_thread = nullptr;
|
frame_uploader_thread = nullptr;
|
||||||
frame_fg = 0;
|
frame_fg = 0;
|
||||||
|
|
||||||
|
setMouseTracking(true);
|
||||||
|
mouse_timer = new QTimer(this);
|
||||||
|
connect(mouse_timer, &QTimer::timeout, this, &AVOpenGLWidget::HideMouse);
|
||||||
|
ResetMouseTimeout();
|
||||||
}
|
}
|
||||||
|
|
||||||
AVOpenGLWidget::~AVOpenGLWidget()
|
AVOpenGLWidget::~AVOpenGLWidget()
|
||||||
|
@ -110,6 +118,23 @@ AVOpenGLWidget::~AVOpenGLWidget()
|
||||||
delete frame_uploader_context;
|
delete frame_uploader_context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AVOpenGLWidget::mouseMoveEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
|
QOpenGLWidget::mouseMoveEvent(event);
|
||||||
|
ResetMouseTimeout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AVOpenGLWidget::ResetMouseTimeout()
|
||||||
|
{
|
||||||
|
unsetCursor();
|
||||||
|
mouse_timer->start(MOUSE_TIMEOUT_MS);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AVOpenGLWidget::HideMouse()
|
||||||
|
{
|
||||||
|
setCursor(Qt::BlankCursor);
|
||||||
|
}
|
||||||
|
|
||||||
void AVOpenGLWidget::SwapFrames()
|
void AVOpenGLWidget::SwapFrames()
|
||||||
{
|
{
|
||||||
QMutexLocker lock(&frames_mutex);
|
QMutexLocker lock(&frames_mutex);
|
||||||
|
|
|
@ -126,13 +126,11 @@ void StreamWindow::LoginPINRequested(bool incorrect)
|
||||||
void StreamWindow::ToggleFullscreen()
|
void StreamWindow::ToggleFullscreen()
|
||||||
{
|
{
|
||||||
if(isFullScreen())
|
if(isFullScreen())
|
||||||
{
|
|
||||||
setCursor(Qt::ArrowCursor);
|
|
||||||
showNormal();
|
showNormal();
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setCursor(Qt::BlankCursor);
|
|
||||||
showFullScreen();
|
showFullScreen();
|
||||||
|
if(av_widget)
|
||||||
|
av_widget->HideMouse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue