diff --git a/capture/button.cpp b/capture/button.cpp index 3894f2ac..e9dbdb7d 100644 --- a/capture/button.cpp +++ b/capture/button.cpp @@ -16,10 +16,12 @@ // along with Flameshot. If not, see . #include "button.h" +#include "capture/capturewidget.h" #include #include #include #include +#include // Button represents a single button of the capture widget, it can enable // multiple functionality. @@ -29,7 +31,7 @@ namespace { } Button::Button(const Type t, QWidget *parent) : QPushButton(parent), - m_buttonType(t) { + m_buttonType(t), m_pressed(false) { initButton(); if (t == Button::Type::selectionIndicator) { @@ -41,7 +43,7 @@ Button::Button(const Type t, QWidget *parent) : QPushButton(parent), } Button::Button(const Button::Type t, const bool isWhite, QWidget *parent) - : QPushButton(parent), m_buttonType(t) { + : QPushButton(parent), m_buttonType(t), m_pressed(false) { initButton(); if (t == Button::Type::selectionIndicator) { @@ -167,12 +169,15 @@ void Button::enterEvent(QEvent *e) { } void Button::leaveEvent(QEvent *e) { + m_pressed = false; Q_EMIT mouseExited(); QWidget::leaveEvent(e); } -#include + void Button::mouseReleaseEvent(QMouseEvent *e) { - if (e->button() == Qt::LeftButton){ + CaptureWidget *parent = (CaptureWidget*)this->parent(); + parent->mouseReleaseEvent(e); + if (e->button() == Qt::LeftButton && m_pressed) { // if (m_buttonType == Type::mouseVisibility) { // QSettings settings; // bool mouseVisible = settings.value("mouseVisible").toBool(); @@ -183,6 +188,11 @@ void Button::mouseReleaseEvent(QMouseEvent *e) { // } Q_EMIT typeEmited(m_buttonType); } + m_pressed = false; +} + +void Button::mousePressEvent(QMouseEvent *) { + m_pressed = true; } void Button::animatedShow() { diff --git a/capture/button.h b/capture/button.h index 72fd9468..850490a5 100644 --- a/capture/button.h +++ b/capture/button.h @@ -69,6 +69,7 @@ protected: virtual void enterEvent(QEvent *); virtual void leaveEvent(QEvent *); virtual void mouseReleaseEvent(QMouseEvent *); + virtual void mousePressEvent(QMouseEvent *); signals: void hovered(); @@ -78,6 +79,7 @@ signals: private: Button(QWidget *parent = 0); Type m_buttonType; + bool m_pressed; QPropertyAnimation *emergeAnimation; diff --git a/capture/capturewidget.h b/capture/capturewidget.h index 39ee3bb7..f30dfeaf 100644 --- a/capture/capturewidget.h +++ b/capture/capturewidget.h @@ -40,6 +40,9 @@ class Screenshot; class CaptureWidget : public QWidget { Q_OBJECT + + friend class Button; + public: explicit CaptureWidget(QWidget *parent = 0); ~CaptureWidget();