diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 5ddf0b12d21..8a25d5d683b 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -877,13 +877,13 @@ void EditorManager::doEscapeKeyFocusMoveMagic() bool editorViewActive = (focus && focus == editorView->focusWidget()); bool editorViewVisible = editorView->isVisible(); + bool stuffHidden = false; + FindToolBarPlaceHolder *findPane = FindToolBarPlaceHolder::getCurrent(); + if (findPane && findPane->isVisible() && findPane->isUsedByWidget(focus)) { + findPane->hide(); + stuffHidden = true; + } if (!( editorViewVisible && !editorViewActive && editorView->window() == activeWindow )) { - bool stuffHidden = false; - QWidget *findPane = FindToolBarPlaceHolder::getCurrent(); - if (findPane && findPane->isVisible() && findPane->window() == activeWindow) { - findPane->hide(); - stuffHidden = true; - } QWidget *outputPane = OutputPanePlaceHolder::getCurrent(); if (outputPane && outputPane->isVisible() && outputPane->window() == activeWindow) { OutputPaneManager::instance()->slotHide(); @@ -894,9 +894,9 @@ void EditorManager::doEscapeKeyFocusMoveMagic() RightPaneWidget::instance()->setShown(false); stuffHidden = true; } - if (stuffHidden) - return; } + if (stuffHidden) + return; if (!editorViewActive && editorViewVisible) { setFocusToEditorViewAndUnmaximizePanes(editorView); diff --git a/src/plugins/coreplugin/findplaceholder.cpp b/src/plugins/coreplugin/findplaceholder.cpp index 4e0454269a3..3ffc0237392 100644 --- a/src/plugins/coreplugin/findplaceholder.cpp +++ b/src/plugins/coreplugin/findplaceholder.cpp @@ -63,6 +63,20 @@ QWidget *FindToolBarPlaceHolder::owner() const return m_owner; } +/*! + * Returns if \a widget is a subwidget of the place holder's owner + */ +bool FindToolBarPlaceHolder::isUsedByWidget(QWidget *widget) +{ + QWidget *current = widget; + while (current) { + if (current == m_owner) + return true; + current = current->parentWidget(); + } + return false; +} + void FindToolBarPlaceHolder::setWidget(QWidget *widget) { if (m_subWidget) { diff --git a/src/plugins/coreplugin/findplaceholder.h b/src/plugins/coreplugin/findplaceholder.h index 0fba3282ab6..6a80966a746 100644 --- a/src/plugins/coreplugin/findplaceholder.h +++ b/src/plugins/coreplugin/findplaceholder.h @@ -44,6 +44,8 @@ public: explicit FindToolBarPlaceHolder(QWidget *owner, QWidget *parent = 0); ~FindToolBarPlaceHolder(); QWidget *owner() const; + bool isUsedByWidget(QWidget *widget); + void setWidget(QWidget *widget); static FindToolBarPlaceHolder *getCurrent();