From 8fc81d5be799348777225ca5faefb38924b6946f Mon Sep 17 00:00:00 2001 From: Alex Spataru Date: Fri, 17 Dec 2021 02:12:48 -0500 Subject: [PATCH] Use QPointer --- src/UI/WidgetLoader.cpp | 17 ++++++++++++----- src/UI/WidgetLoader.h | 4 +++- src/Widgets/Terminal.cpp | 2 +- src/Widgets/Terminal.h | 2 +- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/UI/WidgetLoader.cpp b/src/UI/WidgetLoader.cpp index 418a8afe..5b38f628 100644 --- a/src/UI/WidgetLoader.cpp +++ b/src/UI/WidgetLoader.cpp @@ -47,7 +47,6 @@ namespace UI WidgetLoader::WidgetLoader(QQuickItem *parent) : QQuickPaintedItem(parent) , m_index(-1) - , m_widget(nullptr) , m_widgetVisible(false) , m_isExternalWindow(false) { @@ -224,6 +223,14 @@ UI::Dashboard::WidgetType WidgetLoader::widgetType() const return UI::Dashboard::getInstance()->widgetType(widgetIndex()); } +/** + * Returns a pointer to the current widget + */ +QWidget* WidgetLoader::widget() const +{ + return m_widget; +} + /** * Changes the visibility & enabled status of the widget */ @@ -381,7 +388,7 @@ void WidgetLoader::processLeaveEvent(QEvent *event) using QWidget::leaveEvent; }; - auto hack = static_cast(m_widget); + auto hack = static_cast(widget()); hack->leaveEvent(event); update(); } @@ -400,7 +407,7 @@ void WidgetLoader::processEnterEvent(QEnterEvent *event) using QWidget::enterEvent; }; - auto hack = static_cast(m_widget); + auto hack = static_cast(widget()); hack->enterEvent(event); update(); } @@ -422,7 +429,7 @@ void WidgetLoader::processMouseEvents(QMouseEvent *event) using QWidget::mouseReleaseEvent; }; - auto hack = static_cast(m_widget); + auto hack = static_cast(widget()); switch (event->type()) { case QEvent::MouseButtonPress: @@ -458,7 +465,7 @@ void WidgetLoader::processWheelEvents(QWheelEvent *event) using QWidget::wheelEvent; }; - static_cast(m_widget)->wheelEvent(event); + static_cast(widget())->wheelEvent(event); update(); } } diff --git a/src/UI/WidgetLoader.h b/src/UI/WidgetLoader.h index b2d5697d..e4a77f76 100644 --- a/src/UI/WidgetLoader.h +++ b/src/UI/WidgetLoader.h @@ -107,6 +107,8 @@ public: bool isExternalWindow() const; UI::Dashboard::WidgetType widgetType() const; + QWidget *widget() const; + public Q_SLOTS: void setVisible(const bool visible); void setWidgetIndex(const int index); @@ -125,8 +127,8 @@ protected: private: int m_index; - QWidget *m_widget; bool m_widgetVisible; bool m_isExternalWindow; + QPointer m_widget; }; } diff --git a/src/Widgets/Terminal.cpp b/src/Widgets/Terminal.cpp index b4b73fb1..8ca8af29 100644 --- a/src/Widgets/Terminal.cpp +++ b/src/Widgets/Terminal.cpp @@ -154,7 +154,7 @@ bool Terminal::event(QEvent *event) */ void Terminal::paint(QPainter *painter) { - if (m_textEdit && painter && isVisible()) + if (m_textEdit && painter) textEdit()->render(painter); } diff --git a/src/Widgets/Terminal.h b/src/Widgets/Terminal.h index 54d0039c..2d3bc7ac 100644 --- a/src/Widgets/Terminal.h +++ b/src/Widgets/Terminal.h @@ -209,7 +209,7 @@ private: bool m_autoscroll; bool m_emulateVt100; bool m_copyAvailable; - QPlainTextEdit *m_textEdit; + QPointer m_textEdit; AnsiEscapeCodeHandler m_escapeCodeHandler; }; }