]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiApplication.cpp
Fix crash noticed by Bennett:
[lyx.git] / src / frontends / qt4 / GuiApplication.cpp
index 09c6d4e086fee58c45acb961552e18b14444feb9..6b0a78adaaa693a76bc20c5eda488552de9cd68b 100644 (file)
@@ -800,6 +800,20 @@ docstring GuiApplication::iconName(FuncRequest const & f, bool unknown)
 }
 
 
+LyXView * GuiApplication::currentWindow() 
+{
+#ifdef Q_WS_MACX
+       /* In LyX/Mac, when a dialog is open, the menus of the
+          application can still be accessed without giving focus to
+          the main window. In this case, we want to disable the menu
+          entries that are buffer or view-related.
+       */
+       if (current_view_ && activeWindow() != current_view_)
+               return 0;
+#endif
+       return current_view_;
+}
+
 
 bool GuiApplication::getStatus(FuncRequest const & cmd, FuncStatus & flag) const
 {
@@ -1012,6 +1026,7 @@ void GuiApplication::resetGui()
        QHash<int, GuiView *>::iterator it;
        for (it = d->views_.begin(); it != d->views_.end(); ++it) {
                GuiView * gv = *it;
+               setCurrentView(gv);
                gv->setLayoutDirection(layoutDirection());
                gv->resetDialogs();
        }
@@ -1443,10 +1458,8 @@ void GuiApplication::unregisterView(GuiView * gv)
 {
        LASSERT(d->views_[gv->id()] == gv, /**/);
        d->views_.remove(gv->id());
-       if (current_view_ == gv) {
+       if (current_view_ == gv)
                current_view_ = 0;
-               theLyXFunc().setLyXView(0);
-       }
 }