diff --git a/src/plugins/coreplugin/coreplugin.cpp b/src/plugins/coreplugin/coreplugin.cpp index f589e8703c1ce60d04977ca174973304fb1014d2..0bf12de806e53793034d66bc85747603092b0d76 100644 --- a/src/plugins/coreplugin/coreplugin.cpp +++ b/src/plugins/coreplugin/coreplugin.cpp @@ -85,6 +85,7 @@ bool CorePlugin::initialize(const QStringList &arguments, QString *errorMessage) EditorManager *editorManager = m_mainWindow->editorManager(); m_editMode = new EditMode(editorManager); addObject(m_editMode); + m_mainWindow->modeManager()->activateMode(m_editMode->id()); m_designMode = new DesignMode(editorManager); addObject(m_designMode); @@ -95,6 +96,7 @@ bool CorePlugin::initialize(const QStringList &arguments, QString *errorMessage) void CorePlugin::extensionsInitialized() { m_mainWindow->extensionsInitialized(); + m_mainWindow->modeManager()->switchToDefaultMode(); } void CorePlugin::remoteCommand(const QStringList & /* options */, const QStringList &args) diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 20af0f8f3ee2923ca7ab994a2c23f1cedc94f289..c0e56ac3a8b97d7b3c2295fbe427fd12b015c467 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -971,12 +971,7 @@ Core::IEditor *EditorManager::activateEditor(Core::Internal::EditorView *view, C if (!(flags & NoActivate)) { setCurrentEditor(editor, (flags & IgnoreNavigationHistory)); if (!(flags & NoModeSwitch)) { - const QString preferredMode = editor->preferredMode(); - if (preferredMode.isEmpty() || preferredMode == Core::Constants::MODE_EDIT) { - ensureEditorManagerVisible(); - } else { - ModeManager::instance()->activateMode(preferredMode); - } + switchToPreferedMode(); } if (isVisible()) editor->widget()->setFocus(); @@ -1255,10 +1250,22 @@ QStringList EditorManager::getOpenFileNames() const QString(), &m_d->selectedFilter); } -void EditorManager::ensureEditorManagerVisible() + +/// Empty mode == figure out the correct mode from the editor +/// forcePrefered = true, switch to the mode even if the editor is visible in another mode +/// forcePrefered = false, only switch if it is not visible +void EditorManager::switchToPreferedMode() { - if (!isVisible()) - m_d->m_core->modeManager()->activateMode(Constants::MODE_EDIT); + QString preferedMode; + // Figure out prefered mode for editor + if (m_d->m_currentEditor) + preferedMode = m_d->m_currentEditor->preferredMode(); + + if (preferedMode.isEmpty()) + preferedMode = Constants::MODE_EDIT; + + if (m_d->m_core->modeManager()->currentMode()->id() != preferedMode) + m_d->m_core->modeManager()->activateMode(preferedMode); } IEditor *EditorManager::openEditorWithContents(const QString &editorId, @@ -1613,7 +1620,6 @@ void EditorManager::goBackInNavigationHistory() { currentEditorView()->goBackInNavigationHistory(); updateActions(); - ensureEditorManagerVisible(); return; } @@ -1621,7 +1627,6 @@ void EditorManager::goForwardInNavigationHistory() { currentEditorView()->goForwardInNavigationHistory(); updateActions(); - ensureEditorManagerVisible(); } OpenEditorsWindow *EditorManager::windowPopup() const @@ -1717,7 +1722,6 @@ bool EditorManager::restoreState(const QByteArray &state) m_d->m_splitter->restoreState(splitterstates); // splitting and stuff results in focus trouble, that's why we set the focus again after restoration - ensureEditorManagerVisible(); if (m_d->m_currentEditor) { m_d->m_currentEditor->widget()->setFocus(); } else if (Core::Internal::SplitterOrView *view = currentSplitterOrView()) { diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h index 0dae2ae0b954c59dfdea3e60b09e28b84aa1a481..0de53d38c63f351a3cc9344770d3567b1baa6980 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.h +++ b/src/plugins/coreplugin/editormanager/editormanager.h @@ -126,7 +126,7 @@ public: QStringList getOpenFileNames() const; QString getOpenWithEditorId(const QString &fileName, bool *isExternalEditor = 0) const; - void ensureEditorManagerVisible(); + void switchToPreferedMode(); bool hasEditor(const QString &fileName) const; QList<IEditor *> editorsForFileName(const QString &filename) const; QList<IEditor *> editorsForFile(IFile *file) const; diff --git a/src/plugins/coreplugin/mimedatabase.cpp b/src/plugins/coreplugin/mimedatabase.cpp index ea92354a357c23e18995316a1f16997cb8e0e412..b98f010d39fe2d22e97a43976c607e9d0edfafd5 100644 --- a/src/plugins/coreplugin/mimedatabase.cpp +++ b/src/plugins/coreplugin/mimedatabase.cpp @@ -455,7 +455,7 @@ bool MimeType::setPreferredSuffix(const QString &s) return true; } -static QString formatFilterString(const QString &description, const QList<QRegExp> &globs) +QString MimeType::formatFilterString(const QString &description, const QList<QRegExp> &globs) { QString rc; if (globs.empty()) // Binary files diff --git a/src/plugins/coreplugin/mimedatabase.h b/src/plugins/coreplugin/mimedatabase.h index 13a9d3a370f6090893a4d09ff2f25388794fb69d..751447f6d89ebf57cabf7d01e55a38a311ecae81 100644 --- a/src/plugins/coreplugin/mimedatabase.h +++ b/src/plugins/coreplugin/mimedatabase.h @@ -176,6 +176,8 @@ public: friend QDebug operator<<(QDebug d, const MimeType &mt); + static QString formatFilterString(const QString &description, const QList<QRegExp> &globs); + private: explicit MimeType(const MimeTypeData &d); unsigned matchesFileBySuffix(Internal::FileMatchContext &c) const; diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp index 091bcff4f4fcad49c306dc6997c97719fdc5758d..98c4222c8e580e3b5f5b8343018e4caa52023bac 100644 --- a/src/plugins/coreplugin/modemanager.cpp +++ b/src/plugins/coreplugin/modemanager.cpp @@ -73,6 +73,7 @@ struct ModeManagerPrivate QSignalMapper *m_signalMapper; Context m_addedContexts; int m_oldCurrent; + bool m_switchedToMode; }; ModeManager *ModeManagerPrivate::m_instance = 0; @@ -83,7 +84,8 @@ ModeManagerPrivate::ModeManagerPrivate(Internal::MainWindow *mainWindow, m_mainWindow(mainWindow), m_modeStack(modeStack), m_signalMapper(new QSignalMapper(q)), - m_oldCurrent(-1) + m_oldCurrent(-1), + m_switchedToMode(false) { } @@ -151,6 +153,7 @@ IMode *ModeManager::mode(const QString &id) const void ModeManager::activateMode(const QString &id) { + d->m_switchedToMode = true; const int index = indexOf(id); if (index >= 0) d->m_modeStack->setCurrentIndex(index); @@ -309,6 +312,12 @@ void ModeManager::setFocusToCurrentMode() } } +void ModeManager::switchToDefaultMode() +{ + if (!d->m_switchedToMode) + d->m_modeStack->setCurrentIndex(0); +} + ModeManager *ModeManager::instance() { return ModeManagerPrivate::m_instance; diff --git a/src/plugins/coreplugin/modemanager.h b/src/plugins/coreplugin/modemanager.h index ea0fb71618805b9a80413db4f47ddc9053453a55..e92c927282804f215cad083aee599696df4788a1 100644 --- a/src/plugins/coreplugin/modemanager.h +++ b/src/plugins/coreplugin/modemanager.h @@ -66,6 +66,8 @@ public: void addProjectSelector(QAction *action); void addWidget(QWidget *widget); + void switchToDefaultMode(); + signals: void currentModeAboutToChange(Core::IMode *mode); diff --git a/src/plugins/coreplugin/sidebar.cpp b/src/plugins/coreplugin/sidebar.cpp index e7cf5f1222bc745f3b2b9978985beafa38d999a3..bd8429fc20643bc96c314a652f8c3e3698846b72 100644 --- a/src/plugins/coreplugin/sidebar.cpp +++ b/src/plugins/coreplugin/sidebar.cpp @@ -325,22 +325,21 @@ SideBarWidget::SideBarWidget(SideBar *sideBar, const QString &id) m_toolbar->setContentsMargins(0, 0, 0, 0); m_toolbar->addWidget(m_comboBox); - m_splitButton = new QToolButton; - m_splitButton->setIcon(QIcon(QLatin1String(Constants::ICON_SPLIT_HORIZONTAL))); - m_splitButton->setToolTip(tr("Split")); - connect(m_splitButton, SIGNAL(clicked(bool)), this, SIGNAL(splitMe())); - - m_closeButton = new QToolButton; - m_closeButton->setIcon(QIcon(QLatin1String(Constants::ICON_CLOSE))); - m_closeButton->setToolTip(tr("Close")); - - connect(m_closeButton, SIGNAL(clicked(bool)), this, SIGNAL(closeMe())); - QWidget *spacerItem = new QWidget(this); spacerItem->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum); m_toolbar->addWidget(spacerItem); - m_splitAction = m_toolbar->addWidget(m_splitButton); - m_toolbar->addWidget(m_closeButton); + + m_splitAction = new QAction(tr("Split"), m_toolbar); + m_splitAction->setToolTip(tr("Split")); + m_splitAction->setIcon(QIcon(QLatin1String(Constants::ICON_SPLIT_HORIZONTAL))); + connect(m_splitAction, SIGNAL(triggered()), this, SIGNAL(splitMe())); + m_toolbar->addAction(m_splitAction); + + QAction *closeAction = new QAction(tr("Close"), m_toolbar); + closeAction->setToolTip(tr("Close")); + closeAction->setIcon(QIcon(QLatin1String(Constants::ICON_CLOSE))); + connect(closeAction, SIGNAL(triggered()), this, SIGNAL(closeMe())); + m_toolbar->addAction(closeAction); QVBoxLayout *lay = new QVBoxLayout(); lay->setMargin(0); @@ -427,7 +426,7 @@ void SideBarWidget::updateAvailableItems() idx = 0; m_comboBox->setCurrentIndex(idx); - m_splitButton->setEnabled(titleList.count() > 1); + m_splitAction->setEnabled(titleList.count() > 1); m_comboBox->blockSignals(blocked); } diff --git a/src/plugins/coreplugin/sidebar.h b/src/plugins/coreplugin/sidebar.h index 6ac82f8d403b8cf174a8dbabb634bb01b8556c01..e379f3cb6dbdcb7671f757ae0aacb7a61243b58f 100644 --- a/src/plugins/coreplugin/sidebar.h +++ b/src/plugins/coreplugin/sidebar.h @@ -179,8 +179,6 @@ private: QAction *m_splitAction; QList<QAction *> m_addedToolBarActions; SideBar *m_sideBar; - QToolButton *m_splitButton; - QToolButton *m_closeButton; }; class ComboBox : public QComboBox diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index c13b3da5f1bd27798050fb4335ed1f84a8d6b82a..40294cde5ea5ebc42cdd8af1fe3822c796d8fefc 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -375,6 +375,9 @@ struct CanonicalSymbol }; + +int numberOfClosedEditors = 0; + } // end of anonymous namespace CPPEditorEditable::CPPEditorEditable(CPPEditor *editor) @@ -428,6 +431,12 @@ CPPEditor::~CPPEditor() m_semanticHighlighter->abort(); m_semanticHighlighter->wait(); + + ++numberOfClosedEditors; + if (numberOfClosedEditors == 5) { + m_modelManager->GC(); + numberOfClosedEditors = 0; + } } TextEditor::BaseTextEditorEditable *CPPEditor::createEditableInterface() diff --git a/src/plugins/cpptools/cpplocatorfilter.cpp b/src/plugins/cpptools/cpplocatorfilter.cpp index 34c696a15d8aa621b9da6d09e546e65dafdf5857..2b10afdce60f1518f0f4bab24cc39b95526f44b1 100644 --- a/src/plugins/cpptools/cpplocatorfilter.cpp +++ b/src/plugins/cpptools/cpplocatorfilter.cpp @@ -56,7 +56,7 @@ CppLocatorFilter::~CppLocatorFilter() void CppLocatorFilter::onDocumentUpdated(CPlusPlus::Document::Ptr doc) { - m_searchList[doc->fileName()] = Info(doc); + m_searchList[doc->fileName()] = search(doc); } void CppLocatorFilter::onAboutToRemoveFiles(const QStringList &files) @@ -88,20 +88,12 @@ QList<Locator::FilterEntry> CppLocatorFilter::matchesFor(const QString &origEntr return goodEntries; bool hasWildcard = (entry.contains(asterisk) || entry.contains('?')); - QMutableMapIterator<QString, Info> it(m_searchList); + QHashIterator<QString, QList<ModelItemInfo> > it(m_searchList); while (it.hasNext()) { it.next(); - Info info = it.value(); - if (info.dirty) { - info.dirty = false; - info.items = search(info.doc); - it.setValue(info); - } - - QList<ModelItemInfo> items = info.items; - - foreach (ModelItemInfo info, items) { + const QList<ModelItemInfo> items = it.value(); + foreach (const ModelItemInfo &info, items) { if ((hasWildcard && regexp.exactMatch(info.symbolName)) || (!hasWildcard && matcher.indexIn(info.symbolName) != -1)) { diff --git a/src/plugins/cpptools/cpplocatorfilter.h b/src/plugins/cpptools/cpplocatorfilter.h index 4c4df83a236f5ad17f990e3eaf69d095b8f06ced..7b13adc6c7fa83b66cf4cd47b4b63910be89678e 100644 --- a/src/plugins/cpptools/cpplocatorfilter.h +++ b/src/plugins/cpptools/cpplocatorfilter.h @@ -31,7 +31,6 @@ #define CPPLOCATORFILTER_H #include "searchsymbols.h" - #include <locator/ilocatorfilter.h> namespace CppTools { @@ -63,16 +62,7 @@ private slots: private: CppModelManager *m_manager; - struct Info { - Info(): dirty(true) {} - Info(CPlusPlus::Document::Ptr doc): doc(doc), dirty(true) {} - - CPlusPlus::Document::Ptr doc; - QList<ModelItemInfo> items; - bool dirty; - }; - - QMap<QString, Info> m_searchList; + QHash<QString, QList<ModelItemInfo> > m_searchList; QList<ModelItemInfo> m_previousResults; bool m_forceNewSearchList; QString m_previousEntry; diff --git a/src/plugins/cpptools/cpptoolsplugin.cpp b/src/plugins/cpptools/cpptoolsplugin.cpp index 1595fd231cda234c4d39854f3e1e265ea0f73ad2..90d234560b629d390c7b235d343259d31560eb7d 100644 --- a/src/plugins/cpptools/cpptoolsplugin.cpp +++ b/src/plugins/cpptools/cpptoolsplugin.cpp @@ -170,10 +170,8 @@ void CppToolsPlugin::switchHeaderSource() Core::EditorManager *editorManager = Core::EditorManager::instance(); Core::IEditor *editor = editorManager->currentEditor(); QString otherFile = correspondingHeaderOrSource(editor->file()->fileName()); - if (!otherFile.isEmpty()) { + if (!otherFile.isEmpty()) editorManager->openEditor(otherFile); - editorManager->ensureEditorManagerVisible(); - } } QFileInfo CppToolsPlugin::findFile(const QDir &dir, const QString &name, diff --git a/src/plugins/cpptools/searchsymbols.cpp b/src/plugins/cpptools/searchsymbols.cpp index 828f0ce2efb9378968e43f19826f7105bae784c8..01aecaa236ddec4cac2eb28670fdd9d0da56a634 100644 --- a/src/plugins/cpptools/searchsymbols.cpp +++ b/src/plugins/cpptools/searchsymbols.cpp @@ -67,6 +67,7 @@ QList<ModelItemInfo> SearchSymbols::operator()(Document::Ptr doc, const QString accept(doc->globalSymbolAt(i)); } (void) switchScope(previousScope); + strings.clear(); return items; } @@ -216,10 +217,17 @@ void SearchSymbols::appendItem(const QString &name, QStringList fullyQualifiedName; foreach (const Name *name, LookupContext::fullyQualifiedName(symbol)) fullyQualifiedName.append(overview.prettyName(name)); + + QString path = m_paths.value(symbol->fileId(), QString()); + if (path.isEmpty()) { + path = QString::fromUtf8(symbol->fileName(), symbol->fileNameLength()); + m_paths.insert(symbol->fileId(), path); + } + const QIcon icon = icons.iconForSymbol(symbol); items.append(ModelItemInfo(name, info, type, fullyQualifiedName, - QString::fromUtf8(symbol->fileName(), symbol->fileNameLength()), + path, symbol->line(), symbol->column() - 1, // 1-based vs 0-based column icon)); diff --git a/src/plugins/cpptools/searchsymbols.h b/src/plugins/cpptools/searchsymbols.h index 9a08b4dced29deed3704d8fbf81ae8d9cc113129..5b61fe783ba429d774a02642a22f8717491de675 100644 --- a/src/plugins/cpptools/searchsymbols.h +++ b/src/plugins/cpptools/searchsymbols.h @@ -40,6 +40,7 @@ #include <QMetaType> #include <QString> #include <QSet> +#include <QHash> #include <functional> @@ -66,33 +67,33 @@ struct ModelItemInfo const QIcon &icon) : symbolName(symbolName), symbolType(symbolType), - type(type), fullyQualifiedName(fullyQualifiedName), fileName(fileName), + icon(icon), + type(type), line(line), - column(column), - icon(icon) + column(column) { } ModelItemInfo(const ModelItemInfo &otherInfo) : symbolName(otherInfo.symbolName), symbolType(otherInfo.symbolType), - type(otherInfo.type), fullyQualifiedName(otherInfo.fullyQualifiedName), fileName(otherInfo.fileName), + icon(otherInfo.icon), + type(otherInfo.type), line(otherInfo.line), - column(otherInfo.column), - icon(otherInfo.icon) + column(otherInfo.column) { } QString symbolName; QString symbolType; - ItemType type; QStringList fullyQualifiedName; QString fileName; + QIcon icon; + ItemType type; int line; int column; - QIcon icon; }; class SearchSymbols: public std::unary_function<CPlusPlus::Document::Ptr, QList<ModelItemInfo> >, @@ -152,6 +153,7 @@ private: CPlusPlus::Icons icons; QList<ModelItemInfo> items; SymbolTypes symbolsToSearchFor; + QHash<const CPlusPlus::StringLiteral *, QString> m_paths; bool separateScope; }; diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 4bca46849aea47f88d7141cf0635599e9cb72b3c..61dcdf2b9459aa4080b28c060cc2667bd02c0939 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -111,6 +111,7 @@ DebuggerStartParameters::DebuggerStartParameters() breakAtMain(false), qmlServerAddress("127.0.0.1"), qmlServerPort(0), + useServerStartScript(false), toolChainType(ToolChain::UNKNOWN), startMode(NoStartMode), executableUid(0) @@ -144,6 +145,7 @@ QDebug operator<<(QDebug str, const DebuggerStartParameters &sp) << " remoteChannel=" << sp.remoteChannel << " remoteArchitecture=" << sp.remoteArchitecture << " symbolFileName=" << sp.symbolFileName + << " useServerStartScript=" << sp.useServerStartScript << " serverStartScript=" << sp.serverStartScript << " toolchain=" << sp.toolChainType << '\n'; return str; diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 551c5daf46b6ced8aaddf268198ca8ab2fd22399..bc6a57498e82d922391e5d28ebe2830fc5ffa871 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -85,6 +85,7 @@ public: QString remoteChannel; QString remoteArchitecture; QString symbolFileName; + bool useServerStartScript; QString serverStartScript; QString sysRoot; QByteArray remoteDumperLib; diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 2a27a8a96225429437429c1d24f5623f2609dff1..e72e48090c97b49c60296538815589a1ceeb3809 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -1764,7 +1764,7 @@ void DebuggerPluginPrivate::attachExternalApplication sp.displayName = tr("Process %1").arg(pid); sp.executable = binary; sp.crashParameter = crashParameter; - sp.startMode = crashParameter.isEmpty() ? AttachExternal:AttachCrashedExternal; + sp.startMode = crashParameter.isEmpty() ? AttachExternal : AttachCrashedExternal; DebuggerRunControl *rc = createDebugger(sp); startDebugger(rc); } @@ -1844,8 +1844,8 @@ void DebuggerPluginPrivate::startRemoteApplication() if (!sp.debuggerCommand.isEmpty()) sp.toolChainType = ToolChain::INVALID; sp.startMode = AttachToRemote; - if (dlg.useServerStartScript()) - sp.serverStartScript = dlg.serverStartScript(); + sp.useServerStartScript = dlg.useServerStartScript(); + sp.serverStartScript = dlg.serverStartScript(); sp.sysRoot = dlg.sysRoot(); startDebugger(createDebugger(sp)); } diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 942ccf713b9e162fbfde1141cf125420b4297475..19890fc0acc061a3c7409b14dfda3f88641851da 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -802,7 +802,15 @@ void GdbEngine::flushCommand(const GdbCommand &cmd0) m_gdbAdapter->write(cmd.command + "\r\n"); - m_commandTimer->start(); + // Start Watchdog. + if (m_commandTimer->interval() <= 20000) + m_commandTimer->setInterval(commandTimeoutTime()); + // The process can die for external reason between the "-gdb-exit" was + // sent and a response could be retrieved. We don't want the watchdog + // to bark in that case since the only possible outcome is a dead + // process anyway. + if (cmd.command != "-gdb-exit") + m_commandTimer->start(); //if (cmd.flags & LosesChild) // setState(InferiorShutdownRequested); @@ -4012,15 +4020,12 @@ bool GdbEngine::startGdb(const QStringList &args, const QString &gdb, const QStr gdbProc()->start(m_gdb, gdbArgs); if (!gdbProc()->waitForStarted()) { - const QString msg = tr("Unable to start gdb '%1': %2") - .arg(m_gdb, gdbProc()->errorString()); + const QString msg = errorMessage(QProcess::FailedToStart); handleAdapterStartFailed(msg, settingsIdHint); return false; } showMessage(_("GDB STARTED, INITIALIZING IT")); - m_commandTimer->setInterval(commandTimeoutTime()); - postCommand("show version", CB(handleShowVersion)); //postCommand("-enable-timings"); @@ -4128,19 +4133,23 @@ bool GdbEngine::checkDebuggingHelpers() void GdbEngine::handleGdbError(QProcess::ProcessError error) { - showMessage(_("HANDLE GDB ERROR: ") + errorMessage(error)); + const QString msg = errorMessage(error); + showMessage(_("HANDLE GDB ERROR: ") + msg); + // Show a message box for asynchroneously reported issues. switch (error) { + case QProcess::FailedToStart: + // This should be handled by the code trying to start the process. + break; case QProcess::Crashed: - break; // will get a processExited() as well - // impossible case QProcess::FailedToStart: + // This will get a processExited() as well. + break; case QProcess::ReadError: case QProcess::WriteError: case QProcess::Timedout: default: //gdbProc()->kill(); //setState(EngineShutdownRequested, true); - showMessageBox(QMessageBox::Critical, tr("Gdb I/O Error"), - errorMessage(error)); + showMessageBox(QMessageBox::Critical, tr("Gdb I/O Error"), msg); break; } } diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp index 0d5f73140392438eeb3dd9a835988ecc19bc2005..824b5e78db808ffb7b361b1bcc8333bb123e1900 100644 --- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp +++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp @@ -88,6 +88,10 @@ void RemoteGdbServerAdapter::startAdapter() { QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state()); showMessage(_("TRYING TO START ADAPTER")); + if (!startParameters().useServerStartScript) { + handleSetupDone(); + return; + } if (startParameters().serverStartScript.isEmpty()) { showMessage(_("No server start script given. "), StatusBar); emit requestSetup(); @@ -160,6 +164,11 @@ void RemoteGdbServerAdapter::setupInferior() { QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state()); + QString fileName; + if (!startParameters().executable.isEmpty()) { + QFileInfo fi(startParameters().executable); + fileName = fi.absoluteFilePath(); + } m_engine->postCommand("set architecture " + startParameters().remoteArchitecture.toLatin1()); m_engine->postCommand("set sysroot " @@ -173,8 +182,13 @@ void RemoteGdbServerAdapter::setupInferior() } m_engine->postCommand("set target-async on", CB(handleSetTargetAsync)); - QFileInfo fi(startParameters().executable); - QString fileName = fi.absoluteFilePath(); + + if (fileName.isEmpty()) { + showMessage(tr("No symbol file given."), StatusBar); + callTargetRemote(); + return; + } + m_engine->postCommand("-file-exec-and-symbols \"" + fileName.toLocal8Bit() + '"', CB(handleFileExecAndSymbols)); @@ -191,22 +205,27 @@ void RemoteGdbServerAdapter::handleFileExecAndSymbols(const GdbResponse &respons { QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state()); if (response.resultClass == GdbResultDone) { - //m_breakHandler->clearBreakMarkers(); - - // "target remote" does three things: - // (1) connects to the gdb server - // (2) starts the remote application - // (3) stops the remote application (early, e.g. in the dynamic linker) - QString channel = startParameters().remoteChannel; - m_engine->postCommand("target remote " + channel.toLatin1(), - CB(handleTargetRemote)); + callTargetRemote(); } else { - QString msg = tr("Starting remote executable failed:\n"); + QString msg = tr("Reading debug information failed:\n"); msg += QString::fromLocal8Bit(response.data.findChild("msg").data()); m_engine->notifyInferiorSetupFailed(msg); } } +void RemoteGdbServerAdapter::callTargetRemote() +{ + //m_breakHandler->clearBreakMarkers(); + + // "target remote" does three things: + // (1) connects to the gdb server + // (2) starts the remote application + // (3) stops the remote application (early, e.g. in the dynamic linker) + QString channel = startParameters().remoteChannel; + m_engine->postCommand("target remote " + channel.toLatin1(), + CB(handleTargetRemote)); +} + void RemoteGdbServerAdapter::handleTargetRemote(const GdbResponse &record) { QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state()); diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.h b/src/plugins/debugger/gdb/remotegdbserveradapter.h index fa4f8c6d2de7b747a787bd93a1cd86b5e5741b92..7eb89200c795eba3bb2c21693ad4c4d261d3c059 100644 --- a/src/plugins/debugger/gdb/remotegdbserveradapter.h +++ b/src/plugins/debugger/gdb/remotegdbserveradapter.h @@ -75,6 +75,7 @@ private: void handleSetTargetAsync(const GdbResponse &response); void handleFileExecAndSymbols(const GdbResponse &response); + void callTargetRemote(); void handleTargetRemote(const GdbResponse &response); const int m_toolChainType; diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index e549e6d48328a43f0f3e44228d7e031043e0f62f..bf881a97292c97e15ca55f490aafd51a51948d51 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -679,7 +679,6 @@ Core::IEditor *GitPlugin::openSubmitEditor(const QString &fileName, const Commit Core::IEditor *editor = m_core->editorManager()->openEditor(fileName, QLatin1String(Constants::GITSUBMITEDITOR_ID)); if (Git::Constants::debug) qDebug() << Q_FUNC_INFO << fileName << editor; - m_core->editorManager()->ensureEditorManagerVisible(); GitSubmitEditor *submitEditor = qobject_cast<GitSubmitEditor*>(editor); QTC_ASSERT(submitEditor, return 0); // The actions are for some reason enabled by the context switching diff --git a/src/plugins/helloworld/HelloWorld.pluginspec b/src/plugins/helloworld/HelloWorld.pluginspec index 7a120286ce23a7014e12c990ff629f1392520614..8910b999d8df3f06244784c0a521cd7aa2720fb2 100644 --- a/src/plugins/helloworld/HelloWorld.pluginspec +++ b/src/plugins/helloworld/HelloWorld.pluginspec @@ -1,4 +1,4 @@ -<plugin name="HelloWorld" version="2.0.90" compatVersion="2.0.90"> +<plugin name="HelloWorld" version="2.0.90" compatVersion="2.0.90" experimental="true"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> diff --git a/src/plugins/helloworld/helloworldplugin.cpp b/src/plugins/helloworld/helloworldplugin.cpp index 18485ada40440a5c9841e810308c315f2125e79d..14ca96b67b144cfe0a5bd0353571d9e90a8ffc37 100644 --- a/src/plugins/helloworld/helloworldplugin.cpp +++ b/src/plugins/helloworld/helloworldplugin.cpp @@ -30,6 +30,7 @@ #include "helloworldplugin.h" #include <coreplugin/actionmanager/actionmanager.h> +#include <coreplugin/actionmanager/actioncontainer.h> #include <coreplugin/basemode.h> #include <coreplugin/coreconstants.h> #include <coreplugin/icore.h> @@ -77,9 +78,7 @@ bool HelloWorldPlugin::initialize(const QStringList &arguments, QString *error_m // Create a unique context id for our own view, that will be used for the // menu entry later. - QList<int> context = QList<int>() - << core->uniqueIDManager()->uniqueIdentifier( - QLatin1String("HelloWorld.MainView")); + Core::Context context("HelloWorld.MainView"); // Create an action to be triggered by a menu entry QAction *helloWorldAction = new QAction(tr("Say \"&Hello World!\""), this); diff --git a/src/plugins/locator/filesystemfilter.cpp b/src/plugins/locator/filesystemfilter.cpp index 6c2d5c8422c689a1e6854ac7dbc3b63096b366a6..6ef07bdbaec0cbc784b6fe685dd74ea340dc0425 100644 --- a/src/plugins/locator/filesystemfilter.cpp +++ b/src/plugins/locator/filesystemfilter.cpp @@ -103,7 +103,6 @@ void FileSystemFilter::accept(FilterEntry selection) const return; } m_editorManager->openEditor(selection.internalData.toString()); - m_editorManager->ensureEditorManagerVisible(); } bool FileSystemFilter::openConfigDialog(QWidget *parent, bool &needsRefresh) diff --git a/src/plugins/locator/locatorwidget.cpp b/src/plugins/locator/locatorwidget.cpp index 8f29bbba7a19b94c1645c5ce6a6a13eae3924325..0ee99048ea07d7ef59c0aba86b14fda438a6fa22 100644 --- a/src/plugins/locator/locatorwidget.cpp +++ b/src/plugins/locator/locatorwidget.cpp @@ -439,7 +439,6 @@ static void filter_helper(QFutureInterface<FilterEntry> &entries, QList<ILocator foreach (const FilterEntry &entry, filter->matchesFor(searchText)) { if (checkDuplicates && alreadyAdded.contains(entry)) continue; - //entries.append(entry); entries.reportResult(entry); if (checkDuplicates) alreadyAdded.insert(entry); @@ -457,7 +456,6 @@ void LocatorWidget::updateCompletionList(const QString &text) QFuture<FilterEntry> future = QtConcurrent::run(filter_helper, filters, searchText); m_entriesWatcher->setFuture(future); - future.waitForFinished(); } void LocatorWidget::updateEntries() diff --git a/src/plugins/locator/opendocumentsfilter.cpp b/src/plugins/locator/opendocumentsfilter.cpp index 4102d8e0d179a1280b796f560b28610527a056ec..535d670e4703a053011e189d255aa7b725c9e098 100644 --- a/src/plugins/locator/opendocumentsfilter.cpp +++ b/src/plugins/locator/opendocumentsfilter.cpp @@ -103,5 +103,4 @@ void OpenDocumentsFilter::accept(FilterEntry selection) const return; } m_editorManager->openEditor(selection.internalData.toString()); - m_editorManager->ensureEditorManagerVisible(); } diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp index 63a8ac4292ca9a28474e242750beca081710f2e6..1b21bece0906d141da2761a31e28f761e253c44b 100644 --- a/src/plugins/mercurial/mercurialplugin.cpp +++ b/src/plugins/mercurial/mercurialplugin.cpp @@ -599,8 +599,6 @@ void MercurialPlugin::showCommitWidget(const QList<QPair<QString, QString> > &st return; } - core->editorManager()->ensureEditorManagerVisible(); - CommitEditor *commitEditor = qobject_cast<CommitEditor *>(editor); if (!commitEditor) { diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index c338cdd59df6b280733f095f7bf725e12b9758eb..35067f4bda8ac0628e8b1b11902350d80edeb9b3 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -674,7 +674,6 @@ Core::IEditor *PerforcePlugin::openPerforceSubmitEditor(const QString &fileName, { Core::EditorManager *editorManager = Core::EditorManager::instance(); Core::IEditor *editor = editorManager->openEditor(fileName, Constants::PERFORCE_SUBMIT_EDITOR_ID); - editorManager->ensureEditorManagerVisible(); PerforceSubmitEditor *submitEditor = static_cast<PerforceSubmitEditor*>(editor); submitEditor->restrictToProjectFiles(depotFileNames); submitEditor->registerActions(m_undoAction, m_redoAction, m_submitCurrentLogAction, m_diffSelectedFiles); diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index 312c25941c93a3845cf36d6e60dcbde4badb2151..b42033881bb78e847009fb7d5bd6b90981648d96 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -23,7 +23,7 @@ SUBDIRS = plugin_coreplugin \ plugin_locator \ plugin_debugger \ # plugin_qtestlib \ # this seems to be dead -# plugin_helloworld \ # sample plugin + plugin_helloworld \ # sample plugin plugin_help \ # plugin_regexp \ # don't know what to do with this plugin_cpaster \ diff --git a/src/plugins/projectexplorer/customwizard/customwizard.cpp b/src/plugins/projectexplorer/customwizard/customwizard.cpp index 7ab2a611be17fb6ecb8a1ea5704ab47414cc25fe..7f4c5107b6169044a4e6b7d573f83837eba988a4 100644 --- a/src/plugins/projectexplorer/customwizard/customwizard.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizard.cpp @@ -189,7 +189,7 @@ Core::GeneratedFiles CustomWizard::generateFiles(const QWizard *dialog, QString QTC_ASSERT(cwp, return Core::GeneratedFiles()) CustomWizardContextPtr ctx = context(); - ctx->targetPath = cwp->path(); + ctx->path = ctx->targetPath = cwp->path(); ctx->replacements = replacementMap(dialog); if (CustomWizardPrivate::verbose) { QString logText; @@ -493,19 +493,14 @@ Core::GeneratedFiles CustomProjectWizard::generateFiles(const QWizard *w, QStrin QTC_ASSERT(dialog, return Core::GeneratedFiles()) // Add project name as macro. Path is here under project directory CustomWizardContextPtr ctx = context(); - ctx->targetPath = dialog->path() + QLatin1Char('/') + dialog->projectName(); + ctx->path = dialog->path(); + ctx->targetPath = ctx->path + QLatin1Char('/') + dialog->projectName(); FieldReplacementMap fieldReplacementMap = replacementMap(dialog); fieldReplacementMap.insert(QLatin1String("ProjectName"), dialog->projectName()); ctx->replacements = fieldReplacementMap; if (CustomWizardPrivate::verbose) qDebug() << "CustomProjectWizard::generateFiles" << dialog << ctx->targetPath << ctx->replacements; const Core::GeneratedFiles generatedFiles = generateWizardFiles(errorMessage); - // Find the project file and store in context - foreach(const Core::GeneratedFile &f, generatedFiles) - if (f.attributes() & Core::GeneratedFile::OpenProjectAttribute) { - ctx->projectFilePath = f.path(); - break; - } return generatedFiles; } diff --git a/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp b/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp index f3d8fe9591f80a79a28a57721a11a2e6aa6bbf53..6efcd8d6ec2f21780d9c788727f646054e692bbb 100644 --- a/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizardparameters.cpp @@ -791,8 +791,8 @@ void CustomWizardContext::reset() baseReplacements.insert(QLatin1String("CppHeaderSuffix"), mdb->preferredSuffixByType(QLatin1String(CppTools::Constants::CPP_HEADER_MIMETYPE))); replacements.clear(); + path.clear(); targetPath.clear(); - projectFilePath.clear(); } QString CustomWizardContext::processFile(const FieldReplacementMap &fm, QString in) diff --git a/src/plugins/projectexplorer/customwizard/customwizardparameters.h b/src/plugins/projectexplorer/customwizard/customwizardparameters.h index 5c757e2b835f31ff458620057677c6d008507c4d..59ee8599cccd0d5bb762cca94ea2b76885978e3b 100644 --- a/src/plugins/projectexplorer/customwizard/customwizardparameters.h +++ b/src/plugins/projectexplorer/customwizard/customwizardparameters.h @@ -143,10 +143,11 @@ struct CustomWizardContext { FieldReplacementMap baseReplacements; FieldReplacementMap replacements; - // Where files should be created, that is, choosen path for simple wizards - // or "path/project" for project wizards. + + QString path; + // Where files should be created, that is, 'path' for simple wizards + // or "path + project" for project wizards. QString targetPath; - QString projectFilePath; }; extern const char customWizardFileOpenEditorAttributeC[]; diff --git a/src/plugins/projectexplorer/customwizard/customwizardscriptgenerator.h b/src/plugins/projectexplorer/customwizard/customwizardscriptgenerator.h index 6010a97e1b01a40d7653202a34ba56564f60e850..a3feb6b0b5d95307fcde1f2f6b71e42a86e13592 100644 --- a/src/plugins/projectexplorer/customwizard/customwizardscriptgenerator.h +++ b/src/plugins/projectexplorer/customwizard/customwizardscriptgenerator.h @@ -48,11 +48,11 @@ struct GeneratorScriptArgument; * attribute of the <files> element) which actually creates files. * The command line of the script must follow the convention * - * script [--dry-run] [Field1=Value1 [Field2=Value2] [Field3:Filename3]]]... + * script [--dry-run] [options] + * + * Options containing field placeholders are configured in the XML files + * and will be passed with them replaced by their values. * - * Multiline texts will be passed on as temporary files using the colon - * separator. - * The parameters are the field values from the UI. * As Qt Creator needs to know the file names before actually creates them to * do overwrite checking etc., this is 2-step process: * 1) Determine file names and attributes: The script is called with the diff --git a/src/plugins/projectexplorer/gccparser.cpp b/src/plugins/projectexplorer/gccparser.cpp index ddcf7b9d79d1ce4fb8cc83dd6f47264754f4b599..953a39a822d2fe3aeaed67c002c3b838545f5c09 100644 --- a/src/plugins/projectexplorer/gccparser.cpp +++ b/src/plugins/projectexplorer/gccparser.cpp @@ -36,7 +36,7 @@ using namespace ProjectExplorer; namespace { // opt. drive letter + filename: (2 brackets) - const char * const FILE_PATTERN = "(([A-Za-z]:)?[^:]+\\.[^:]+):"; + const char * const FILE_PATTERN = "(<command line>|([A-Za-z]:)?[^:]+\\.[^:]+):"; const char * const COMMAND_PATTERN = "^(.*[\\\\/])?([a-z0-9]+-[a-z0-9]+-[a-z0-9]+-)?(gcc|g\\+\\+)(-[0-9\\.]+)?(\\.exe)?: "; } @@ -584,6 +584,28 @@ void ProjectExplorerPlugin::testGccOutputParsers_data() QLatin1String("../../../src/XmlUg/targetdelete.c"), -1, Constants::TASK_CATEGORY_COMPILE)) << QString(); + + QTest::newRow("GCCE 4: commandline, includes") + << QString::fromLatin1("In file included from /Symbian/SDK/EPOC32/INCLUDE/GCCE/GCCE.h:15,\n" + " from <command line>:26:\n" + "/Symbian/SDK/epoc32/include/variant/Symbian_OS.hrh:1134:26: warning: no newline at end of file") + << OutputParserTester::STDERR + << QString() << QString() + << ( QList<ProjectExplorer::Task>() + << Task(Task::Unknown, + QLatin1String("In file included from /Symbian/SDK/EPOC32/INCLUDE/GCCE/GCCE.h:15,"), + QLatin1String("/Symbian/SDK/EPOC32/INCLUDE/GCCE/GCCE.h"), 15, + Constants::TASK_CATEGORY_COMPILE) + << Task(Task::Unknown, + QLatin1String("from <command line>:26:"), + QLatin1String("<command line>"), 26, + Constants::TASK_CATEGORY_COMPILE) + << Task(Task::Warning, + QLatin1String("no newline at end of file"), + QLatin1String("/Symbian/SDK/epoc32/include/variant/Symbian_OS.hrh"), 1134, + Constants::TASK_CATEGORY_COMPILE)) + << QString(); + } void ProjectExplorerPlugin::testGccOutputParsers() diff --git a/src/plugins/projectexplorer/pluginfilefactory.cpp b/src/plugins/projectexplorer/pluginfilefactory.cpp index a6c5961e819165548069c66225bbe91136e0eac5..c8bfe397ca64e07dc1cb2e59fb8211c35de863b2 100644 --- a/src/plugins/projectexplorer/pluginfilefactory.cpp +++ b/src/plugins/projectexplorer/pluginfilefactory.cpp @@ -87,6 +87,8 @@ QList<ProjectFileFactory *> ProjectFileFactory::createFactories(QString *filterS QList<IProjectManager*> projectManagers = ExtensionSystem::PluginManager::instance()->getObjects<IProjectManager>(); + QList<QRegExp> allGlobPatterns; + const QString filterSeparator = QLatin1String(";;"); filterString->clear(); foreach (IProjectManager *manager, projectManagers) { @@ -94,8 +96,13 @@ QList<ProjectFileFactory *> ProjectFileFactory::createFactories(QString *filterS if (!filterString->isEmpty()) *filterString += filterSeparator; const QString mimeType = manager->mimeType(); - const QString pFilterString = Core::ICore::instance()->mimeDatabase()->findByType(mimeType).filterString(); + Core::MimeType mime = Core::ICore::instance()->mimeDatabase()->findByType(mimeType); + const QString pFilterString = mime.filterString(); + allGlobPatterns.append(mime.globPatterns()); *filterString += pFilterString; } + QString allProjectFilter = Core::MimeType::formatFilterString(tr("All Projects"), allGlobPatterns); + allProjectFilter.append(filterSeparator); + filterString->prepend(allProjectFilter); return rc; } diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index d7a9daab089dca2559e53c5e4f157b6e56a816c8..bb552c765a4e0882768ab1e55cee53cd4bfe413a 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -135,9 +135,7 @@ struct ProjectExplorerPluginPrivate { QMultiMap<int, QObject*> m_actionMap; QAction *m_sessionManagerAction; QAction *m_newAction; -#if 0 QAction *m_loadAction; -#endif Utils::ParameterAction *m_unloadAction; QAction *m_clearSession; QAction *m_buildProjectOnlyAction; @@ -491,14 +489,11 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+N"))); msessionContextMenu->addAction(cmd, Constants::G_SESSION_FILES); -#if 0 // open action d->m_loadAction = new QAction(tr("Load Project..."), this); cmd = am->registerAction(d->m_loadAction, Constants::LOAD, globalcontext); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+O"))); - mfile->addAction(cmd, Core::Constants::G_FILE_PROJECT); msessionContextMenu->addAction(cmd, Constants::G_SESSION_FILES); -#endif // Default open action d->m_openFileAction = new QAction(tr("Open File"), this); @@ -807,9 +802,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er connect(d->m_sessionManagerAction, SIGNAL(triggered()), this, SLOT(showSessionManager())); connect(d->m_newAction, SIGNAL(triggered()), this, SLOT(newProject())); -#if 0 connect(d->m_loadAction, SIGNAL(triggered()), this, SLOT(loadAction())); -#endif connect(d->m_buildProjectOnlyAction, SIGNAL(triggered()), this, SLOT(buildProjectOnly())); connect(d->m_buildAction, SIGNAL(triggered()), this, SLOT(buildProject())); connect(d->m_buildActionContextMenu, SIGNAL(triggered()), this, SLOT(buildProjectContextMenu())); @@ -2116,7 +2109,6 @@ void ProjectExplorerPlugin::openFile() QTC_ASSERT(d->m_currentNode, return) Core::EditorManager *em = Core::EditorManager::instance(); em->openEditor(d->m_currentNode->path()); - em->ensureEditorManagerVisible(); } void ProjectExplorerPlugin::showInGraphicalShell() @@ -2312,7 +2304,6 @@ void ProjectExplorerPlugin::openEditorFromAction(QAction *action, const QString } em->openEditor(fileName, factory->id()); - em->ensureEditorManagerVisible(); return; } if (qVariantCanConvert<Core::IExternalEditor *>(data)) { diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp index 2cfd22ac6d44b1e0900df79092e362a1a065240d..64ad5c9d3b14f8d18ef4b26bcc598ff8d6f378e1 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp @@ -256,7 +256,7 @@ void RunSettingsWidget::removeRunConfiguration() { RunConfiguration *rc = m_target->activeRunConfiguration(); QMessageBox msgBox(QMessageBox::Question, tr("Remove Run Configuration?"), - tr("Do you really want to delete deploy configuration <b>%1</b>.").arg(rc->displayName()), + tr("Do you really want to delete run configuration <b>%1</b>.").arg(rc->displayName()), QMessageBox::Yes|QMessageBox::No, this); msgBox.setDefaultButton(QMessageBox::No); msgBox.setEscapeButton(QMessageBox::No); diff --git a/src/plugins/projectexplorer/showineditortaskhandler.cpp b/src/plugins/projectexplorer/showineditortaskhandler.cpp index 8783bcd7c0625ae68ffa6d3829579f253a151f2a..fce46a94c50681c81e397dca0840e173c51d4156 100644 --- a/src/plugins/projectexplorer/showineditortaskhandler.cpp +++ b/src/plugins/projectexplorer/showineditortaskhandler.cpp @@ -56,7 +56,6 @@ void ShowInEditorTaskHandler::handle(const ProjectExplorer::Task &task) { QFileInfo fi(task.file); TextEditor::BaseTextEditor::openEditorAt(fi.canonicalFilePath(), task.line); - Core::EditorManager::instance()->ensureEditorManagerVisible(); } QAction *ShowInEditorTaskHandler::createAction(QObject *parent) diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index f14efdb6e2db9e11df082b05010b3c66fc211692..4c708a2c0ab6e727415e2d1de5f4b4c34d2b479c 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -130,7 +130,7 @@ void DocumentWarningWidget::setError(const RewriterView::Error &error) void DocumentWarningWidget::goToError() { m_designModeWidget->textEditor()->gotoLine(m_error.line(), m_error.column()); - Core::EditorManager::instance()->ensureEditorManagerVisible(); + Core::ModeManager::instance()->activateMode(Core::Constants::MODE_EDIT); } // ---------- DesignModeWidget diff --git a/src/plugins/texteditor/linenumberfilter.cpp b/src/plugins/texteditor/linenumberfilter.cpp index ee73f4af877457b953ef476da6c20f9168ce2c12..961c03c9e44793d64fe2b1db497fcf4c6678decd 100644 --- a/src/plugins/texteditor/linenumberfilter.cpp +++ b/src/plugins/texteditor/linenumberfilter.cpp @@ -31,6 +31,8 @@ #include "itexteditor.h" #include <coreplugin/editormanager/editormanager.h> +#include <coreplugin/coreconstants.h> +#include <coreplugin/modemanager.h> #include <QtCore/QVariant> @@ -61,10 +63,10 @@ void LineNumberFilter::accept(FilterEntry selection) const ITextEditor *editor = currentTextEditor(); if (editor) { Core::EditorManager *editorManager = Core::EditorManager::instance(); - editorManager->ensureEditorManagerVisible(); editorManager->addCurrentPositionToNavigationHistory(); editor->gotoLine(selection.internalData.toInt()); editor->widget()->setFocus(); + Core::ModeManager::instance()->activateMode(Core::Constants::MODE_EDIT); } } diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index 83f7d7938a87cc4071784fd0beda3847678af887..fc0281c5ba155e781374c8cf3e3d7f7b4c502810 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -36,6 +36,8 @@ #include <coreplugin/editormanager/editormanager.h> #include <coreplugin/ifile.h> #include <coreplugin/iversioncontrol.h> +#include <coreplugin/coreconstants.h> +#include <coreplugin/modemanager.h> #include <extensionsystem/pluginmanager.h> #include <projectexplorer/editorconfiguration.h> #include <projectexplorer/projectexplorer.h> @@ -634,7 +636,7 @@ void VCSBaseEditor::jumpToChangeFromDiff(QTextCursor cursor) Core::EditorManager *em = Core::EditorManager::instance(); Core::IEditor *ed = em->openEditor(fileName); - em->ensureEditorManagerVisible(); + Core::ModeManager::instance()->activateMode(Core::Constants::MODE_EDIT); if (TextEditor::ITextEditor *editor = qobject_cast<TextEditor::ITextEditor *>(ed)) editor->gotoLine(chunkStart + lineCount); } diff --git a/src/plugins/welcome/welcomeplugin.cpp b/src/plugins/welcome/welcomeplugin.cpp index 4ef9768394aa8092487f280877191d793800f9a1..46c59e871445fd2034522b081601b89ea32fe83e 100644 --- a/src/plugins/welcome/welcomeplugin.cpp +++ b/src/plugins/welcome/welcomeplugin.cpp @@ -76,7 +76,6 @@ bool WelcomePlugin::initialize(const QStringList & /* arguments */, QString * /* void WelcomePlugin::extensionsInitialized() { m_welcomeMode->initPlugins(); - Core::ModeManager::instance()->activateMode(m_welcomeMode->id()); } Q_EXPORT_PLUGIN(WelcomePlugin)