#1720 disable document buffer related LFUNs in GUI view if the work area has no focus

This commit is contained in:
Stephan Witt 2015-05-08 19:09:00 +02:00
parent bc8717b297
commit da548dbe30
2 changed files with 21 additions and 0 deletions

View 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

View File

@ -123,6 +123,7 @@ public:
///
void setFocus();
bool hasFocus() const;
///
void focusInEvent(QFocusEvent * e);