diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2017-02-26 14:25:43 +0100 | 
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2017-02-26 14:26:14 +0100 | 
| commit | 19ef27d7f3d3b4df0e4c45a4e88d1a63186ffb76 (patch) | |
| tree | 9ee0346f9b737a5fabdefeda19aef208e31fdb91 /api | |
| parent | 4dd645f1d8eee72b02c86346969edbb6452ac42b (diff) | |
{api/base,gui/options}-dialog: prevent closing without signal
Use hide() to avoid emitting idempotent events. There's isVisible() but
no isClosed() or equivalent. Worse yet, close() can return true twice in
a row, despite what docs for `bool QWidget::close()' say.
Diffstat (limited to 'api')
| -rw-r--r-- | api/plugin-api.cpp | 10 | ||||
| -rw-r--r-- | api/plugin-api.hpp | 2 | 
2 files changed, 11 insertions, 1 deletions
diff --git a/api/plugin-api.cpp b/api/plugin-api.cpp index 1bf56200..100902eb 100644 --- a/api/plugin-api.cpp +++ b/api/plugin-api.cpp @@ -11,7 +11,13 @@ ITracker::~ITracker() {}  ITrackerDialog::~ITrackerDialog() {}  plugin_api::detail::BaseDialog::BaseDialog() {} -void plugin_api::detail::BaseDialog::closeEvent(QCloseEvent*) { emit closing(); } + +void plugin_api::detail::BaseDialog::closeEvent(QCloseEvent*) +{ +    if (isVisible()) +        emit closing(); +} +  Metadata::Metadata() {}  IFilter::IFilter() {}  IFilterDialog::IFilterDialog() {} @@ -19,3 +25,5 @@ IProtocol::IProtocol() {}  IProtocolDialog::IProtocolDialog() {}  ITracker::ITracker() {}  ITrackerDialog::ITrackerDialog() {} + +void plugin_api::detail::BaseDialog::done(int) { close(); hide(); } diff --git a/api/plugin-api.hpp b/api/plugin-api.hpp index e9de9dad..4c9dee2f 100644 --- a/api/plugin-api.hpp +++ b/api/plugin-api.hpp @@ -48,6 +48,8 @@ public:      void closeEvent(QCloseEvent *) override;  signals:      void closing(); +private slots: +    void done(int) override;  };  } // ns  | 
