diff --git a/src/QGCDockWidget.cc b/src/QGCDockWidget.cc index b087abbbaa70742ac87249e48dca6d326d56dd35..7fce8d78564fcb092879e10f12a7bd5c2ae5f9da 100644 --- a/src/QGCDockWidget.cc +++ b/src/QGCDockWidget.cc @@ -25,15 +25,23 @@ #include -QGCDockWidget::QGCDockWidget(const QString& title, QWidget *parent, Qt::WindowFlags flags) : - QDockWidget(title, parent, flags) +QGCDockWidget::QGCDockWidget(const QString& title, QAction* action, QWidget *parent, Qt::WindowFlags flags) : + QDockWidget(title, parent, flags), + _action(action) { - + QDockWidget::DockWidgetFeatures features = QDockWidget::DockWidgetMovable; + + if (action) { + features |= QDockWidget::DockWidgetClosable; + } + setFeatures(features); } // Instead of destroying the widget just hide it void QGCDockWidget::closeEvent(QCloseEvent* event) { + Q_ASSERT(_action); + event->ignore(); - setVisible(false); + _action->trigger(); } diff --git a/src/QGCDockWidget.h b/src/QGCDockWidget.h index ffc2fb1352b59f28a88bda264475849a50d11241..24f6e6a771a46010745f7306191ee12e9ca2caf9 100644 --- a/src/QGCDockWidget.h +++ b/src/QGCDockWidget.h @@ -25,6 +25,7 @@ #define QGCDockWidget_h #include +#include /// @file /// @brief Subclass of QDockWidget so we can intercept the closeEvent. @@ -35,9 +36,12 @@ class QGCDockWidget : public QDockWidget { Q_OBJECT public: - QGCDockWidget(const QString& title, QWidget *parent = 0, Qt::WindowFlags flags = 0); + QGCDockWidget(const QString& title, QAction* action, QWidget *parent = 0, Qt::WindowFlags flags = 0); void closeEvent(QCloseEvent* event); + +private: + QAction* _action; };