+ case QEvent::WindowStateChange: {
+ QWindowStateChangeEvent * ev = (QWindowStateChangeEvent*)e;
+ bool ofstate = (ev->oldState() & Qt::WindowFullScreen);
+ bool result = QMainWindow::event(e);
+ bool nfstate = (windowState() & Qt::WindowFullScreen);
+ if (!ofstate && nfstate) {
+ LYXERR(Debug::DEBUG, "GuiView: WindowStateChange(): full-screen " << nfstate);
+ // switch to full-screen state
+ if (lyxrc.full_screen_statusbar)
+ statusBar()->hide();
+ if (lyxrc.full_screen_menubar)
+ menuBar()->hide();
+ if (lyxrc.full_screen_toolbars) {
+ ToolbarMap::iterator end = d.toolbars_.end();
+ for (ToolbarMap::iterator it = d.toolbars_.begin(); it != end; ++it)
+ if (it->second->isVisibiltyOn() && it->second->isVisible())
+ it->second->hide();
+ }
+ for (int i = 0; i != d.splitter_->count(); ++i)
+ d.tabWorkArea(i)->setFullScreen(true);
+ setContentsMargins(-2, -2, -2, -2);
+ // bug 5274
+ hideDialogs("prefs", nullptr);
+ } else if (ofstate && !nfstate) {
+ LYXERR(Debug::DEBUG, "GuiView: WindowStateChange(): full-screen " << nfstate);
+ // switch back from full-screen state
+ if (lyxrc.full_screen_statusbar && !statusBar()->isVisible())
+ statusBar()->show();
+ if (lyxrc.full_screen_menubar && !menuBar()->isVisible())
+ menuBar()->show();
+ if (lyxrc.full_screen_toolbars) {
+ ToolbarMap::iterator end = d.toolbars_.end();
+ for (ToolbarMap::iterator it = d.toolbars_.begin(); it != end; ++it)
+ if (it->second->isVisibiltyOn() && !it->second->isVisible())
+ it->second->show();
+ //updateToolbars();
+ }
+ for (int i = 0; i != d.splitter_->count(); ++i)
+ d.tabWorkArea(i)->setFullScreen(false);
+ setContentsMargins(0, 0, 0, 0);
+ }
+ return result;
+ }