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:
David Schulz
2014-12-15 12:39:49 +01:00
parent 97d957e3e3
commit 4b51064b45
3 changed files with 16 additions and 29 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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();
} }