]> git.lyx.org Git - lyx.git/commitdiff
#1720 disable document buffer related LFUNs in GUI view if the work area has no focus
authorStephan Witt <switt@lyx.org>
Fri, 8 May 2015 17:09:00 +0000 (19:09 +0200)
committerStephan Witt <switt@lyx.org>
Fri, 8 May 2015 17:09:00 +0000 (19:09 +0200)
src/frontends/qt4/GuiView.cpp
src/frontends/qt4/GuiView.h

index a520b4eb54ae2e2524dbcc17325245d5fcd0b245..52fadcf3ef231d7619ae709f5dee7e8474008747 100644 (file)
@@ -841,6 +841,16 @@ void GuiView::setFocus()
 }
 
 
+bool GuiView::hasFocus() const
+{
+       if (currentWorkArea())
+               return currentWorkArea()->hasFocus();
+       if (currentMainWorkArea())
+               return currentMainWorkArea()->hasFocus();
+       return d.bg_widget_->hasFocus();
+}
+
+
 void GuiView::focusInEvent(QFocusEvent * e)
 {
        LYXERR(Debug::DEBUG, "GuiView::focusInEvent()" << this);
@@ -1699,6 +1709,16 @@ bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
        Buffer * doc_buffer = documentBufferView()
                ? &(documentBufferView()->buffer()) : 0;
 
+       /* 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-related.
+        */
+       if (cmd.origin() == FuncRequest::MENU && !hasFocus()) {
+               buf = 0;
+               doc_buffer = 0;
+       }
+
        // Check whether we need a buffer
        if (!lyxaction.funcHasFlag(cmd.action(), LyXAction::NoBuffer) && !buf) {
                // no, exit directly
index 478e3a191724f4ff7a57143949d496bc27984613..43b9b988a5db8b6f288c62660a196d1c4704467a 100644 (file)
@@ -123,6 +123,7 @@ public:
 
        ///
        void setFocus();
+       bool hasFocus() const;
 
        ///
        void focusInEvent(QFocusEvent * e);