From 28b8cd5ad157056e69053c91cc6d54736f2872b6 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sun, 30 Apr 2017 02:27:07 +0100 Subject: [PATCH] restore macOS menubar after viewing fullscreen image --- include/ImageOverlayDialog.h | 2 ++ src/ImageOverlayDialog.cc | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/include/ImageOverlayDialog.h b/include/ImageOverlayDialog.h index 87724309..4929c371 100644 --- a/include/ImageOverlayDialog.h +++ b/include/ImageOverlayDialog.h @@ -28,6 +28,8 @@ class ImageOverlayDialog : public QDialog public: ImageOverlayDialog(QPixmap image, QWidget *parent = nullptr); + void reject() override; + protected: void mousePressEvent(QMouseEvent *event) override; void paintEvent(QPaintEvent *event) override; diff --git a/src/ImageOverlayDialog.cc b/src/ImageOverlayDialog.cc index 2e032562..939cba30 100644 --- a/src/ImageOverlayDialog.cc +++ b/src/ImageOverlayDialog.cc @@ -38,6 +38,23 @@ ImageOverlayDialog::ImageOverlayDialog(QPixmap image, QWidget *parent) raise(); } +void ImageOverlayDialog::reject() +{ + // needed on macOS to recover the main menu after the dialog is closed(!) + setWindowState(Qt::WindowNoState); + + // It might be slightly cleaner to do: + // + // #ifdef Q_WS_MACX + // #include + // ShowMenuBar(); + // #endif + // + // ...but there's a chance other platforms might be affected by this too. + + QDialog::reject(); +} + // TODO: Move this into Utils void ImageOverlayDialog::scaleImage(int max_width, int max_height) {