From c7ad6ec5e4b7e88999ea73dfd0e3c0ecaea5facd Mon Sep 17 00:00:00 2001 From: dt Date: Wed, 17 Dec 2008 15:14:16 +0100 Subject: [PATCH 1/3] Fixes: Start Debugging beeing disabled. Task: Reported on internal irc. Details: a finished() signal could already be emitted from start(), so we need to set m_debugginRunControl before start(). --- src/plugins/projectexplorer/projectexplorer.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index dd3cd836cc8..6ff24e81d48 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1086,12 +1086,11 @@ void ProjectExplorerPlugin::buildQueueFinished(bool success) this, SLOT(addErrorToApplicationOutputWindow(RunControl *, const QString &))); connect(control, SIGNAL(finished()), this, SLOT(runControlFinished())); - control->start(); - if (m_runMode == ProjectExplorer::Constants::DEBUGMODE) m_debuggingRunControl = control; + control->start(); updateRunAction(); } } else { From d402ed2955e4564503d7bad83365cc3d9269eeec Mon Sep 17 00:00:00 2001 From: dt Date: Wed, 17 Dec 2008 15:51:48 +0100 Subject: [PATCH 2/3] Fixes: Replace QTC_ASSERT with QT_ASSERT. --- .../cmakeprojectmanager/cmakeproject.cpp | 2 +- .../cmakerunconfiguration.cpp | 4 +- src/plugins/cmakeprojectmanager/cmakestep.cpp | 4 +- src/plugins/cmakeprojectmanager/makestep.cpp | 4 +- .../projectexplorer/allprojectsfind.cpp | 2 +- .../applicationrunconfiguration.cpp | 6 +-- src/plugins/projectexplorer/buildmanager.cpp | 6 +-- src/plugins/projectexplorer/buildstep.cpp | 2 +- .../projectexplorer/buildstepspage.cpp | 4 +- .../projectexplorer/currentprojectfind.cpp | 2 +- src/plugins/projectexplorer/project.cpp | 14 +++++-- .../projectexplorer/projectexplorer.cpp | 32 ++++++++++------ src/plugins/projectexplorer/projectmodels.cpp | 38 +++++++++---------- src/plugins/projectexplorer/projectnodes.cpp | 8 ++-- .../runsettingspropertiespage.cpp | 4 +- src/plugins/projectexplorer/session.cpp | 12 +++--- .../qt4projectmanager/gdbmacrosbuildstep.cpp | 4 +- src/plugins/qt4projectmanager/makestep.cpp | 6 +-- src/plugins/qt4projectmanager/qmakestep.cpp | 2 +- src/plugins/qt4projectmanager/qt4nodes.cpp | 8 ++-- .../qt4projectmanager/qt4runconfiguration.cpp | 8 ++-- .../qt4projectmanager/qtversionmanager.cpp | 10 ++--- .../wizards/librarywizarddialog.cpp | 2 +- .../qt4projectmanager/wizards/modulespage.cpp | 4 +- 24 files changed, 102 insertions(+), 86 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index b28989b1680..b6e1f159b79 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -568,7 +568,7 @@ void CMakeCbpParser::parseUnit() void CMakeCbpParser::parseUnknownElement() { - QTC_ASSERT(isStartElement(), /**/); + Q_ASSERT(isStartElement()); while (!atEnd()) { readNext(); diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp index f9cc2b914e7..356cfba3b38 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp @@ -136,7 +136,7 @@ QStringList CMakeRunConfigurationFactory::canCreate(ProjectExplorer::Project *pr // used to translate the types to names to display to the user QString CMakeRunConfigurationFactory::nameForType(const QString &type) const { - QTC_ASSERT(type.startsWith(Constants::CMAKERUNCONFIGURATION), /**/); + Q_ASSERT(type.startsWith(Constants::CMAKERUNCONFIGURATION)); if (type == Constants::CMAKERUNCONFIGURATION) return "CMake"; // Doesn't happen @@ -147,7 +147,7 @@ QString CMakeRunConfigurationFactory::nameForType(const QString &type) const QSharedPointer CMakeRunConfigurationFactory::create(ProjectExplorer::Project *project, const QString &type) { CMakeProject *pro = qobject_cast(project); - QTC_ASSERT(pro, /**/); + Q_ASSERT(pro); if (type == Constants::CMAKERUNCONFIGURATION) { // Restoring, filename will be added by restoreSettings QSharedPointer rc(new CMakeRunConfiguration(pro, QString::null, QString::null)); diff --git a/src/plugins/cmakeprojectmanager/cmakestep.cpp b/src/plugins/cmakeprojectmanager/cmakestep.cpp index a24c3f085be..88572968040 100644 --- a/src/plugins/cmakeprojectmanager/cmakestep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakestep.cpp @@ -115,9 +115,9 @@ bool CMakeBuildStepFactory::canCreate(const QString &name) const ProjectExplorer::BuildStep *CMakeBuildStepFactory::create(ProjectExplorer::Project *project, const QString &name) const { - QTC_ASSERT(name == Constants::CMAKESTEP, /**/); + Q_ASSERT(name == Constants::CMAKESTEP); CMakeProject *pro = qobject_cast(project); - QTC_ASSERT(pro, /**/); + Q_ASSERT(pro); return new CMakeStep(pro); } diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp index 716f548af59..1c7e7f055f5 100644 --- a/src/plugins/cmakeprojectmanager/makestep.cpp +++ b/src/plugins/cmakeprojectmanager/makestep.cpp @@ -109,9 +109,9 @@ bool MakeBuildStepFactory::canCreate(const QString &name) const ProjectExplorer::BuildStep *MakeBuildStepFactory::create(ProjectExplorer::Project *project, const QString &name) const { - QTC_ASSERT(name == Constants::MAKESTEP, return 0); + Q_ASSERT(name == Constants::MAKESTEP); CMakeProject *pro = qobject_cast(project); - QTC_ASSERT(pro, return 0); + Q_ASSERT(pro); return new MakeStep(pro); } diff --git a/src/plugins/projectexplorer/allprojectsfind.cpp b/src/plugins/projectexplorer/allprojectsfind.cpp index c5bf77fba40..2118ccc658a 100644 --- a/src/plugins/projectexplorer/allprojectsfind.cpp +++ b/src/plugins/projectexplorer/allprojectsfind.cpp @@ -74,7 +74,7 @@ QKeySequence AllProjectsFind::defaultShortcut() const QStringList AllProjectsFind::files() { - QTC_ASSERT(m_plugin->session(), return QStringList()); + Q_ASSERT(m_plugin->session()); QList filterRegs; QStringList nameFilters = fileNameFilters(); foreach (const QString &filter, nameFilters) { diff --git a/src/plugins/projectexplorer/applicationrunconfiguration.cpp b/src/plugins/projectexplorer/applicationrunconfiguration.cpp index 1f923160b39..a0eb7af6a19 100644 --- a/src/plugins/projectexplorer/applicationrunconfiguration.cpp +++ b/src/plugins/projectexplorer/applicationrunconfiguration.cpp @@ -95,8 +95,8 @@ QString ApplicationRunConfigurationRunner::displayName() const RunControl* ApplicationRunConfigurationRunner::run(QSharedPointer runConfiguration, const QString &mode) { QSharedPointer rc = qSharedPointerCast(runConfiguration); - QTC_ASSERT(rc, return 0); - QTC_ASSERT(mode == ProjectExplorer::Constants::RUNMODE, return 0); + Q_ASSERT(rc); + Q_ASSERT(mode == ProjectExplorer::Constants::RUNMODE); ApplicationRunControl *runControl = new ApplicationRunControl(rc); return runControl; @@ -130,7 +130,7 @@ ApplicationRunControl::~ApplicationRunControl() void ApplicationRunControl::start() { QSharedPointer rc = qSharedPointerCast(runConfiguration()); - QTC_ASSERT(rc, return); + Q_ASSERT(rc); m_applicationLauncher.setEnvironment(rc->environment().toStringList()); m_applicationLauncher.setWorkingDirectory(rc->workingDirectory()); diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index 933987441da..72eb1766f11 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -302,7 +302,7 @@ void BuildManager::buildQueueAppend(BuildStep * bs, const QString &configuration void BuildManager::buildProjects(const QList &projects, const QList &configurations) { - QTC_ASSERT(projects.count() == configurations.count(), /**/); + Q_ASSERT(projects.count() == configurations.count()); QList::const_iterator cit = configurations.constBegin(); QList::const_iterator it, end; end = projects.constEnd(); @@ -318,7 +318,7 @@ void BuildManager::buildProjects(const QList &projects, const QList &projects, const QList &configurations) { - QTC_ASSERT(projects.count() == configurations.count(), /**/); + Q_ASSERT(projects.count() == configurations.count()); QList::const_iterator cit = configurations.constBegin(); QList::const_iterator it, end; end = projects.constEnd(); @@ -378,7 +378,7 @@ void BuildManager::decrementActiveBuildSteps(Project *pro) QHash::iterator it = m_activeBuildSteps.find(pro); QHash::iterator end = m_activeBuildSteps.end(); if (it == end) { - QTC_ASSERT(false && "BuildManager m_activeBuildSteps says project is not building, but apparently a build step was still in the queue.", return); + Q_ASSERT(false && "BuildManager m_activeBuildSteps says project is not building, but apparently a build step was still in the queue."); } else if (*it == 1) { --*it; emit buildStateChanged(pro); diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp index c6f25fc96d2..abcc431f05e 100644 --- a/src/plugins/projectexplorer/buildstep.cpp +++ b/src/plugins/projectexplorer/buildstep.cpp @@ -80,7 +80,7 @@ void BuildStep::copyBuildConfiguration(const QString &source, const QString &des void BuildStep::setValue(const QString &buildConfiguration, const QString &name, const QVariant &value) { BuildConfiguration *bc = getBuildConfiguration(buildConfiguration); - QTC_ASSERT(bc, return); + Q_ASSERT(bc); bc->setValue(name, value); } diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp index 5986de549ad..88536a09e09 100644 --- a/src/plugins/projectexplorer/buildstepspage.cpp +++ b/src/plugins/projectexplorer/buildstepspage.cpp @@ -123,13 +123,13 @@ void BuildStepsPage::updateBuildStepWidget(QTreeWidgetItem *newItem, QTreeWidget { if (oldItem == newItem) return; - QTC_ASSERT(m_pro, return); + Q_ASSERT(m_pro); if (newItem) { int row = m_ui->buildSettingsList->indexOfTopLevelItem(newItem); m_ui->buildSettingsWidget->setCurrentIndex(row); BuildStepConfigWidget *widget = qobject_cast(m_ui->buildSettingsWidget->currentWidget()); - QTC_ASSERT(widget, return); + Q_ASSERT(widget); widget->init(m_configuration); } updateBuildStepButtonsState(); diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp index d0221cc9805..451ae521c0c 100644 --- a/src/plugins/projectexplorer/currentprojectfind.cpp +++ b/src/plugins/projectexplorer/currentprojectfind.cpp @@ -74,7 +74,7 @@ QKeySequence CurrentProjectFind::defaultShortcut() const QStringList CurrentProjectFind::files() { Project *project = m_plugin->currentProject(); - QTC_ASSERT(project, return QStringList()); + Q_ASSERT(project); QList filterRegs; QStringList nameFilters = fileNameFilters(); foreach (const QString &filter, nameFilters) { diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 7945ddefe4a..3d8d8c7b802 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -411,7 +411,7 @@ BuildConfiguration * Project::getBuildConfiguration(const QString &name) const void Project::setValue(const QString &buildConfiguration, const QString &name, const QVariant &value) { BuildConfiguration *bc = getBuildConfiguration(buildConfiguration); - QTC_ASSERT(bc, return); + Q_ASSERT(bc); bc->setValue(name, value); } @@ -445,13 +445,19 @@ QList > Project::runConfigurations() const void Project::addRunConfiguration(QSharedPointer runConfiguration) { - QTC_ASSERT(!m_runConfigurations.contains(runConfiguration), return); + if (m_runConfigurations.contains(runConfiguration)) { + qWarning()<<"Not adding already existing runConfiguration"<name(); + return; + } m_runConfigurations.push_back(runConfiguration); } void Project::removeRunConfiguration(QSharedPointer runConfiguration) { - QTC_ASSERT(m_runConfigurations.contains(runConfiguration), /**/); + if(!m_runConfigurations.contains(runConfiguration)) { + qWarning()<<"Not removing runConfiguration"<name()<<"becasue it doesn't exist"; + return; + } m_runConfigurations.removeOne(runConfiguration); if (m_activeRunConfiguration == runConfiguration) { if (m_runConfigurations.isEmpty()) @@ -470,7 +476,7 @@ void Project::setActiveRunConfiguration(QSharedPointer runConf { if (runConfiguration == m_activeRunConfiguration) return; - QTC_ASSERT(m_runConfigurations.contains(runConfiguration) || runConfiguration == 0, return); + Q_ASSERT(m_runConfigurations.contains(runConfiguration) || runConfiguration == 0); m_activeRunConfiguration = runConfiguration; emit activeRunConfigurationChanged(); } diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 6ff24e81d48..eb99816e6c8 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -787,7 +787,8 @@ void ProjectExplorerPlugin::setStartupProject(Project *project) if (!project) project = m_currentProject; - QTC_ASSERT(project, return); + if (!project) + return; m_session->setStartupProject(project); // NPE: Visually mark startup project updateActions(); @@ -1360,7 +1361,7 @@ void ProjectExplorerPlugin::runProject() void ProjectExplorerPlugin::debugProject() { Project *pro = startupProject(); - if (!pro || m_debuggingRunControl) + if (!pro || m_debuggingRunControl ) return; if (saveModifiedFiles(QList() << pro)) { @@ -1368,6 +1369,7 @@ void ProjectExplorerPlugin::debugProject() m_delayedRunConfiguration = pro->activeRunConfiguration(); //NBS TODO make the build project step take into account project dependencies m_buildManager->buildProject(pro, pro->activeBuildConfiguration()); + updateRunAction(); } } @@ -1534,7 +1536,8 @@ void ProjectExplorerPlugin::updateContextMenuActions() void ProjectExplorerPlugin::addNewFile() { - QTC_ASSERT(m_currentNode && m_currentNode->nodeType() == ProjectNodeType, return); + if (!m_currentNode && m_currentNode->nodeType() == ProjectNodeType) + return; const QString location = QFileInfo(m_currentNode->path()).dir().absolutePath(); m_core->showNewItemDialog(tr("New File", "Title of dialog"), Core::BaseFileWizard::findWizardsOfKind(Core::IWizard::FileWizard) @@ -1544,7 +1547,8 @@ void ProjectExplorerPlugin::addNewFile() void ProjectExplorerPlugin::addExistingFiles() { - QTC_ASSERT(m_currentNode && m_currentNode->nodeType() == ProjectNodeType, return); + if (!m_currentNode && m_currentNode->nodeType() == ProjectNodeType) + return; ProjectNode *projectNode = qobject_cast(m_currentNode); const QString dir = QFileInfo(m_currentNode->path()).dir().absolutePath(); QStringList fileNames = QFileDialog::getOpenFileNames(m_core->mainWindow(), tr("Add Existing Files"), dir); @@ -1596,14 +1600,16 @@ void ProjectExplorerPlugin::addExistingFiles() void ProjectExplorerPlugin::openFile() { - QTC_ASSERT(m_currentNode, return); + if (m_currentNode) + return; m_core->editorManager()->openEditor(m_currentNode->path()); m_core->editorManager()->ensureEditorManagerVisible(); } void ProjectExplorerPlugin::removeFile() { - QTC_ASSERT(m_currentNode && m_currentNode->nodeType() == FileNodeType, return); + if (!m_currentNode && m_currentNode->nodeType() == FileNodeType) + return; FileNode *fileNode = qobject_cast(m_currentNode); const QString filePath = m_currentNode->path(); @@ -1615,7 +1621,7 @@ void ProjectExplorerPlugin::removeFile() // remove from project ProjectNode *projectNode = fileNode->projectNode(); - QTC_ASSERT(projectNode, return); + Q_ASSERT(projectNode); if (!projectNode->removeFiles(fileNode->fileType(), QStringList(filePath))) { QMessageBox::warning(m_core->mainWindow(), tr("Remove file failed"), @@ -1767,11 +1773,15 @@ void ProjectExplorerPlugin::populateOpenWithMenu() void ProjectExplorerPlugin::openWithMenuTriggered(QAction *action) { - QTC_ASSERT(action, return); + if (!action) { + qWarning() << "ProjectExplorerPlugin::openWithMenuTriggered no action, can't happen."; + return; + } Core::IEditorFactory * const editorFactory = qVariantValue(action->data()); - QTC_ASSERT(m_core, return); - QTC_ASSERT(m_core->editorManager(), return); - QTC_ASSERT(editorFactory, return); + if (!editorFactory) { + qWarning() << "Editor Factory not attached to action, can't happen"<editorManager()->openEditor(currentNode()->path(), editorFactory->kind()); m_core->editorManager()->ensureEditorManagerVisible(); } diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index 81a35c9b65b..7c82264df95 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -176,7 +176,7 @@ QModelIndex DetailedModel::index(int row, int column, const QModelIndex &parent) result = createIndex(0, 0, m_rootNode); } else if (column == 0) { FolderNode *parentNode = qobject_cast(nodeForIndex(parent)); - QTC_ASSERT(parentNode, return result); + Q_ASSERT(parentNode); result = createIndex(row, 0, m_childNodes.value(parentNode).at(row)); } return result; @@ -189,7 +189,7 @@ QModelIndex DetailedModel::parent(const QModelIndex &index) const if (Node *node = nodeForIndex(index)) { if (FolderNode *parentFolderNode = node->parentFolderNode()) { if (FolderNode *grandParentFolderNode = parentFolderNode->parentFolderNode()) { - QTC_ASSERT(m_childNodes.contains(grandParentFolderNode), return parentIndex); + Q_ASSERT(m_childNodes.contains(grandParentFolderNode)); int row = m_childNodes.value(grandParentFolderNode).indexOf(parentFolderNode); parentIndex = createIndex(row, 0, parentFolderNode); } else { @@ -351,8 +351,8 @@ bool DetailedModel::canFetchMore(const QModelIndex & parent) const void DetailedModel::fetchMore(const QModelIndex & parent) { FolderNode *folderNode = qobject_cast(nodeForIndex(parent)); - QTC_ASSERT(folderNode, return); - QTC_ASSERT(!m_childNodes.contains(folderNode), return); + Q_ASSERT(folderNode); + Q_ASSERT(!m_childNodes.contains(folderNode)); m_childNodes.insert(folderNode, childNodeList(folderNode)); } @@ -368,7 +368,7 @@ void DetailedModel::foldersAboutToBeAdded(FolderNode *parentFolder, const QList &newFolders) { Q_UNUSED(newFolders); - QTC_ASSERT(parentFolder, return); + Q_ASSERT(parentFolder); if (m_childNodes.contains(parentFolder)) m_folderToAddTo = parentFolder; @@ -386,7 +386,7 @@ void DetailedModel::foldersAdded() void DetailedModel::foldersAboutToBeRemoved(FolderNode *parentFolder, const QList &staleFolders) { - QTC_ASSERT(parentFolder, return); + Q_ASSERT(parentFolder); if (m_childNodes.contains(parentFolder)) { QList newChildNodes = m_childNodes.value(parentFolder); @@ -416,7 +416,7 @@ void DetailedModel::filesAboutToBeAdded(FolderNode *parentFolder, const QList &newFiles) { Q_UNUSED(newFiles); - QTC_ASSERT(parentFolder, return); + Q_ASSERT(parentFolder); if (m_childNodes.contains(parentFolder)) m_folderToAddTo = parentFolder; @@ -434,7 +434,7 @@ void DetailedModel::filesAdded() void DetailedModel::filesAboutToBeRemoved(FolderNode *parentFolder, const QList &staleFiles) { - QTC_ASSERT(parentFolder, return); + Q_ASSERT(parentFolder); if (m_childNodes.contains(parentFolder)) { QList newChildNodes = m_childNodes.value(parentFolder); @@ -473,7 +473,7 @@ QModelIndex DetailedModel::indexForNode(const Node *node) // update internal cache if (canFetchMore(parentIndex)) fetchMore(parentIndex); - QTC_ASSERT(m_childNodes.contains(parentFolder), return QModelIndex()); + Q_ASSERT(m_childNodes.contains(parentFolder)); int row = m_childNodes.value(parentFolder).indexOf(const_cast(node)); if (row >= 0) @@ -506,7 +506,7 @@ void DetailedModel::addToChildNodes(FolderNode *parentFolder, QList newCh { QList childNodes = m_childNodes.value(parentFolder); QModelIndex parentIndex = indexForNode(parentFolder); - QTC_ASSERT(parentIndex.isValid(), return); + Q_ASSERT(parentIndex.isValid()); // position -> nodes, with positions in decreasing order QList > > insertions; @@ -550,14 +550,14 @@ void DetailedModel::addToChildNodes(FolderNode *parentFolder, QList newCh endInsertRows(); } - QTC_ASSERT(childNodes == newChildNodes, /**/); + Q_ASSERT(childNodes == newChildNodes); } void DetailedModel::removeFromChildNodes(FolderNode *parentFolder, QList newChildNodes) { QList childNodes = m_childNodes.value(parentFolder); QModelIndex parentIndex = indexForNode(parentFolder); - QTC_ASSERT(parentIndex.isValid(), return); + Q_ASSERT(parentIndex.isValid()); // position -> nodes, with positions in decreasing order QList > > deletions; @@ -600,7 +600,7 @@ void DetailedModel::removeFromChildNodes(FolderNode *parentFolder, QList endRemoveRows(); } - QTC_ASSERT(childNodes == newChildNodes, /**/); + Q_ASSERT(childNodes == newChildNodes); } QList DetailedModel::recursiveSubFolders(FolderNode *parentFolder) @@ -663,7 +663,7 @@ QModelIndex FlatModel::index(int row, int column, const QModelIndex &parent) con result = createIndex(0, 0, m_rootNode); } else if (parent.isValid() && column == 0) { FolderNode *parentNode = qobject_cast(nodeForIndex(parent)); - QTC_ASSERT(parentNode, return QModelIndex()); + Q_ASSERT(parentNode); QHash >::const_iterator it = m_childNodes.constFind(parentNode); if (it == m_childNodes.constEnd()) { fetchMore(parentNode); @@ -690,9 +690,9 @@ QModelIndex FlatModel::parent(const QModelIndex &idx) const fetchMore(grandParentNode); it = m_childNodes.constFind(grandParentNode); } - QTC_ASSERT(it != m_childNodes.constEnd(), return QModelIndex()); + Q_ASSERT(it != m_childNodes.constEnd()); const int row = it.value().indexOf(parentNode); - QTC_ASSERT(row >= 0, return QModelIndex()); + Q_ASSERT(row >= 0); parentIndex = createIndex(row, 0, parentNode); } else { // top level node, parent is session @@ -850,8 +850,8 @@ QList FlatModel::childNodes(FolderNode *parentNode, const QSet &bl void FlatModel::fetchMore(FolderNode *folderNode) const { - QTC_ASSERT(folderNode, return); - QTC_ASSERT(!m_childNodes.contains(folderNode), return); + Q_ASSERT(folderNode); + Q_ASSERT(!m_childNodes.contains(folderNode)); QList nodeList = childNodes(folderNode); m_childNodes.insert(folderNode, nodeList); @@ -860,7 +860,7 @@ void FlatModel::fetchMore(FolderNode *folderNode) const void FlatModel::fetchMore(const QModelIndex &parent) { FolderNode *folderNode = qobject_cast(nodeForIndex(parent)); - QTC_ASSERT(folderNode, return); + Q_ASSERT(folderNode); fetchMore(folderNode); } diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index a3f1b307528..e7404b57538 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -376,7 +376,7 @@ void ProjectNode::removeProjectNodes(const QList &subProjects) */ void ProjectNode::addFolderNodes(const QList &subFolders, FolderNode *parentFolder) { - QTC_ASSERT(parentFolder, return); + Q_ASSERT(parentFolder); if (!subFolders.isEmpty()) { const bool emitSignals = (parentFolder->projectNode() == this); @@ -412,7 +412,7 @@ void ProjectNode::addFolderNodes(const QList &subFolders, FolderNod void ProjectNode::removeFolderNodes(const QList &subFolders, FolderNode *parentFolder) { - QTC_ASSERT(parentFolder, return); + Q_ASSERT(parentFolder); if (!subFolders.isEmpty()) { const bool emitSignals = (parentFolder->projectNode() == this); @@ -450,7 +450,7 @@ void ProjectNode::removeFolderNodes(const QList &subFolders, */ void ProjectNode::addFileNodes(const QList &files, FolderNode *folder) { - QTC_ASSERT(folder, return); + Q_ASSERT(folder); if (!files.isEmpty()) { const bool emitSignals = (folder->projectNode() == this); @@ -482,7 +482,7 @@ void ProjectNode::addFileNodes(const QList &files, FolderNode *folder */ void ProjectNode::removeFileNodes(const QList &files, FolderNode *folder) { - QTC_ASSERT(folder, return); + Q_ASSERT(folder); if (!files.isEmpty()) { const bool emitSignals = (folder->projectNode() == this); diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp index 2d20ba3b67b..afaa8b04cce 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp @@ -274,9 +274,9 @@ void RunSettingsWidget::initRunConfigurationComboBox() void RunSettingsWidget::activateRunConfiguration(int index) { - QTC_ASSERT(m_project, return); + Q_ASSERT(m_project); const QList > runConfigurations = m_project->runConfigurations(); - QTC_ASSERT(index < runConfigurations.size(), return); + Q_ASSERT(index < runConfigurations.size()); QSharedPointer selectedRunConfiguration = runConfigurations.at(index); // Change the active run configuration of the project diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index e6461e302a9..c8fdaf50c98 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -141,7 +141,7 @@ QString SessionFile::mimeType() const bool SessionFile::load(const QString &fileName) { - QTC_ASSERT(!fileName.isEmpty(), return false); + Q_ASSERT(!fileName.isEmpty()); if (debug) qDebug() << "SessionFile::load " << fileName; @@ -246,7 +246,7 @@ bool SessionFile::save(const QString &fileName) if (!fileName.isEmpty()) m_fileName = fileName; - QTC_ASSERT(!m_fileName.isEmpty(), return false); + Q_ASSERT(!m_fileName.isEmpty()); if (debug) qDebug() << "SessionFile - saving " << m_fileName; @@ -493,7 +493,7 @@ void SessionManager::setStartupProject(Project *startupProject) qDebug() << Q_FUNC_INFO << (startupProject ? startupProject->name() : "0"); if (startupProject) { - QTC_ASSERT(m_file->m_projects.contains(startupProject), return); + Q_ASSERT(m_file->m_projects.contains(startupProject)); } m_file->m_startupProject = startupProject; @@ -566,7 +566,7 @@ void SessionManager::removeProject(Project *project) bool SessionManager::createImpl(const QString &fileName) { - QTC_ASSERT(!fileName.isEmpty(), return false); + Q_ASSERT(!fileName.isEmpty()); if (debug) qDebug() << "SessionManager - creating new session " << fileName << " ..."; @@ -597,7 +597,7 @@ bool SessionManager::createImpl(const QString &fileName) bool SessionManager::loadImpl(const QString &fileName) { - QTC_ASSERT(!fileName.isEmpty(), return false); + Q_ASSERT(!fileName.isEmpty()); if (debug) qDebug() << "SessionManager - loading session " << fileName << " ..."; @@ -803,7 +803,7 @@ Project *SessionManager::projectForNode(Node *node) const while (rootProjectNode && rootProjectNode->parentFolderNode() != m_sessionNode) rootProjectNode = rootProjectNode->parentFolderNode(); - QTC_ASSERT(rootProjectNode, return 0); + Q_ASSERT(rootProjectNode); QList projectList = projects(); foreach (Project *p, projectList) { diff --git a/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp b/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp index 584d443e3ea..5b03ba2d5b0 100644 --- a/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp +++ b/src/plugins/qt4projectmanager/gdbmacrosbuildstep.cpp @@ -157,9 +157,9 @@ bool GdbMacrosBuildStepFactory::canCreate(const QString &name) const ProjectExplorer::BuildStep *GdbMacrosBuildStepFactory::create(ProjectExplorer::Project *pro, const QString &name) const { - QTC_ASSERT(name == Constants::GDBMACROSBUILDSTEP, return 0); + Q_ASSERT(name == Constants::GDBMACROSBUILDSTEP); Qt4Project *qt4project = qobject_cast(pro); - QTC_ASSERT(qt4project, return 0); + Q_ASSERT(qt4project); return new GdbMacrosBuildStep(qt4project); } diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp index 71fc51f7962..5e6d3fce824 100644 --- a/src/plugins/qt4projectmanager/makestep.cpp +++ b/src/plugins/qt4projectmanager/makestep.cpp @@ -294,7 +294,7 @@ void MakeStepConfigWidget::init(const QString &buildConfiguration) if (!showPage0) { Qt4Project *pro = qobject_cast(m_makeStep->project()); - QTC_ASSERT(pro, return); + Q_ASSERT(pro); m_ui.makeLabel->setText(tr("Override %1:").arg(pro->qtVersion(buildConfiguration)->makeCommand())); const QString &makeCmd = m_makeStep->value(buildConfiguration, "makeCmd").toString(); @@ -309,12 +309,12 @@ void MakeStepConfigWidget::init(const QString &buildConfiguration) void MakeStepConfigWidget::makeLineEditTextEdited() { - QTC_ASSERT(!m_buildConfiguration.isNull(), return); + Q_ASSERT(!m_buildConfiguration.isNull()); m_makeStep->setValue(m_buildConfiguration, "makeCmd", m_ui.makeLineEdit->text()); } void MakeStepConfigWidget::makeArgumentsLineEditTextEdited() { - QTC_ASSERT(!m_buildConfiguration.isNull(), return); + Q_ASSERT(!m_buildConfiguration.isNull()); m_makeStep->setValue(m_buildConfiguration, "makeargs", ProjectExplorer::Environment::parseCombinedArgString(m_ui.makeArgumentsLineEdit->text())); } diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp index fcb07fcf8ae..1b50ee296d2 100644 --- a/src/plugins/qt4projectmanager/qmakestep.cpp +++ b/src/plugins/qt4projectmanager/qmakestep.cpp @@ -234,7 +234,7 @@ QMakeStepConfigWidget::QMakeStepConfigWidget(QMakeStep *step) void QMakeStepConfigWidget::qmakeArgumentsLineEditTextEdited() { - QTC_ASSERT(!m_buildConfiguration.isNull(), return); + Q_ASSERT(!m_buildConfiguration.isNull()); m_step->setValue(m_buildConfiguration, "qmakeArgs", ProjectExplorer::Environment::parseCombinedArgString(m_ui.qmakeAdditonalArgumentsLineEdit->text())); m_ui.qmakeArgumentsEdit->setPlainText(ProjectExplorer::Environment::joinArgumentList(m_step->arguments(m_buildConfiguration))); } diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 03765104ca7..7157c8788f5 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -90,7 +90,7 @@ Qt4PriFileNode::Qt4PriFileNode(Qt4Project *project, Qt4ProFileNode* qt4ProFileNo m_projectDir(QFileInfo(filePath).absolutePath()), m_fileWatcher(new FileWatcher(this)) { - QTC_ASSERT(project, return); + Q_ASSERT(project); setFolderName(QFileInfo(filePath).baseName()); setIcon(QIcon(":/qt4projectmanager/images/qt_project.png")); m_fileWatcher->addFile(filePath); @@ -105,8 +105,8 @@ void Qt4PriFileNode::scheduleUpdate() void Qt4PriFileNode::update(ProFile *includeFile, ProFileReader *reader) { - QTC_ASSERT(includeFile, return); - QTC_ASSERT(reader, return); + Q_ASSERT(includeFile); + Q_ASSERT(reader); // add project file node if (m_fileNodes.isEmpty()) @@ -179,7 +179,7 @@ QList Qt4PriFileNode::supportedActions() const const Qt4ProFileNode *proFileNode; while (!(proFileNode = qobject_cast(folderNode))) folderNode = folderNode->parentFolderNode(); - QTC_ASSERT(proFileNode, return actions); + Q_ASSERT(proFileNode); switch (proFileNode->projectType()) { case ApplicationTemplate: diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index f9a5053fbbe..606e0be1239 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -149,7 +149,7 @@ QStringList Qt4RunConfiguration::commandLineArguments() const ProjectExplorer::Environment Qt4RunConfiguration::environment() const { Qt4Project *pro = qobject_cast(project()); - QTC_ASSERT(pro, return ProjectExplorer::Environment()); + Q_ASSERT(pro); return pro->environment(pro->activeBuildConfiguration()); } @@ -374,8 +374,8 @@ QSharedPointer Qt4RunConfigurationFactory::cr (ProjectExplorer::Project *project, const QString &type) { Qt4Project *p = qobject_cast(project); - QTC_ASSERT(p, /**/); - QTC_ASSERT(type == "Qt4ProjectManager.Qt4RunConfiguration", /**/); + Q_ASSERT(p); + Q_ASSERT(type == "Qt4ProjectManager.Qt4RunConfiguration"); // The right path is set in restoreSettings QSharedPointer rc(new Qt4RunConfiguration(p, QString::null)); return rc; @@ -418,7 +418,7 @@ bool Qt4RunConfigurationFactoryUser::canCreate(const QString &type) const QSharedPointer Qt4RunConfigurationFactoryUser::create(ProjectExplorer::Project *project, const QString &type) { Qt4Project *p = qobject_cast(project); - QTC_ASSERT(p, /**/); + Q_ASSERT(p); QString fileName = type.mid(QString("Qt4RunConfiguration.").size()); return QSharedPointer(new Qt4RunConfiguration(p, fileName)); diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index 2df78994643..3c3de8fd0e0 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -116,7 +116,7 @@ void QtVersionManager::addVersion(QtVersion *version) void QtVersionManager::updateDocumentation() { Help::HelpManager *helpManager = m_core->pluginManager()->getObject(); - QTC_ASSERT(helpManager, return); + Q_ASSERT(helpManager); QStringList fileEndings = QStringList() << "/qch/qt.qch" << "/qch/qmake.qch" << "/qch/designer.qch"; QStringList files; foreach (QtVersion *version, m_versions) { @@ -596,7 +596,7 @@ void QtDirWidget::defaultChanged(int) void QtDirWidget::updateCurrentQtName() { QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem(); - QTC_ASSERT(currentItem, return); + Q_ASSERT(currentItem); int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem); m_versions[currentItemIndex]->setName(m_ui.nameEdit->text()); currentItem->setText(0, m_versions[currentItemIndex]->name()); @@ -645,7 +645,7 @@ void QtDirWidget::fixQtVersionName(int index) void QtDirWidget::updateCurrentQtPath() { QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem(); - QTC_ASSERT(currentItem, return); + Q_ASSERT(currentItem); int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem); m_versions[currentItemIndex]->setPath(m_ui.pathEdit->text()); currentItem->setText(1, m_versions[currentItemIndex]->path()); @@ -656,7 +656,7 @@ void QtDirWidget::updateCurrentQtPath() void QtDirWidget::updateCurrentMingwDirectory() { QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem(); - QTC_ASSERT(currentItem, return); + Q_ASSERT(currentItem); int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem); m_versions[currentItemIndex]->setMingwDirectory(m_ui.mingwLineEdit->text()); } @@ -665,7 +665,7 @@ void QtDirWidget::msvcVersionChanged() { const QString &msvcVersion = m_ui.msvcComboBox->currentText(); QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem(); - QTC_ASSERT(currentItem, return); + Q_ASSERT(currentItem); int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem); m_versions[currentItemIndex]->setMsvcVersion(msvcVersion); diff --git a/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp b/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp index 96f0fd86e58..6b435b5e415 100644 --- a/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp +++ b/src/plugins/qt4projectmanager/wizards/librarywizarddialog.cpp @@ -233,7 +233,7 @@ void LibraryWizardDialog::slotCurrentIdChanged(int id) qDebug("initializing for plugins"); QStringList baseClasses; const int pluginBaseClassCount = sizeof(pluginBaseClasses)/sizeof(PluginBaseClasses); - QTC_ASSERT(defaultPluginBaseClass < pluginBaseClassCount, return); + Q_ASSERT(defaultPluginBaseClass < pluginBaseClassCount); for (int i = 0; i < pluginBaseClassCount; i++) baseClasses.push_back(QLatin1String(pluginBaseClasses[i].name)); m_filesPage->setBaseClassChoices(baseClasses); diff --git a/src/plugins/qt4projectmanager/wizards/modulespage.cpp b/src/plugins/qt4projectmanager/wizards/modulespage.cpp index 959936f1245..fb362732d55 100644 --- a/src/plugins/qt4projectmanager/wizards/modulespage.cpp +++ b/src/plugins/qt4projectmanager/wizards/modulespage.cpp @@ -104,14 +104,14 @@ QString ModulesPage::deselectedModules() const void ModulesPage::setModuleSelected(const QString &module, bool selected) const { QCheckBox *checkBox = m_moduleCheckBoxMap[module]; - QTC_ASSERT(checkBox, return); + Q_ASSERT(checkBox); checkBox->setCheckState(selected?Qt::Checked:Qt::Unchecked); } void ModulesPage::setModuleEnabled(const QString &module, bool enabled) const { QCheckBox *checkBox = m_moduleCheckBoxMap[module]; - QTC_ASSERT(checkBox, return); + Q_ASSERT(checkBox); checkBox->setEnabled(enabled); } From 64a4f93775b3f33d42a725ead5fa367d17f0ba70 Mon Sep 17 00:00:00 2001 From: con Date: Wed, 17 Dec 2008 16:33:42 +0100 Subject: [PATCH 3/3] Fixes: - Known Issues and version in footer --- doc/qtcreator.qch | Bin 3055616 -> 3055616 bytes doc/qtcreator.qdoc | 14 +++++++++++--- doc/qtcreator.qdocconf | 10 +++++----- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/doc/qtcreator.qch b/doc/qtcreator.qch index 2d2985d9cfea1477e0d099daf7f1554d72cfbf65..8733e749a0823e5c71ef692a926effabbfeb8106 100644 GIT binary patch delta 12320 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
@&`mWZ)H*Y z&&=4eodry{ZfD^D@!Phu@PO#{?JNQyx??+w2#D_7&LRP#ySB5)favb+ED9jHXFH1u zi0<9aq5-1&wzKGf=>F|21|WLEb`}#5J#jmWh1wtXHW#&RF6wL^Y=I0+84Q7w1zB9V zr*IgsFsu+^V32&jJ+?=kor&?&_LM&L1&rHSC#e5sW@P~lG;C*`qW+Lsn)4OUwIl7% z_qIPVFjSbKwA*IrY@4Bb_TO~t>3VL{ P&rZ|J+uk@`ubu+{^h=Wl delta 12183 zcmZoTu!|9dH?Xm=oM&J@zgdvuC^M@*BQrzlH zEpBm9PDW-1NdpEw21^Ez0!HTh49xd83kqCiW|e1TW^kQeI7Lr{U4a3tWb=RiHf;{h ziMk97>meFjz5|G8i*hF&J;Y=dTt}f9+cP=9^`^=jP4#DcwBF zw(8fHm9xzkIku;|wVcdSd8EE5$4GFq|E?VKOK0Lz%x2e`Jjhi0zw}g)+2*O6j6+YH zbb1uJ@bgXa+2%%@cg?Ij7;ZRIK+#D1S;FfZTG6L|a_`It*FNExGc~rmSljRJl*cor z9h|*GV>{iZsW09&@w#&T#=Iw=Ql4C&7jkoJRI1pbxmJ8>&7M2gty!~%Q#dsA#BA$h zVV{oinQvHS_WSVP8Air#PcPp|sEj*!BUbZll-HW%@~t+Kk!vg;GtQ{9DHgJbdy&-s zKWCf9(ufz!CY(LV(Khk)rZt-n-E8}x_ezKV{`OTHvL!AaZvXG*wUPI)rb}4;D$$(P zQ@r0)zug}hdz{l>uK(Hbtj$8pPAWG0Zfg?Tf5UTScvV#R>cINWylD~MTce`CTPl{A zwfAvtuU5!1*&na#Q~TuKr|PP+K~3MbY&^0z$4aO;gYEwF<1?pcn9Mqxeh{k@#spVvmweb3f^b(1^)LbSf)q)^kJSG<9ByKUs`D=mtIKP+Epzohf$ zN2d9&f9|cXYgnmycb2oD=kC*wp1uFWJmX{K>QAeS)aRM*TFdoubDnhJD(;tWe)pc6 zTbTa&|BmnHcN8Q|{Ctk}NVHgk{2#us5^mkOh3E7?2BzHjA~df)_0FEhk-l-?HC{CA z&H5s`KibS>Nn}Kf=&~7Q57TAOzp#}4sQhQ`^LsVFcfFbY;c+9Uy;pAs?~e6y`&a4- zZ13~5?*3_=`}E<*%_fU785yl6&s&_p#=yX!oh(0@Wk~@~o7dwVdIBu+&O54QCO0f` zV052+a7h9G=H72|Z`E3K4`oc^uc*2=*g_fE!xYwJ6{{G4pG{0zuio$iH` zSyuEgPMkb(#jg6DYt~KYJO4vKMqu9MZ)Iz}@AoWr`1C^2*S1LH;|>#7<#h^9+qyj~ zjMDll9x3lnKiRs;^`TdX_7!o#J*=<&&T71S_tGx;bn_$GAU0j+H|?xDtX?>+4PCmK zE#GWn+Vhu7!UO($?_QZ{8!*L`J2g=Loz)x}g^vlHj(Q2zzDAAu^;tD?KV%aA-qo15 zXPH{dT(jdbf1md7r+NK)8PPCX;=$UU!<*W#JO3|uWfN8`RcjMm{66A=;q-lCp7R70 zMPBMI+Rv?2w@Q8s%iEM!T+8%~r&!uPf9rT$L;WMyoDUDq*$K(TdbA%n==eDHhNGp| z3!X=4;qJXXD({Zg5v6Bm2_6I0R zsRjL>)@K$oLAyd%+@?3;<&BOK({^SHfyAYAFMf%t5;?kFkWXV*?@k$+tTUc7qt|Tr z(lz0WD7uiIFSY3Ks)<+RmdIV-e#F8)+Uh@FsN*v+?treUjH?CrKMMTYHMcqWU46E7 znbiriD87r0Ys_Qs8}Po|w|~dUbv9jwK|$r;v+OIc%Ce+Jb4+~6cYXVvwI0=+>*_Cl z6+E|M#_a{a!iCLu^lw@8x|(m-w|3{xR!v)4<6cPLE4!dBskGF7bM$SocXLb?kG1>F zZqzyNx_HzvR|nr27aCh^MXi^n9M#vY|Ej6`;rOH~@m-2j-O-d zCU|jel-HuADPL|J7vU`9i)EGPV!GY4eHI5xkowDA+akKG*LF7Vc%|$TJvHj*^)n}r z&lJgfmKuF$m$8$wnbH%1j=qU8KaH+WzEt|!$$ve6+??4LExG0A9S!fv|7p;)TkeY9 zv&~mu9F47?FQ0w?|D~*ImHey%x660GAK3BuUC5H9d!;{$+fUf&AiFF0gK$fM+i#9- zGWBMYnoM1%#2Fra#TCoIz@U3Vb#B&HzdtUoEWUNzNMru<@Vc*CIr9?nQ)NL;M>C(x zJ~rKcx_13;ZKHqX{r3-5>V361zOeTBug~Rk&g7OBKRstt(p%5u_P6^H|JCR=m;Y=6 z&)cqZ-kr3vV(s=P3XcsGyDOJ`nRn*|r}2TOAB}9cCY?w&$q5YXIBq2?Q}nl|=Wkcr zo5=YV%FzKKJEblE>DnC%*%-J*l*g@T_o>&%xwXP3l*@-att=0EF_*{exa223^>FF? zzGszwiexuVTHB0tCwNBxIrnC?vP?^9nFf4?Z) zpd0XGr~3r0wGw{SMk>u~7G_Kruzt2V@VV~6`HcHYl7q|n+5>j3dwlC+7?Z(^wXbWB zmDnDQS+7+$dFSHQ>t&zB{bT!E+`Zd+*VDLik5@A7*#b9oZdZhv^So-$nb)h)V#LeU zVNzvqDEdTDxHkWWA1ksaN={`z_rv4(*GF?-{>r_ycus$Z_VUTuYo9W1+#I+rl(Bx- z)?Uj9y}386n{EGo5PWFKm8CULxcy&WGiX zyaelt>Qno5tiNB}n{Z*pu7D;3r<(@fUQDsK zDgIt)@ys+gW9KK^SBbXA-}0=gUD5rOMZTwRc{lr z;`PD?39cFj=7~(*jMEuvCJVCUY_Dn&lwqvT6lP(V9LB)FXI(L8Z}{z^+hzi_-@|im zW-gl>)|8??_r}5*o;99EXOFI(vuv)9yhD=fqBagG2G!m1_gOgu%~vP?Tv)fjlc9Qp zMRnQ6uK0U?qGv8dtUMiP@`hjOfYD{AX+Je4g?*oAUte}d+D(6Q^N-n^{g;Q=$IWwo zxa<|fi~9GUKEM9{-cRwB;kTzRrfl52+W5!gw^!T0J9rqBxux}O{M;|-VsbQZ@52r0 zvp?=DP*Mu9XM5tB=^pqnru5K_8oT%B`+wbfl2cJrbLW<8-NnvF_Y8HEU)c?{ zK}$3j8kapbYQB?sdH+KH7hm@%pKx_L-Zi&`YjXSty{mUPB*bs+SW{+}_O>T}aY`jG z+f|KKJm-`&c>LS~8Qwniiavcdc7N%d+!-mmN+PUw8%$n$;P%_CjKPK3sn^cytj#~O zc6V?Fw~Kh=?$re%mU~LqL^?b(%=Q;r9#wzmqW$sU)(Kh47kZSq3fjCvW40Lb-QV`; z=A&x8R&5WS=7Z()V$%OOGlUzd_iD_!uy6B+rzKYVN7=nEtJF1)9U8S z*QD%Bj%SG`;=y%q(oMS;_2E)MeCs56W4k)YpK zlc}oleeD_TCU+RuwAO!^p;YPGVf;?uk;%^{t!$R*Y6e%C#DDqu%?2ciJ^~Lpy)N-s|^`eO}k7zqz=0?_QH%`DbcQ-evszWux4F*U+~vwcj$@?XRv| zRWAJJv)#M6fT(JI`hP7M|)F{$iGwPN?xImkl1`3m0s1GhTY3`1c~i ztaj#U@!knBE8jl-o6E}dcAMlAVTsGDUh?6*e^3!ki(y1JrB`_B9C ziq&s+6ov@Dl(D?HiRWfrmdxc3wi=I}>iy=3UvR!)HGf^nyww5~jV9T%KC#VVQZ7*P zmRuEE@KupDvysSW+&+I zYzzzx46N?kSzILUGfNjtOg#Q!XX5+Mjx`3iw7c(D8f~hmd%nN9c0Ttu4+*vh9E}Xj z(u~Cnjgtjgin%+}uFwKsEf#=BfT20BBjMK%n zCEqf3ZD-Mue8{XYNkX-)Ff;$pOY>tjNB_=|3U0c*_&-Cbh^H;cAp+C3vlvJ|WR}!a z?)`Xi(`OFOCet{bJz_IgJCuDef21tIw#`J6?FHK*2F4Fgy|Bk+*Q^b{1ww-Cf~UTX zYh6Bnd1k+m(8{%o-|XDUztL^dhuu06E+v|aOOAz{PjT3%qvoM;B`WLA-{Tiw9BuKP z^l9(Bk4nomdD_;ph=iMq{7kbc`|jphaG-r5yJ4W1=)Ur&*QOhX%)PMJwjnj6-oJBw z4fAsomgyEO`91GKH!sTy`?vLL>drG=BB!ghEk3?PC4IR(!EFNnZD_d zRD+5Gr3&jd^G@?-V*M*`aq!3s$pxD--_4zHhyUD;SH?fqRIlLNxM4}y59^QHgmstB z3l`zCe0JFGo5F|7-ZdVLOqGnuYuC7$+%K6cV%oMYbmHSXmmX}7%b6!*U(a`ZkGbCJ3PX7NVc3IFc;yT;y z(8w+S+Aek6X8+#z)U^8RyFV|I_7?qA;B>uuf15bZXVuiQ z?p}P++v4i=Cfi-A`y)QeDaGtGu-_WEd>BssB zb2v1%|6>(c-}Kf8RB$jc?qp!nVBEP`kYz37^zB!r3+jDUSs13vF);A$teA5*JTUl< znLyq1@SMAuzXWpRC!AwRn&a8O0xyI>-F;RN&VIqvuvKM zJd==<8Gh^UzWne-6}9G*3r_cnM#-vK-_&4SmvxuJ)Yhlv>dVv9_rFK_kZ zJpS?N^UdgtyFPi0_5bG7{`&gku*4*j^XtDItE?-jWU1e`-^P+HhEs2j;MUWhw=d^Z zv6y;);$y$8zZKVZs2vQ=TxzkeUpS6s||Qo~@K zP{h8#luWLl@=@Q6^FAv-i}-gk$%7@Cb2|9`fXdEtXQ2Q4bZDmN(eYhE#x(Bq$c?!#@CsKe^* zo_Cb?zI3gfYjt;taf>m3KVl1sKxUPQKt)3&gznI^AhP30vWpghEA5QDHUA!~p zT9?&o-FHvKH|Htt%(XnOdUw&|_Rg@wPmA*#-nq&dXlmWn`Ou#{^+`bH<$~fF3qrE= zQjgDCFzrXKbr}Es;)^@PQcb1)x|mox_p{9q2@aY4MEK5kvpUPWy0YKOCT|khtQirk zEMsiu8kZlV)&A$Ybo-y{GTZ-Lm*tpK&o@;!@nXm(|Cmgh8|yd?LpQw;Q@ItkI;dht z(fSh#jNZjRUafH{3Y+x#f(w(SL11p9*NeT=4kgAN5{urn$@JRpgxjUuUy2M)U0kr7 zUFzT2=*3&7KQ(f6;5^a3wN-nqmO#`7RgP6}7O-Y;@8_AY?!u!fD{D5Jc!%!Gw%GP* zUGwSs<9z@4E@U;^gd9H5?!x)MF|+rS;~@|2=Xd4qYO|kd^Y@bQF3ZW)y7v0g-kHBDB;dr|fAUesLVg@dz4OoCwa`cSr}xbrOC2j5l`eNC)m$`sb?wWt+#1uTm;yq5*yq+_syvn(`CGI+##X=#|;71n5RrNpm-V~cf8FsJFPE3@JSzJ7! zUv$Zd{%Wt!3wWB7)2)hLAM0k1a^f@fRtk5rh+;JVC;g4*Y}cfP@ek6zd_A~-!S`C_ zORYI7w`Odw58BTi-CK82aJ4~0P-dQ8no!VYpE<7kyG4^;ytuIc0(Zc*g39f+8`~dt z_fOyLocQtO_xsKDwymONe=QuUv`cpjO6I&g{OiI0M+HfrxO$FwE_xjH$}-Z)iu;GI z_XhbzEzg3ge2+?*w)hm+MI5y}U?6PUM%?Z;7!aF$1Pdr zzt;VV4b8B*>Qkb=FuOHqjbJhRr{jt$eeMr_JpQ~S_`&@1nS8C1U3&3Dc|nX7rU&2znCfp!aTn%Sc`-KraV5{>j))df<6lFvq`a;%uX zoS>e~|tIOm}7U9rS?g{$de@=7u>$_jheS6|$Zn@?|XOe{r&#}dGe_vI6KR@pBr{K%$ z4y(4$n_f}l%D(xg_b#LDUN$@D?w#>QPI*qum3>cE?00_q#GJ=Bg#YQOpfwWf6Rg8m zf!cajcWQ&%Z0o<}Z`a=@1}bkE8TK)N5U9}!#*<}OR@V2KYqBuRDPmv{cu_IuXn1!1 zonxYZ-^CZ6UXa(+@x-f$(R_FJ^{``f}<>%vy2l+KXY?eV?8ukTl_ zpuW|$Cg#b$F0KVMbVO}l~1>xv9GXtd;LQHqL(e_F4Z+n&$xPL($rrnTE34{AIG|Q zYd=4*X5|y-OYC#(qHdpHw_hjy=Xm*Ct^DMCtKTJ;Hw1A%51BcI&#y`L`Sqw>OQ&pj zc73f)r;X0?M8<9Dne)BEW@Po+$B9G*)hFhtzV&S3njZ8zETnc~d-?UQqMG=Xr}PiD z-F$PtXWjNc!4ofJF;2>`Y`_2e;n~?`n;(8qIAt8Ff8wT)$CaeUqB}n$X199YN)voL z>&Cl9OGCPszMrq&xXjXFebxKqfWUuyG-H0R`p^5>MmE5zGwQKTy8c_UBSK#fR?q8X zyy*M2{;^faHg~)8&sL~Tb(606pJrBVDE?WaK09mXQk&LSpV(iZS#mvvOO{hp0n@ksOt7yNO?ASgQw-Ewy5lP7Z0ec z*m7*=j;n{x_pbdOux{7YOWwO&CW?nuL|&Y^XZo!zrmy^-pWVA@8Rz-?ar5TZAAh#0 zj`4Tn)B2N_cDLx+S_^-7s(*RGV1xeyp}oPr-#4%)c>Q`gt4@(I#(rT^+S81l!>YEM zbh~E9OX~M;-g2U|Sj#&5=1+$6m%q$&FluAcvpzaeAt_SRpMimW9w0^@;*J(yf@n)a$D9rm(@Xhs~6u-qiUKskNSIK_Pl_Oib^jy@N zot7)|?wuF1p#6Qd^t>?MD52|z*?%fHzh5~u?<`-`!kkMMI}|yk+e){1y|G=RvGS{! zQg(<`(xGEo`@XWJt__;X^!D(d)r?Jt>mLU;FIW8&Rcx=mE4E&}AT1e@ zAN(U==ajvCfv0b8GGDlSa!nl%&-xkfEyQ+jaF=eYoS%Jj_9{p76TIvf)ipo1Zr{5) zV$G|dn#N=%A3LibK`BS;r}v)mF1+Hg`cj?88dHWNi#NA>n55{KG^{HYOIV_lymE`# z1QWA*wF;LM_V@X(g*x&yPnaqvHwY`;I#tD_0vQ#bEj*-(0R#hyeShp5^o$u`B$4QDOiCVfR?N$?(_qOC-g$(1`yad9MZZpMTPeGwPg0O+S-rzO_1MSkUDI!GJblOM)l`2b zj@6eNzROKomVf$7lgEeXNS00WL(FckOWZtrlgAX9X+q9HGIm=nLuQt)Wb?1o}?~Hh(D(`p?H^!V4lc~cdOK%e|2o09Qt#lsTb~--?_ZsudXt?yA$01Km$PrA znqOO+nsm>uGDYgG;J0OUh3>0nIM?gUbh*l(!~FKjR<+;Ck0oO~PD-i2*unQNzF>{k zy+Z$^oXjFpGsIlgnUo@W9CwQ!$^Np8N+~hP4xBZ|N-Q{mbvxsn^H+!23<+(M6t@9oMdV+02SO#ia;yMOYtK3n!P zE-7T*U1_%dMStG;M9#ULH(Sl9D&pZ+P1$qL)xYeG)&6-=qjHb3ZRHN*(0_9mCO+6L zet$i0T+(_%c&J^k_3X42aym!>5?5T1J_-TT(|^!c%GAHAL(cG=W={Tj>D ze4i@aa23>^H9;z4vHyxBR*Lf2w}YnRVfnZT+GBr?;Pv+i$Zx zNA1Y&#l?zx_hK&S>))&SK5Ieex~AYzfk!{TOQzlsG7tQa@a%F`T)S2CwHNd0(0Sa)%9j?u2#?s;d^RO+_v%D>soExDxPwcz9j z_EWFDIpW2-Fl*k_p0&5a9@VapsXv_%`%iAZ$!u5mh-<8eqF6*t#Mk%Sm8g1Idw$-V zNp*4#iz@4WeK>el(cX4}`}qa$KRWR+1%_yERy+Pn=e10H`W1_~d8v!n-ki04>C|=e zejeKu@b%zx=afgx4^PcHp!UPF(a7|EO-IPI zq25>ECBqT%B#zR+TUFij6}-=eM1^m*K7F8}YwNod+X)GOzRg{;?0xSlXXb5Zp3isx z(%juYYe|^)1dq=`W$TZxPuLyZxcKmzh!th7_d+>VP1RoVx^_n9?oE~HVK-|<%Y&|L zh%!yAxL+6|!mwX%jlW;&QRm=a?_PfJ`CVweuw_d`y?oM_H}7KBFqrP^Zj}+-n|gfB z)MeAF9QH-%OcYzSX4{5;33m2zr&7cAY|zzrxzl7^bbMjp?(TW@QvHV)SDJA=c=$*; zZBfLOiuYZ6@9P~@Os)Rkk{A11T}yQRG2UIX%oc_3fB&~^byB;}(f-DB?7d%Nxk@ee z2*m1iG;?ls`S6A{eu~S>r1n3}a_xVb<=g)>D{TMMtjMy4g@J*iZ~H+Dc6;XO&gM!7 z82h&$v;lLhl@2gY*nZFf%&}KGz&LUHK^HK`S?K`dr0oYiz#Mm_1B{cmAM^opyp;|x zPT77i0L<}MI>0z}`@s+}Cs^qKX%r z?FTEsoN}cDjPti2tO0YXl@2g2*nY49%&Av8z_@Vx!4@#5S?K`dqU{Gez?^oa1B{Ee zAM62hx|I$vF4=x?0+`dUbbxW`_JdQvoXJWD7?*87I0MX?u5^HL`Syczz?|7i2N+ju zKezzQnXhz!apm@dOTe7PN(UHMZ9ljI%vr8yFGA2Z|n?JPT#{xdUf*v_&CL~q>AasWhc+RkzWL~q{C zasote+0JqXL~q^Basfnd+s<+YL~q~Dasx!~*v@hXMDN_r@&H8d+RpL>MDO0t@&ZKf z+0OC?MDN|s@&QEe+s^U@MDO3u@&iO4*v|3?L?7JBqWqtk@z8b_FnxGC3kQgQWIGEF zh(5ZVMF2z}+s+~aqK|K9kpR&rwzJ59=#$%76hQQ;?JO!F`t)`d4G?{1JBtp8KD(X8 z07ReL&SCi`!WoK=h^UEG{7W@^%&v5PfAkiw}stx}7BeL|@y^ z5(1*HZ)b@B(KoiU#DM6V+gTDo^sVhIDIogxc9skfeP=sM4v4`AWdewPww+}Ph@9WdVqOwVh=Nh}BWdn$Qx1D7Rhh)i2lBvJ(TrPJ zRQ@wFGHqu8)6CmhI6!=s?JPVXnsqyi0ElMW&LRS$*|)PufM|~GEHWUPb32Oyi00bP zq5`71x3g$~XrApXIv|>NJBtB`=G)F<0;2i1vsi#=f$c0dAX;!civx%j+RowvqJ_7! zcz|e;?JPbZT68;00Eiab&JqHm#kaFWfM|*BEHNNjayv@`h?d&Uk^-Wox3gq`XqoLS zIUrhgJ4*qGmfOx!0;1)&vs8d+h3zagAX;%dO9O~j+RoAfqLsI^bbx4;?JPYYT6H_i z1Q4yZon;D$R^QGt14L_VXPE<{HMg@Y0MT08S(bok?d>cpK(x+wmNg(+cRR}l5UsbJ zWebSb-_EiFL>p{p*#n{tx3e4o(MH=@j(}+6?JOriw8?gsGa%Y@JIe(SZML1|3Wzq} z&T<1pTWn{!1EMXrvpfLNR@+&gfN1OOEH6N`&32YIAli02%Lfo`x1Hq+h_>I(@&iOW zY-jlcq8+!gsQzbWblT1Wrk%I5aDezO+gW%(wCi>j0TAuBokavhyKiTa0MQ=XS!6)8 z=XMqa5bd>{MFm8AZ)ec}(LUQ*bU?K4b`}E=?YEu91VsC9XR!d$0oz$@Ky=`C76%X= zw4KETL5FNFhB?UxB zZ)eE>(J|XuazJ$Kc9sGV9k-pO1VqPgXQ=?u3ENp}Ky>1EmIe@=w4J2|L?>@&=>X9w z+gW-*bn14N2_QOcJIfRhoxYuA28hns&N2r?XKrU%0HU+Dvn&D8+1puGfasjYPmJcAhZad2t z5M95WTDitK@3b83_+6xS=_j%up6*2 ztPo;gkbJv6rbnHfX?sea`T|DAPup20sQ+eW1$E+CwzEu8f5lpw$0FLo1xt{LucCz-LwCu3s2X}n|^khp4;}u I>3a1X0J;_sBme*a diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 0b5da293d8e..af3b3da5718 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -1195,10 +1195,18 @@ \o The file system sidebar does not update automatically. As a workaround, switch to another directory and then back. - \o The resource system of the embedded version of Qt Designer does not - interact with the project manager. - \o Loading KDE4 designer plugins breaks the style, due to a bug in KDE. + + \o Scopes in .pro files are ignored, and environment variables not expanded. + + \o Code completion for generated UI header files is not updated properly + after the first time. + + \o Code completion does not support typedefs (e.g. std::string) and + private classes (e.g. class MyClass::Data {};). + + \o On Gnome, after minimizing Qt Creator and restoring again, the + application window does not repaint properly until resized. \endlist */ diff --git a/doc/qtcreator.qdocconf b/doc/qtcreator.qdocconf index 4cc07d2dc70..b1a99f1319b 100644 --- a/doc/qtcreator.qdocconf +++ b/doc/qtcreator.qdocconf @@ -17,15 +17,15 @@ sources.fileextensions = "qtcreator.qdoc" qhp.projects = QtCreator qhp.QtCreator.file = qtcreator.qhp -qhp.QtCreator.namespace = com.nokia.qtcreator.09 +qhp.QtCreator.namespace = com.nokia.qtcreator.091 qhp.QtCreator.virtualFolder = doc qhp.QtCreator.indexTitle = Qt Creator qhp.QtCreator.indexRoot = qhp.QtCreator.extraFiles = classic.css \ images/qt-logo.png -qhp.QtCreator.filterAttributes = qtcreator 0.9 -qhp.QtCreator.customFilters.QtCreator.name = Qt Creator 0.9 -qhp.QtCreator.customFilters.QtCreator.filterAttributes = qtcreator 0.9 +qhp.QtCreator.filterAttributes = qtcreator 0.9.1 +qhp.QtCreator.customFilters.QtCreator.name = Qt Creator 0.9.1 +qhp.QtCreator.customFilters.QtCreator.filterAttributes = qtcreator 0.9.1 # macros.qdocconf @@ -201,5 +201,5 @@ HTML.footer = "


\n" \ "\n" \ "\n" \ "\n" \ - "\n" \ + "\n" \ "
Copyright © 2008 Nokia 
Qt Creator 0.9
Qt Creator 0.9.1
"