diff --git a/src/pulsatingscience.cpp b/src/pulsatingscience.cpp index e04f6f85c9524b667d4687f2d0f609168f68bad5..c355c0be4830865fcf6566723442e971eb73cb65 100644 --- a/src/pulsatingscience.cpp +++ b/src/pulsatingscience.cpp @@ -20,6 +20,10 @@ #include "pulsatingscience.h" +#ifdef __APPLE__ +#include "/System/Library/Frameworks/Carbon.framework/Versions/A/Headers/Carbon.h" +#endif + PulsatingScience::PulsatingScience(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); @@ -32,7 +36,7 @@ PulsatingScience::PulsatingScience(QWidget *parent) : QMainWindow(parent) // inital status (based on GUI) m_permanentOrbits = ui.actionPermanent_orbits->isChecked(); m_rotationAxesVisible = ui.actionRotationAxes->isChecked(); - m_menuBarVisible = ui.actionMenu_bar->isChecked(); + m_menuBarVisible = ui.actionMenu_bar->isChecked(); m_statusBarVisible = ui.actionStatus_bar->isChecked(); m_animControlVisible = true; m_animControlFloating = ui.dockAnimControl->isFloating(); @@ -438,13 +442,34 @@ void PulsatingScience::updatePulsarSemiMajorAxisValue(double value) void PulsatingScience::toggleHiddenDemoMode() { if(m_hiddenDemoModeActivated) { +#ifdef __APPLE__ + // show Menubar & Dock + SetSystemUIMode(kUIModeNormal, 0); + window()->setWindowFlags(windowFlags() + & ~Qt::FramelessWindowHint + & ~Qt::WindowStaysOnTopHint); + window()->showNormal(); +#endif on_actionMenu_bar_toggled(true); ui.actionMenu_bar->setChecked(true); window()->setWindowState(windowState() & ~Qt::WindowFullScreen); - ui.dockAnimControl->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); + ui.dockAnimControl->setFeatures(QDockWidget::DockWidgetClosable + | QDockWidget::DockWidgetMovable + | QDockWidget::DockWidgetFloatable); m_hiddenDemoModeActivated = false; } else { +#ifdef __APPLE__ + // hide Menubar & Dock + SetSystemUIMode(kUIModeAllHidden, 0); + // don't ever ask my why this works _only_ in exactly this order on the Mac + window()->setWindowFlags(windowFlags() + | Qt::FramelessWindowHint + | Qt::WindowStaysOnTopHint); + window()->showMaximized(); + // might be needed to remove the resize handle on some systems + // window()->setFixedSize(width(), height()); +#endif on_actionMenu_bar_toggled(false); ui.actionMenu_bar->setChecked(false); window()->setWindowState(windowState() | Qt::WindowFullScreen);