forked from qt-creator/qt-creator
Editor: Don't change the focus when setting a new view.
Move the focus logic to activateView. Use activateView when it makes sense. Change-Id: I79ad11eea629fc1aaa194ecdd8995f5965d1b806 Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
This commit is contained in:
@@ -1070,13 +1070,16 @@ void EditorManagerPrivate::closeEditorOrDocument(IEditor *editor)
|
|||||||
void EditorManagerPrivate::activateView(EditorView *view)
|
void EditorManagerPrivate::activateView(EditorView *view)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(view, return);
|
QTC_ASSERT(view, return);
|
||||||
|
QWidget *focusWidget;
|
||||||
if (IEditor *editor = view->currentEditor()) {
|
if (IEditor *editor = view->currentEditor()) {
|
||||||
setCurrentEditor(editor, true);
|
setCurrentEditor(editor, true);
|
||||||
editor->widget()->setFocus();
|
focusWidget = editor->widget();
|
||||||
ICore::raiseWindow(editor->widget());
|
|
||||||
} else {
|
} else {
|
||||||
setCurrentView(view);
|
setCurrentView(view);
|
||||||
|
focusWidget = view;
|
||||||
}
|
}
|
||||||
|
focusWidget->setFocus();
|
||||||
|
ICore::raiseWindow(focusWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorManagerPrivate::restoreEditorState(IEditor *editor)
|
void EditorManagerPrivate::restoreEditorState(IEditor *editor)
|
||||||
@@ -1134,11 +1137,6 @@ void EditorManagerPrivate::setCurrentView(EditorView *view)
|
|||||||
old->update();
|
old->update();
|
||||||
if (view)
|
if (view)
|
||||||
view->update();
|
view->update();
|
||||||
|
|
||||||
if (view && !view->currentEditor()) {
|
|
||||||
view->setFocus();
|
|
||||||
ICore::raiseWindow(view);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EditorArea *EditorManagerPrivate::findEditorArea(const EditorView *view, int *areaIndex)
|
EditorArea *EditorManagerPrivate::findEditorArea(const EditorView *view, int *areaIndex)
|
||||||
@@ -1176,12 +1174,8 @@ void EditorManagerPrivate::closeView(EditorView *view)
|
|||||||
splitter->unsplit();
|
splitter->unsplit();
|
||||||
|
|
||||||
EditorView *newCurrent = splitter->findFirstView();
|
EditorView *newCurrent = splitter->findFirstView();
|
||||||
if (newCurrent) {
|
if (newCurrent)
|
||||||
if (IEditor *e = newCurrent->currentEditor())
|
EditorManagerPrivate::activateView(newCurrent);
|
||||||
EditorManagerPrivate::activateEditor(newCurrent, e);
|
|
||||||
else
|
|
||||||
EditorManagerPrivate::setCurrentView(newCurrent);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorManagerPrivate::emptyView(EditorView *view)
|
void EditorManagerPrivate::emptyView(EditorView *view)
|
||||||
@@ -1552,10 +1546,7 @@ void EditorManagerPrivate::editorAreaDestroyed(QObject *area)
|
|||||||
EditorView *focusView = focusSplitterOrView->findFirstView(); // can be just focusSplitterOrView
|
EditorView *focusView = focusSplitterOrView->findFirstView(); // can be just focusSplitterOrView
|
||||||
QTC_ASSERT(focusView, focusView = newActiveArea->findFirstView());
|
QTC_ASSERT(focusView, focusView = newActiveArea->findFirstView());
|
||||||
QTC_ASSERT(focusView, return);
|
QTC_ASSERT(focusView, return);
|
||||||
if (focusView->currentEditor())
|
EditorManagerPrivate::activateView(focusView);
|
||||||
setCurrentEditor(focusView->currentEditor());
|
|
||||||
else
|
|
||||||
setCurrentView(focusView);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorManagerPrivate::autoSave()
|
void EditorManagerPrivate::autoSave()
|
||||||
@@ -2168,12 +2159,8 @@ bool EditorManager::closeEditors(const QList<IEditor*> &editorsToClose, bool ask
|
|||||||
foreach (IEditor *editor, acceptedEditors)
|
foreach (IEditor *editor, acceptedEditors)
|
||||||
delete editor;
|
delete editor;
|
||||||
|
|
||||||
if (currentView && !currentViewHandled) {
|
if (currentView && !currentViewHandled)
|
||||||
if (IEditor *editor = currentView->currentEditor())
|
EditorManagerPrivate::activateView(currentView);
|
||||||
EditorManagerPrivate::activateEditor(currentView, editor);
|
|
||||||
else
|
|
||||||
EditorManagerPrivate::setCurrentView(currentView);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!currentEditor()) {
|
if (!currentEditor()) {
|
||||||
emit m_instance->currentEditorChanged(0);
|
emit m_instance->currentEditorChanged(0);
|
||||||
|
@@ -97,6 +97,7 @@ public:
|
|||||||
|
|
||||||
static EditorView *viewForEditor(IEditor *editor);
|
static EditorView *viewForEditor(IEditor *editor);
|
||||||
static void setCurrentView(EditorView *view);
|
static void setCurrentView(EditorView *view);
|
||||||
|
static void activateView(EditorView *view);
|
||||||
|
|
||||||
static MakeWritableResult makeFileWritable(IDocument *document);
|
static MakeWritableResult makeFileWritable(IDocument *document);
|
||||||
static void doEscapeKeyFocusMoveMagic();
|
static void doEscapeKeyFocusMoveMagic();
|
||||||
@@ -177,7 +178,6 @@ private:
|
|||||||
static void addEditor(IEditor *editor);
|
static void addEditor(IEditor *editor);
|
||||||
static void removeEditor(IEditor *editor);
|
static void removeEditor(IEditor *editor);
|
||||||
static IEditor *placeEditor(EditorView *view, IEditor *editor);
|
static IEditor *placeEditor(EditorView *view, IEditor *editor);
|
||||||
static void activateView(EditorView *view);
|
|
||||||
static void restoreEditorState(IEditor *editor);
|
static void restoreEditorState(IEditor *editor);
|
||||||
static int visibleDocumentsCount();
|
static int visibleDocumentsCount();
|
||||||
static EditorArea *findEditorArea(const EditorView *view, int *areaIndex = 0);
|
static EditorArea *findEditorArea(const EditorView *view, int *areaIndex = 0);
|
||||||
|
@@ -681,10 +681,7 @@ void SplitterOrView::split(Qt::Orientation orientation)
|
|||||||
otherView->view()->setCloseSplitIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM)));
|
otherView->view()->setCloseSplitIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e)
|
EditorManagerPrivate::activateView(otherView->view());
|
||||||
EditorManagerPrivate::activateEditor(otherView->view(), e);
|
|
||||||
else
|
|
||||||
EditorManagerPrivate::setCurrentView(otherView->view());
|
|
||||||
emit splitStateChanged();
|
emit splitStateChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -785,7 +782,10 @@ void SplitterOrView::unsplit()
|
|||||||
m_layout->setCurrentWidget(m_view);
|
m_layout->setCurrentWidget(m_view);
|
||||||
}
|
}
|
||||||
delete oldSplitter;
|
delete oldSplitter;
|
||||||
EditorManagerPrivate::setCurrentView(findFirstView());
|
if (EditorView *newCurrent = findFirstView())
|
||||||
|
EditorManagerPrivate::activateView(newCurrent);
|
||||||
|
else
|
||||||
|
EditorManagerPrivate::setCurrentView(0);
|
||||||
emit splitStateChanged();
|
emit splitStateChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user