From 0e814da91c8e041897a4c3f7e6e9234bbc7c6f7a Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Tue, 17 Jul 2018 16:37:25 +0300 Subject: Move all files under src/ --- src/ui/OverlayWidget.cpp | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/ui/OverlayWidget.cpp (limited to 'src/ui/OverlayWidget.cpp') diff --git a/src/ui/OverlayWidget.cpp b/src/ui/OverlayWidget.cpp new file mode 100644 index 00000000..ccac0116 --- /dev/null +++ b/src/ui/OverlayWidget.cpp @@ -0,0 +1,72 @@ +#include "OverlayWidget.h" +#include + +OverlayWidget::OverlayWidget(QWidget *parent) + : QWidget(parent) +{ + if (parent) { + parent->installEventFilter(this); + setGeometry(overlayGeometry()); + raise(); + } +} + +bool +OverlayWidget::event(QEvent *event) +{ + if (!parent()) + return QWidget::event(event); + + switch (event->type()) { + case QEvent::ParentChange: { + parent()->installEventFilter(this); + setGeometry(overlayGeometry()); + break; + } + case QEvent::ParentAboutToChange: { + parent()->removeEventFilter(this); + break; + } + default: + break; + } + + return QWidget::event(event); +} + +bool +OverlayWidget::eventFilter(QObject *obj, QEvent *event) +{ + switch (event->type()) { + case QEvent::Move: + case QEvent::Resize: + setGeometry(overlayGeometry()); + break; + default: + break; + } + + return QWidget::eventFilter(obj, event); +} + +QRect +OverlayWidget::overlayGeometry() const +{ + QWidget *widget = parentWidget(); + + if (!widget) + return QRect(); + + return widget->rect(); +} + +void +OverlayWidget::paintEvent(QPaintEvent *event) +{ + Q_UNUSED(event); + + QStyleOption opt; + opt.init(this); + QPainter p(this); + style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); +} -- cgit 1.5.1