diff --git a/plugins/datetime/datetimewidget.cpp b/plugins/datetime/datetimewidget.cpp index e47ab7eee..ef1916bab 100644 --- a/plugins/datetime/datetimewidget.cpp +++ b/plugins/datetime/datetimewidget.cpp @@ -5,6 +5,7 @@ #include #include #include +#include DatetimeWidget::DatetimeWidget(QWidget *parent) : QWidget(parent) @@ -75,6 +76,15 @@ void DatetimeWidget::paintEvent(QPaintEvent *e) painter.drawPixmap(smallNum2Offset, smallNum2); } +void DatetimeWidget::mousePressEvent(QMouseEvent *e) +{ + const QPoint p(e->pos() - rect().center()); + if (p.manhattanLength() < std::min(width(), height()) * 0.8 * 0.5) + return; + + QWidget::mousePressEvent(e); +} + const QPixmap DatetimeWidget::loadSvg(const QString &fileName, const QSize size) { QPixmap pixmap(size); diff --git a/plugins/datetime/datetimewidget.h b/plugins/datetime/datetimewidget.h index 997dc19c6..3162cc5de 100644 --- a/plugins/datetime/datetimewidget.h +++ b/plugins/datetime/datetimewidget.h @@ -13,6 +13,7 @@ public: private: QSize sizeHint() const; void paintEvent(QPaintEvent *e); + void mousePressEvent(QMouseEvent *e); const QPixmap loadSvg(const QString &fileName, const QSize size); }; diff --git a/plugins/disk-mount/diskpluginitem.cpp b/plugins/disk-mount/diskpluginitem.cpp index 875d425c9..6b42cfbd0 100644 --- a/plugins/disk-mount/diskpluginitem.cpp +++ b/plugins/disk-mount/diskpluginitem.cpp @@ -3,6 +3,7 @@ #include #include +#include DiskPluginItem::DiskPluginItem(QWidget *parent) : QWidget(parent), @@ -32,6 +33,15 @@ void DiskPluginItem::resizeEvent(QResizeEvent *e) updateIcon(); } +void DiskPluginItem::mousePressEvent(QMouseEvent *e) +{ + const QPoint p(e->pos() - rect().center()); + if (p.manhattanLength() < std::min(width(), height()) * 0.8 * 0.5) + return; + + QWidget::mousePressEvent(e); +} + QSize DiskPluginItem::sizeHint() const { return QSize(26, 26); diff --git a/plugins/disk-mount/diskpluginitem.h b/plugins/disk-mount/diskpluginitem.h index ccfbba624..00faf7305 100644 --- a/plugins/disk-mount/diskpluginitem.h +++ b/plugins/disk-mount/diskpluginitem.h @@ -19,6 +19,7 @@ public slots: protected: void paintEvent(QPaintEvent *e); void resizeEvent(QResizeEvent *e); + void mousePressEvent(QMouseEvent *e); QSize sizeHint() const; private: diff --git a/plugins/network/item/wireditem.cpp b/plugins/network/item/wireditem.cpp index 688e52c6f..cf462d480 100644 --- a/plugins/network/item/wireditem.cpp +++ b/plugins/network/item/wireditem.cpp @@ -3,6 +3,7 @@ #include "util/imageutil.h" #include +#include WiredItem::WiredItem(const QUuid &deviceUuid) : DeviceItem(deviceUuid), @@ -73,6 +74,18 @@ void WiredItem::resizeEvent(QResizeEvent *e) reloadIcon(); } +void WiredItem::mousePressEvent(QMouseEvent *e) +{ + if (e->button() == Qt::LeftButton) + return QWidget::mousePressEvent(e); + + const QPoint p(e->pos() - rect().center()); + if (p.manhattanLength() < std::min(width(), height()) * 0.8 * 0.5) + return; + + return QWidget::mousePressEvent(e); +} + void WiredItem::reloadIcon() { const Dock::DisplayMode displayMode = qApp->property(PROP_DISPLAY_MODE).value(); diff --git a/plugins/network/item/wireditem.h b/plugins/network/item/wireditem.h index a2120280c..53463b044 100644 --- a/plugins/network/item/wireditem.h +++ b/plugins/network/item/wireditem.h @@ -21,6 +21,7 @@ public: protected: void paintEvent(QPaintEvent *e); void resizeEvent(QResizeEvent *e); + void mousePressEvent(QMouseEvent *e); private: void reloadIcon(); diff --git a/plugins/network/item/wirelessitem.cpp b/plugins/network/item/wirelessitem.cpp index 3cf03c98a..3e51832cb 100644 --- a/plugins/network/item/wirelessitem.cpp +++ b/plugins/network/item/wirelessitem.cpp @@ -3,6 +3,7 @@ #include "util/imageutil.h" #include +#include WirelessItem::WirelessItem(const QUuid &uuid) : DeviceItem(uuid), @@ -51,6 +52,18 @@ void WirelessItem::resizeEvent(QResizeEvent *e) m_icons.clear(); } +void WirelessItem::mousePressEvent(QMouseEvent *e) +{ + if (e->button() == Qt::LeftButton) + return QWidget::mousePressEvent(e); + + const QPoint p(e->pos() - rect().center()); + if (p.manhattanLength() < std::min(width(), height()) * 0.8 * 0.5) + return; + + return QWidget::mousePressEvent(e); +} + const QPixmap WirelessItem::iconPix(const Dock::DisplayMode displayMode, const int size) { QString type; diff --git a/plugins/network/item/wirelessitem.h b/plugins/network/item/wirelessitem.h index 1da804fee..c6200c1b9 100644 --- a/plugins/network/item/wirelessitem.h +++ b/plugins/network/item/wirelessitem.h @@ -22,6 +22,7 @@ public: protected: void paintEvent(QPaintEvent *e); void resizeEvent(QResizeEvent *e); + void mousePressEvent(QMouseEvent *e); private: const QPixmap iconPix(const Dock::DisplayMode displayMode, const int size); diff --git a/plugins/shutdown/pluginwidget.cpp b/plugins/shutdown/pluginwidget.cpp index ecfaafc50..faa6ca014 100644 --- a/plugins/shutdown/pluginwidget.cpp +++ b/plugins/shutdown/pluginwidget.cpp @@ -2,6 +2,7 @@ #include #include +#include PluginWidget::PluginWidget(QWidget *parent) : QWidget(parent), @@ -72,6 +73,18 @@ void PluginWidget::paintEvent(QPaintEvent *e) painter.drawPixmap(rect().center() - pixmap.rect().center(), pixmap); } +void PluginWidget::mousePressEvent(QMouseEvent *e) +{ + if (e->button() == Qt::LeftButton) + return QWidget::mousePressEvent(e); + + const QPoint p(e->pos() - rect().center()); + if (p.manhattanLength() < std::min(width(), height()) * 0.8 * 0.5) + return; + + return QWidget::mousePressEvent(e); +} + void PluginWidget::enterEvent(QEvent *) { m_hover = true; diff --git a/plugins/shutdown/pluginwidget.h b/plugins/shutdown/pluginwidget.h index ca5560fe1..449b9c1ec 100644 --- a/plugins/shutdown/pluginwidget.h +++ b/plugins/shutdown/pluginwidget.h @@ -17,6 +17,7 @@ public: protected: QSize sizeHint() const; void paintEvent(QPaintEvent *e); + void mousePressEvent(QMouseEvent *e); void enterEvent(QEvent *); void leaveEvent(QEvent *); diff --git a/plugins/shutdown/powerstatuswidget.cpp b/plugins/shutdown/powerstatuswidget.cpp index 89923d8dc..19e887f40 100644 --- a/plugins/shutdown/powerstatuswidget.cpp +++ b/plugins/shutdown/powerstatuswidget.cpp @@ -2,6 +2,7 @@ #include #include +#include PowerStatusWidget::PowerStatusWidget(QWidget *parent) : QWidget(parent), @@ -26,6 +27,18 @@ void PowerStatusWidget::paintEvent(QPaintEvent *e) painter.drawPixmap(rect().center() - icon.rect().center(), icon); } +void PowerStatusWidget::mousePressEvent(QMouseEvent *e) +{ + if (e->button() == Qt::LeftButton) + return QWidget::mousePressEvent(e); + + const QPoint p(e->pos() - rect().center()); + if (p.manhattanLength() < std::min(width(), height()) * 0.8 * 0.5) + return; + + return QWidget::mousePressEvent(e); +} + QPixmap PowerStatusWidget::getBatteryIcon() { const int percentage = m_powerInter->batteryPercentage()["Display"]; diff --git a/plugins/shutdown/powerstatuswidget.h b/plugins/shutdown/powerstatuswidget.h index 3ea0a48cd..7ff480e7b 100644 --- a/plugins/shutdown/powerstatuswidget.h +++ b/plugins/shutdown/powerstatuswidget.h @@ -15,6 +15,7 @@ public: protected: QSize sizeHint() const; void paintEvent(QPaintEvent *e); + void mousePressEvent(QMouseEvent *e); private: QPixmap getBatteryIcon(); diff --git a/plugins/sound/sounditem.cpp b/plugins/sound/sounditem.cpp index fc9c291be..2c8f53ab9 100644 --- a/plugins/sound/sounditem.cpp +++ b/plugins/sound/sounditem.cpp @@ -3,6 +3,7 @@ #include #include +#include SoundItem::SoundItem(QWidget *parent) : QWidget(parent), @@ -34,6 +35,18 @@ void SoundItem::resizeEvent(QResizeEvent *e) refershIcon(); } +void SoundItem::mousePressEvent(QMouseEvent *e) +{ + if (e->button() == Qt::LeftButton) + return QWidget::mousePressEvent(e); + + const QPoint p(e->pos() - rect().center()); + if (p.manhattanLength() < std::min(width(), height()) * 0.8 * 0.5) + return; + + return QWidget::mousePressEvent(e); +} + void SoundItem::paintEvent(QPaintEvent *e) { QWidget::paintEvent(e); diff --git a/plugins/sound/sounditem.h b/plugins/sound/sounditem.h index 560d80b60..108f4c90f 100644 --- a/plugins/sound/sounditem.h +++ b/plugins/sound/sounditem.h @@ -18,6 +18,7 @@ public: protected: QSize sizeHint() const; void resizeEvent(QResizeEvent *e); + void mousePressEvent(QMouseEvent *e); void paintEvent(QPaintEvent *e); private slots: