From 208283d710e460e5d185ff775e89f6d431391c0b Mon Sep 17 00:00:00 2001
From: Oliver Bock <oliver.bock@aei.mpg.de>
Date: Thu, 26 Feb 2009 15:06:11 +0100
Subject: [PATCH] Added Bernd's patch for Mac OS X kiosk mode (setting normally
 redundant window states/flags)

---
 src/pulsatingscience.cpp | 29 +++++++++++++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git a/src/pulsatingscience.cpp b/src/pulsatingscience.cpp
index e04f6f8..c355c0b 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);
-- 
GitLab