X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiToc.cpp;h=787bbb7058b458efddfa609794727b95ecb02925;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=7443e17c33ee17055b6ebec13cd41c04387410dd;hpb=655f6966124f09407f58cf297e54975fdabf8b91;p=lyx.git diff --git a/src/frontends/qt4/GuiToc.cpp b/src/frontends/qt4/GuiToc.cpp index 7443e17c33..787bbb7058 100644 --- a/src/frontends/qt4/GuiToc.cpp +++ b/src/frontends/qt4/GuiToc.cpp @@ -33,7 +33,7 @@ namespace lyx { namespace frontend { GuiToc::GuiToc(GuiView & parent, Qt::DockWidgetArea area, Qt::WindowFlags flags) - : DockView(parent, "toc", qt_("Outline"), area, flags) + : DockView(parent, "toc", qt_("Outline"), area, flags), is_closing_(false) { widget_ = new TocWidget(parent, this); setWidget(widget_); @@ -48,7 +48,27 @@ GuiToc::~GuiToc() void GuiToc::updateView() { +#ifndef Q_WS_MACX widget_->updateView(); + return; +#endif + + widget_->updateView(); + + // For Mac: switch to a docked TOC in fullscreen mode. + // We use the features() here instead of WindowFlags because + // the latter are not reliable (always returns Qt::Drawer). + if (!(features() & DockWidgetClosable) && lyxview().isFullScreen()) { + setWindowFlags(Qt::Widget); + setFeatures(DockWidgetClosable); + // Setting features hides the dialog, see Qt's doc. + show(); + } else if ((features() & DockWidgetClosable) && !lyxview().isFullScreen()) { + setWindowFlags(Qt::Drawer); + setFeatures(NoDockWidgetFeatures); + // Setting features hides the dialog, see Qt's doc. + show(); + } } @@ -66,7 +86,30 @@ void GuiToc::dispatchParams() void GuiToc::enableView(bool enable) { - widget_->setEnabled(enable); + if (!enable) + // In the opposite case, updateView() will be called anyway. + widget_->updateView(); +} + + +void GuiToc::closeEvent(QCloseEvent * /*event*/) +{ + is_closing_ = true; + ((GuiView *)parent())->updateToolbars(); + is_closing_ = false; +} + + +void GuiToc::doDispatch(Cursor & cur, FuncRequest const & cmd) +{ + widget_->doDispatch(cur, cmd); +} + + +bool GuiToc::getStatus(Cursor & cur, FuncRequest const & cmd, + FuncStatus & status) const +{ + return widget_->getStatus(cur, cmd, status); } @@ -85,4 +128,4 @@ Dialog * createGuiToc(GuiView & lv) } // namespace frontend } // namespace lyx -#include "GuiToc_moc.cpp" +#include "moc_GuiToc.cpp"