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();