summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2009-09-25 10:47:20 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2009-09-25 10:47:20 +0200
commite7cef7ef227fb186ccac436413adead6d9e5aa75 (patch)
treeed15f9bbe5d33eec0ef5a20c9f7ae20c40b5849e /src/plugins
parent91a492a56210a555983be9a70f701358ec952749 (diff)
parent89aa5e6d1e231b9d0764dd0946772040af440ba7 (diff)
downloadqt-creator-e7cef7ef227fb186ccac436413adead6d9e5aa75.tar.gz
Merge branch 'master' of git@scm.dev.nokia.troll.no:creator/mainline
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager.cpp6
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager.h3
-rw-r--r--src/plugins/debugger/cdb/cdbdebugengine.cpp99
-rw-r--r--src/plugins/debugger/cdb/cdbdebugengine.h4
-rw-r--r--src/plugins/debugger/cdb/cdbdebugengine_p.h2
-rw-r--r--src/plugins/debugger/cdb/cdbdebugeventcallback.cpp2
-rw-r--r--src/plugins/debugger/cdb/cdbdebugeventcallback.h2
7 files changed, 61 insertions, 57 deletions
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index 4d6552f437..ea1ed14015 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -904,8 +904,10 @@ Core::IEditor *EditorManager::activateEditor(Core::Internal::EditorView *view, C
if (!(flags & NoActivate)) {
setCurrentEditor(editor, (flags & IgnoreNavigationHistory));
- ensureEditorManagerVisible();
- editor->widget()->setFocus();
+ if (!(flags & NoModeSwitch))
+ ensureEditorManagerVisible();
+ if (isVisible())
+ editor->widget()->setFocus();
}
return editor;
}
diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h
index 6e8d59c1bc..3862e1440f 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.h
+++ b/src/plugins/coreplugin/editormanager/editormanager.h
@@ -106,7 +106,8 @@ public:
enum OpenEditorFlag {
NoActivate = 1,
- IgnoreNavigationHistory = 2
+ IgnoreNavigationHistory = 2,
+ NoModeSwitch = 4
};
Q_DECLARE_FLAGS(OpenEditorFlags, OpenEditorFlag)
diff --git a/src/plugins/debugger/cdb/cdbdebugengine.cpp b/src/plugins/debugger/cdb/cdbdebugengine.cpp
index c9caf069ff..1a0f8424d4 100644
--- a/src/plugins/debugger/cdb/cdbdebugengine.cpp
+++ b/src/plugins/debugger/cdb/cdbdebugengine.cpp
@@ -297,7 +297,6 @@ CdbDebugEnginePrivate::CdbDebugEnginePrivate(DebuggerManager *manager,
m_watchTimer(-1),
m_debugEventCallBack(engine),
m_engine(engine),
- m_debuggerManagerAccess(manager->engineInterface()),
m_currentStackTrace(0),
m_firstActivatedFrame(true),
m_mode(AttachCore)
@@ -426,6 +425,11 @@ CdbDebugEnginePrivate::~CdbDebugEnginePrivate()
m_cif.debugDataSpaces->Release();
}
+DebuggerManager *CdbDebugEnginePrivate::manager() const
+{
+ return m_engine->manager();
+}
+
void CdbDebugEnginePrivate::clearForRun()
{
if (debugCDB)
@@ -446,21 +450,21 @@ void CdbDebugEnginePrivate::cleanStackTrace()
}
CdbDebugEngine::CdbDebugEngine(DebuggerManager *manager, const QSharedPointer<CdbOptions> &options) :
- IDebuggerEngine(parent),
- m_d(new CdbDebugEnginePrivate(parent, options, this))
+ IDebuggerEngine(manager),
+ m_d(new CdbDebugEnginePrivate(manager, options, this))
{
m_d->m_consoleStubProc.setMode(Core::Utils::ConsoleProcess::Suspend);
connect(&m_d->m_consoleStubProc, SIGNAL(processError(QString)), this, SLOT(slotConsoleStubError(QString)));
connect(&m_d->m_consoleStubProc, SIGNAL(processStarted()), this, SLOT(slotConsoleStubStarted()));
connect(&m_d->m_consoleStubProc, SIGNAL(wrapperStopped()), this, SLOT(slotConsoleStubTerminated()));
connect(&m_d->m_debugOutputCallBack, SIGNAL(debuggerOutput(int,QString)),
- manager(), SLOT(showDebuggerOutput(int,QString)));
+ manager, SLOT(showDebuggerOutput(int,QString)));
connect(&m_d->m_debugOutputCallBack, SIGNAL(debuggerInputPrompt(int,QString)),
- manager(), SLOT(showDebuggerInput(int,QString)));
+ manager, SLOT(showDebuggerInput(int,QString)));
connect(&m_d->m_debugOutputCallBack, SIGNAL(debuggeeOutput(QString)),
- manager(), SLOT(showApplicationOutput(QString)));
+ manager, SLOT(showApplicationOutput(QString)));
connect(&m_d->m_debugOutputCallBack, SIGNAL(debuggeeInputPrompt(QString)),
- manager(), SLOT(showApplicationOutput(QString)));
+ manager, SLOT(showApplicationOutput(QString)));
}
CdbDebugEngine::~CdbDebugEngine()
@@ -557,9 +561,9 @@ void CdbDebugEngine::setToolTipExpression(const QPoint &mousePos, TextEditor::IT
void CdbDebugEnginePrivate::clearDisplay()
{
- m_debuggerManagerAccess->threadsHandler()->removeAll();
- m_debuggerManagerAccess->modulesHandler()->removeAll();
- m_debuggerManagerAccess->registerHandler()->removeAll();
+ manager()->threadsHandler()->removeAll();
+ manager()->modulesHandler()->removeAll();
+ manager()->registerHandler()->removeAll();
}
void CdbDebugEngine::startDebugger(const QSharedPointer<DebuggerStartParameters> &sp)
@@ -572,22 +576,22 @@ void CdbDebugEngine::startDebugger(const QSharedPointer<DebuggerStartParameters>
const DebuggerStartMode mode = sp->startMode;
// Figure out dumper. @TODO: same in gdb...
- const QString dumperLibName = QDir::toNativeSeparators(m_d->m_debuggerManagerAccess->qtDumperLibraryName());
+ const QString dumperLibName = QDir::toNativeSeparators(manager()->qtDumperLibraryName());
bool dumperEnabled = mode != AttachCore
&& mode != AttachCrashedExternal
- && m_d->m_debuggerManagerAccess->qtDumperLibraryEnabled();
+ && manager()->qtDumperLibraryEnabled();
if (dumperEnabled) {
const QFileInfo fi(dumperLibName);
if (!fi.isFile()) {
- const QStringList &locations = m_d->m_debuggerManagerAccess->qtDumperLibraryLocations();
+ const QStringList &locations = manager()->qtDumperLibraryLocations();
const QString loc = locations.join(QLatin1String(", "));
const QString msg = tr("The dumper library was not found at %1.").arg(loc);
- m_d->m_debuggerManagerAccess->showQtDumperLibraryWarning(msg);
+ manager()->showQtDumperLibraryWarning(msg);
dumperEnabled = false;
}
}
m_d->m_dumper->reset(dumperLibName, dumperEnabled);
- showStatusMessage("Starting Debugger", -1);
+ manager()->showStatusMessage("Starting Debugger", -1);
QString errorMessage;
bool rc = false;
bool needWatchTimer = false;
@@ -620,7 +624,7 @@ void CdbDebugEngine::startDebugger(const QSharedPointer<DebuggerStartParameters>
break;
}
if (rc) {
- showStatusMessage(tr("Debugger running"), -1);
+ manager()->showStatusMessage(tr("Debugger running"), -1);
if (needWatchTimer)
startWatchTimer();
} else {
@@ -701,19 +705,19 @@ bool CdbDebugEngine::startDebuggerWithExecutable(DebuggerStartMode sm, QString *
workingDirC, env);
if (FAILED(hr)) {
*errorMessage = tr("Unable to create a process '%1': %2").arg(cmd, msgDebugEngineComResult(hr));
- m_d->m_debuggerManagerAccess->notifyInferiorExited();
+ manager()->notifyInferiorExited();
return false;
} else {
m_d->m_mode = sm;
}
- m_d->m_debuggerManagerAccess->notifyInferiorRunning();
+ manager()->notifyInferiorRunning();
return true;
}
void CdbDebugEnginePrivate::processCreatedAttached(ULONG64 processHandle, ULONG64 initialThreadHandle)
{
setDebuggeeHandles(reinterpret_cast<HANDLE>(processHandle), reinterpret_cast<HANDLE>(initialThreadHandle));
- m_debuggerManagerAccess->notifyInferiorRunning();
+ manager()->notifyInferiorRunning();
ULONG currentThreadId;
if (SUCCEEDED(m_cif.debugSystemObjects->GetThreadIdByHandle(initialThreadHandle, &currentThreadId))) {
m_currentThreadId = currentThreadId;
@@ -722,7 +726,7 @@ void CdbDebugEnginePrivate::processCreatedAttached(ULONG64 processHandle, ULONG6
}
// Clear any saved breakpoints and set initial breakpoints
m_engine->executeDebuggerCommand(QLatin1String("bc"));
- if (m_debuggerManagerAccess->breakHandler()->hasPendingBreakpoints())
+ if (manager()->breakHandler()->hasPendingBreakpoints())
m_engine->attemptBreakpointSynchronization();
// Attaching to crashed: This handshake (signalling an event) is required for
// the exception to be delivered to the debugger
@@ -746,7 +750,7 @@ void CdbDebugEngine::processTerminated(unsigned long exitCode)
m_d->clearForRun();
m_d->setDebuggeeHandles(0, 0);
- m_d->m_debuggerManagerAccess->notifyInferiorExited();
+ manager()->notifyInferiorExited();
manager()->exitDebugger();
}
@@ -811,7 +815,7 @@ void CdbDebugEnginePrivate::endDebugging(EndDebuggingMode em)
if (!errorMessage.isEmpty()) {
errorMessage = QString::fromLatin1("There were errors trying to end debugging: %1").arg(errorMessage);
- m_debuggerManagerAccess->showDebuggerOutput(LogError, errorMessage);
+ manager()->showDebuggerOutput(LogError, errorMessage);
m_engine->warning(errorMessage);
}
}
@@ -863,7 +867,7 @@ void CdbDebugEngine::updateWatchData(const WatchData &incomplete)
if (debugCDBWatchHandling)
qDebug() << Q_FUNC_INFO << "\n " << incomplete.toString();
- WatchHandler *watchHandler = m_d->m_debuggerManagerAccess->watchHandler();
+ WatchHandler *watchHandler = manager()->watchHandler();
if (incomplete.iname.startsWith(QLatin1String("watch."))) {
WatchData watchData = incomplete;
evaluateWatcher(&watchData);
@@ -871,7 +875,7 @@ void CdbDebugEngine::updateWatchData(const WatchData &incomplete)
return;
}
- const int frameIndex = m_d->m_debuggerManagerAccess->stackHandler()->currentIndex();
+ const int frameIndex = manager()->stackHandler()->currentIndex();
bool success = false;
QString errorMessage;
@@ -886,7 +890,7 @@ void CdbDebugEngine::updateWatchData(const WatchData &incomplete)
if (!success)
warning(msgFunctionFailed(Q_FUNC_INFO, errorMessage));
if (debugCDBWatchHandling > 1)
- qDebug() << *m_d->m_debuggerManagerAccess->watchHandler()->model(LocalsWatch);
+ qDebug() << *manager()->watchHandler()->model(LocalsWatch);
}
void CdbDebugEngine::stepExec()
@@ -909,7 +913,7 @@ void CdbDebugEngine::stepOutExec()
if (debugCDB)
qDebug() << Q_FUNC_INFO;
- StackHandler* sh = m_d->m_debuggerManagerAccess->stackHandler();
+ StackHandler* sh = manager()->stackHandler();
const int idx = sh->currentIndex() + 1;
QList<StackFrame> stackframes = sh->frames();
if (idx < 0 || idx >= stackframes.size()) {
@@ -1025,14 +1029,14 @@ bool CdbDebugEnginePrivate::continueInferior(QString *errorMessage)
setCodeLevel();
m_engine->killWatchTimer();
manager()->resetLocation();
- setState(InferiorRunningRequested);
- showStatusMessage(tr("Running requested..."), 5000);
+ m_engine->setState(InferiorRunningRequested);
+ manager()->showStatusMessage(CdbDebugEngine::tr("Running requested..."), 5000);
if (!continueInferiorProcess(errorMessage))
return false;
m_engine->startWatchTimer();
- m_debuggerManagerAccess->notifyInferiorRunning();
+ manager()->notifyInferiorRunning();
return true;
}
@@ -1067,7 +1071,7 @@ void CdbDebugEngine::interruptInferior()
QString errorMessage;
if (m_d->interruptInterferiorProcess(&errorMessage)) {
- m_d->m_debuggerManagerAccess->notifyInferiorStopped();
+ manager()->notifyInferiorStopped();
} else {
warning(msgFunctionFailed(Q_FUNC_INFO, errorMessage));
}
@@ -1095,7 +1099,7 @@ void CdbDebugEngine::assignValueInDebugger(const QString &expr, const QString &v
{
if (debugCDB)
qDebug() << Q_FUNC_INFO << expr << value;
- const int frameIndex = m_d->m_debuggerManagerAccess->stackHandler()->currentIndex();
+ const int frameIndex = manager()->stackHandler()->currentIndex();
QString errorMessage;
bool success = false;
do {
@@ -1106,7 +1110,7 @@ void CdbDebugEngine::assignValueInDebugger(const QString &expr, const QString &v
if (!sg->assignValue(expr, value, &newValue, &errorMessage))
break;
// Update view
- WatchHandler *watchHandler = m_d->m_debuggerManagerAccess->watchHandler();
+ WatchHandler *watchHandler = manager()->watchHandler();
if (WatchData *fwd = watchHandler->findItem(expr)) {
fwd->setValue(newValue);
watchHandler->insertData(*fwd);
@@ -1194,8 +1198,8 @@ void CdbDebugEngine::activateFrame(int frameIndex)
QString errorMessage;
bool success = false;
do {
- StackHandler *stackHandler = m_d->m_debuggerManagerAccess->stackHandler();
- WatchHandler *watchHandler = m_d->m_debuggerManagerAccess->watchHandler();
+ StackHandler *stackHandler = manager()->stackHandler();
+ WatchHandler *watchHandler = manager()->watchHandler();
const int oldIndex = stackHandler->currentIndex();
if (frameIndex >= stackHandler->stackSize()) {
errorMessage = msgStackIndexOutOfRange(frameIndex, stackHandler->stackSize());
@@ -1237,7 +1241,7 @@ void CdbDebugEngine::selectThread(int index)
//reset location arrow
manager()->resetLocation();
- ThreadsHandler *threadsHandler = m_d->m_debuggerManagerAccess->threadsHandler();
+ ThreadsHandler *threadsHandler = manager()->threadsHandler();
threadsHandler->setCurrentThread(index);
const int newThreadId = threadsHandler->threads().at(index).id;
if (newThreadId != m_d->m_currentThreadId) {
@@ -1286,7 +1290,7 @@ bool CdbDebugEnginePrivate::attemptBreakpointSynchronization(QString *errorMessa
QStringList warnings;
const bool ok = CDBBreakPoint::synchronizeBreakPoints(m_cif.debugControl,
m_cif.debugSymbols,
- m_debuggerManagerAccess->breakHandler(),
+ manager()->breakHandler(),
errorMessage, &warnings);
if (const int warningsCount = warnings.size())
for (int w = 0; w < warningsCount; w++)
@@ -1402,7 +1406,7 @@ void CdbDebugEngine::reloadRegisters()
QString errorMessage;
if (!getRegisters(m_d->m_cif.debugControl, m_d->m_cif.debugRegisters, &registers, &errorMessage, intBase))
warning(msgFunctionFailed("reloadRegisters" , errorMessage));
- m_d->m_debuggerManagerAccess->registerHandler()->setRegisters(registers);
+ manager()->registerHandler()->setRegisters(registers);
}
void CdbDebugEngine::timerEvent(QTimerEvent* te)
@@ -1443,8 +1447,8 @@ void CdbDebugEngine::slotConsoleStubStarted()
QString errorMessage;
if (startAttachDebugger(appPid, AttachExternal, &errorMessage)) {
startWatchTimer();
- m_d->m_debuggerManagerAccess->notifyInferiorPidChanged(appPid);
- m_d->m_debuggerManagerAccess->notifyInferiorRunning();
+ manager()->notifyInferiorPidChanged(appPid);
+ manager()->notifyInferiorRunning();
} else {
QMessageBox::critical(manager()->mainWindow(), tr("Debugger Error"), errorMessage);
}
@@ -1462,7 +1466,7 @@ void CdbDebugEngine::slotConsoleStubTerminated()
void CdbDebugEngine::warning(const QString &w)
{
- m_d->m_debuggerManagerAccess->showDebuggerOutput(LogWarning, w);
+ manager()->showDebuggerOutput(LogWarning, w);
qWarning("%s\n", qPrintable(w));
}
@@ -1494,9 +1498,10 @@ void CdbDebugEnginePrivate::handleDebugEvent()
switch (mode) {
case BreakEventHandle: {
- m_debuggerManagerAccess->notifyInferiorStopped();
+ m_engine->setState(InferiorStopping);
+ manager()->notifyInferiorStopped();
m_currentThreadId = updateThreadList();
- ThreadsHandler *threadsHandler = m_debuggerManagerAccess->threadsHandler();
+ ThreadsHandler *threadsHandler = manager()->threadsHandler();
const int threadIndex = threadIndexById(threadsHandler, m_currentThreadId);
if (threadIndex != -1)
threadsHandler->setCurrentThread(threadIndex);
@@ -1532,7 +1537,7 @@ ULONG CdbDebugEnginePrivate::updateThreadList()
if (debugCDB)
qDebug() << Q_FUNC_INFO << m_hDebuggeeProcess;
- ThreadsHandler* th = m_debuggerManagerAccess->threadsHandler();
+ ThreadsHandler* th = manager()->threadsHandler();
QList<ThreadData> threads;
bool success = false;
QString errorMessage;
@@ -1593,13 +1598,13 @@ void CdbDebugEnginePrivate::updateStackTrace()
break;
}
- m_debuggerManagerAccess->stackHandler()->setFrames(stackFrames);
+ manager()->stackHandler()->setFrames(stackFrames);
m_firstActivatedFrame = true;
if (current >= 0) {
- m_debuggerManagerAccess->stackHandler()->setCurrentIndex(current);
+ manager()->stackHandler()->setCurrentIndex(current);
m_engine->activateFrame(current);
}
- m_debuggerManagerAccess->watchHandler()->updateWatchers();
+ manager()->watchHandler()->updateWatchers();
}
void CdbDebugEnginePrivate::updateModules()
@@ -1608,7 +1613,7 @@ void CdbDebugEnginePrivate::updateModules()
QString errorMessage;
if (!getModuleList(m_cif.debugSymbols, &modules, &errorMessage))
m_engine->warning(msgFunctionFailed(Q_FUNC_INFO, errorMessage));
- m_debuggerManagerAccess->modulesHandler()->setModules(modules);
+ manager()->modulesHandler()->setModules(modules);
}
static const char *dumperPrefixC = "dumper";
diff --git a/src/plugins/debugger/cdb/cdbdebugengine.h b/src/plugins/debugger/cdb/cdbdebugengine.h
index d6acfc1e3a..18b6604165 100644
--- a/src/plugins/debugger/cdb/cdbdebugengine.h
+++ b/src/plugins/debugger/cdb/cdbdebugengine.h
@@ -100,10 +100,6 @@ public:
virtual void reloadSourceFiles();
virtual void reloadFullStack() {}
- DebuggerState state() const;
- void setState(DebuggerState state);
- void showStatusMessage(const QString &msg, int timeout = -1);
-
public slots:
void syncDebuggerPaths();
diff --git a/src/plugins/debugger/cdb/cdbdebugengine_p.h b/src/plugins/debugger/cdb/cdbdebugengine_p.h
index 83b9f32406..9cf9f8661b 100644
--- a/src/plugins/debugger/cdb/cdbdebugengine_p.h
+++ b/src/plugins/debugger/cdb/cdbdebugengine_p.h
@@ -161,7 +161,7 @@ struct CdbDebugEnginePrivate
QString m_baseImagePath;
CdbDebugEngine *m_engine;
- DebuggerManager *manager() const { return m_engine->manager(); }
+ inline DebuggerManager *manager() const;
CdbStackTraceContext *m_currentStackTrace;
EditorToolTipCache m_editorToolTipCache;
diff --git a/src/plugins/debugger/cdb/cdbdebugeventcallback.cpp b/src/plugins/debugger/cdb/cdbdebugeventcallback.cpp
index ebcc289c15..fcebdee779 100644
--- a/src/plugins/debugger/cdb/cdbdebugeventcallback.cpp
+++ b/src/plugins/debugger/cdb/cdbdebugeventcallback.cpp
@@ -247,7 +247,7 @@ STDMETHODIMP CdbDebugEventCallback::Exception(
const bool fatal = isFatalException(Exception->ExceptionCode);
if (debugCDB)
qDebug() << Q_FUNC_INFO << "\nex=" << Exception->ExceptionCode << " fatal=" << fatal << msg;
- m_pEngine->m_d->m_debuggerManagerAccess->showApplicationOutput(msg);
+ m_pEngine->manager()->showApplicationOutput(msg);
if (fatal)
m_pEngine->m_d->notifyCrashed();
return S_OK;
diff --git a/src/plugins/debugger/cdb/cdbdebugeventcallback.h b/src/plugins/debugger/cdb/cdbdebugeventcallback.h
index acb888d44d..81f5226dda 100644
--- a/src/plugins/debugger/cdb/cdbdebugeventcallback.h
+++ b/src/plugins/debugger/cdb/cdbdebugeventcallback.h
@@ -36,7 +36,7 @@
namespace Debugger {
namespace Internal {
-
+class DebuggerManager;
class CdbDebugEngine;
// Base class for event callbacks that takes care