diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 6713d82e6d8..f9e55ba866d 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -5,13 +5,13 @@ \title Qt Creator Manual - \section1 Version 0.9.1 (Beta) + \section1 Version 0.9.2 (Release Candidate) The goal of Qt Creator is to provide a cross-platform, complete Integrated Development Environment (IDE) to develop Qt projects. It is available for the Linux, Mac OS X and Windows platforms. - \note The current version of Qt Creator is 0.9.2 (Beta). It is + \note The current version of Qt Creator is 0.9.2 (Release Candidate). It is possible to edit source code, compile, run and debug applications; other features are still under development. Please send bug reports and suggestions to qt-creator@trolltech.com. To subscribe, send a @@ -59,7 +59,7 @@ \o \l{Tips and Tricks} \o \l{Keyboard Shortcuts} \o \l{Glossary} - \o \l{Known Issues of Version 0.9.1 (Beta)} + \o \l{Known Issues of Version 0.9.2 (Release Candidate)} \endlist */ @@ -1406,56 +1406,56 @@ \previouspage creator-keyboard-shortcuts.html \page creator-known-issues.html - \title Known Issues of Version 0.9.1 (Beta) + \title Known Issues of Version 0.9.2 (Release Candidate) - There are some known issues with Qt Creator 0.9.1 (Beta). + There are some known issues with Qt Creator 0.9.2 (Release Candidate). The development team is aware of those, there is no need to report them as bug. \list - \o The central editor sometimes loses it "changed" status marker. + \o Paths or file names containing spaces or special characters, e.g., + colons, dollar signs, hash marks etc. may cause difficulties. This + is because some of the tools Qt Creator uses in the background have + restrictions on the characters allowed in file and directory names. + To be on the safe side, we recomment creating projects and project + items with names consisting of plain characters, numbers, + underscores, and hyphens. - \o There is a kernel bug essentially making debugging unreliable on - 2.6.24 kernels for i386 (which is, unfortunately, the default on - Ubuntu 8.04). See - \l{https://bugs.launchpad.net/ubuntu/+source/gdb/+bug/230315/} for - details. The only solution to this problem is to boot another - kernel. - - \o Gdb may take long to load debugging symbols, especially from large - libraries like \c libQtWebKit. Starting the debugging module can - take up to several minutes without visible progress. + \o \c{.pro} files are reformatted if files have been added or removed. + Whitespace is not preserved. - \o Paths or file names containing spaces or special characters, e.g., - colons, dollar signs, hash marks etc. may cause difficulties. This - is because some of the tools Qt Creator uses in the background have - restrictions on the characters allowed in file and directory names. - To be on the safe side, we recomment creating projects and project - items with names consisting of plain characters, numbers, - underscores, and hyphens. + \o There is no IDE support for adding files to include (\c .pri) files. - \o \c{.pro} files are reformatted if files have been added or removed. - Whitespace is not preserved. + \o There is no IDE support for adding/removing sub-projects. Project + hierarchies (SUBDIRS template) have to be created manually. - \o There is no IDE support for adding files to include (\c .pri) files. + \o The file system sidebar does not update automatically. As a + workaround, switch to another directory and then back. - \o There is no IDE support for adding/removing sub-projects. Project - hierarchies (SUBDIRS template) have to be created manually. - - \o The file system sidebar does not update automatically. As a - workaround, switch to another directory and then back. - - \o Loading KDE4 designer plugins breaks the style, due to a bug in KDE. + \o Loading KDE4 designer plugins breaks the style in KDE < 4.2.1 + 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 for generated UI header files is updated only + after a build. - \o Code completion does not support typedefs (e.g. std::string) and - private classes (e.g. class MyClass::Data {};). + \o Code completion does not support typedefs for nested classes. + + \o There is a kernel bug essentially making debugging unreliable on + 2.6.24 kernels for i386 (which is, unfortunately, the default on + Ubuntu 8.04). See + \l{https://bugs.launchpad.net/ubuntu/+source/gdb/+bug/230315/} for + details. The only solution to this problem is to boot another + kernel. + + \o Gdb may take long to load debugging symbols, especially from large + libraries like \c libQtWebKit. Starting the debugging module can + take up to several minutes without visible progress. + + \o Setting breakpoints in files that do not have unique absolute + paths may fail. For example, remounting parts of a file system + using the --bind mount option. - \o On Gnome, after minimizing Qt Creator and restoring again, the - application window does not repaint properly until resized. \endlist */ diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp index 6797a50888e..33d83f67efb 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp @@ -116,8 +116,6 @@ QWidget *ShortcutSettings::createPage(QWidget *parent) commandChanged(0); - delete m_page; - return w; } @@ -131,6 +129,8 @@ void ShortcutSettings::finish() { qDeleteAll(m_scitems); m_scitems.clear(); + + delete m_page; } bool ShortcutSettings::eventFilter(QObject *o, QEvent *e) diff --git a/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp b/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp index 2d36105d345..82ab917bc4e 100644 --- a/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp +++ b/src/plugins/coreplugin/editormanager/stackededitorgroup.cpp @@ -218,7 +218,6 @@ void StackedEditorGroup::addEditor(IEditor *editor) void StackedEditorGroup::insertEditor(int index, IEditor *editor) { - EditorGroup::insertEditor(index, editor); if (m_container->indexOf(editor->widget()) != -1) return; @@ -232,6 +231,9 @@ void StackedEditorGroup::insertEditor(int index, IEditor *editor) } connect(editor, SIGNAL(changed()), this, SLOT(checkEditorStatus())); + bool block = m_editorList->blockSignals(true); + EditorGroup::insertEditor(index, editor); + m_editorList->blockSignals(block); emit editorAdded(editor); } diff --git a/src/plugins/coreplugin/generalsettings.cpp b/src/plugins/coreplugin/generalsettings.cpp index b21db43fa35..f2b51c1204c 100644 --- a/src/plugins/coreplugin/generalsettings.cpp +++ b/src/plugins/coreplugin/generalsettings.cpp @@ -77,7 +77,7 @@ QWidget *GeneralSettings::createPage(QWidget *parent) this, SLOT(resetExternalEditor())); connect(m_page->helpExternalEditorButton, SIGNAL(clicked()), this, SLOT(showHelpForExternalEditor())); - delete m_page; + return w; } @@ -88,6 +88,11 @@ void GeneralSettings::apply() EditorManager::instance()->setExternalEditor(m_page->externalEditorEdit->text()); } +void GeneralSettings::finish() +{ + delete m_page; +} + void GeneralSettings::resetInterfaceColor() { m_page->colorButton->setColor(0x666666); diff --git a/src/plugins/coreplugin/generalsettings.h b/src/plugins/coreplugin/generalsettings.h index aff4d0c8809..f31edf2cfb4 100644 --- a/src/plugins/coreplugin/generalsettings.h +++ b/src/plugins/coreplugin/generalsettings.h @@ -56,7 +56,7 @@ public: QString trCategory() const; QWidget* createPage(QWidget *parent); void apply(); - void finish() { } + void finish(); private slots: void resetInterfaceColor(); diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index c61dbbbe3e1..2bd86a68888 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -871,10 +871,11 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt painter->setPen(StyleHelper::borderColor()); if (horizontal) { - // Note: This is a hack to determine if we are the topmost - // toolbar and menu bar should draw the outline + // Note: This is a hack to determine if the + // toolbar should draw the top or bottom outline + // (needed for the find toolbar for instance) QColor lighter(255, 255, 255, 40); - if (widget->mapToParent(rect.topLeft()).y()) { + if (widget && widget->property("topBorder").toBool()) { p->drawLine(rect.topLeft(), rect.topRight()); p->setPen(lighter); p->drawLine(rect.topLeft() + QPoint(0, 1), rect.topRight() + QPoint(0, 1)); diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp index df68e5778dc..bca1d576e9f 100644 --- a/src/plugins/cpptools/cppcodecompletion.cpp +++ b/src/plugins/cpptools/cppcodecompletion.cpp @@ -598,7 +598,11 @@ bool CppCodeCompletion::completeMember(const QList &re if (ReferenceType *refTy = ty->asReferenceType()) ty = refTy->elementType(); - if (NamedType *namedTy = ty->asNamedType()) { + if (Class *classTy = ty->asClass()) { + Symbol *symbol = result.second; + if (symbol && ! symbol->isClass()) + classObjectCandidates.append(classTy); + } else if (NamedType *namedTy = ty->asNamedType()) { // ### This code is pretty slow. const QList candidates = context.resolve(namedTy->name()); foreach (Symbol *candidate, candidates) { @@ -689,12 +693,18 @@ bool CppCodeCompletion::completeMember(const QList &re } if (PointerType *ptrTy = ty->asPointerType()) { - // Replace . with -> - int length = m_editor->position() - m_startPosition + 1; - m_editor->setCurPos(m_startPosition - 1); - m_editor->replace(length, QLatin1String("->")); - ++m_startPosition; - namedTy = ptrTy->elementType()->asNamedType(); + if (ptrTy->elementType()->isNamedType()) { + // Replace . with -> + int length = m_editor->position() - m_startPosition + 1; + m_editor->setCurPos(m_startPosition - 1); + m_editor->replace(length, QLatin1String("->")); + ++m_startPosition; + namedTy = ptrTy->elementType()->asNamedType(); + } + } else if (Class *classTy = ty->asClass()) { + Symbol *symbol = result.second; + if (symbol && ! symbol->isClass()) + classObjectCandidates.append(classTy); } else { namedTy = ty->asNamedType(); if (! namedTy) { diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 82c48f37fb4..b8bffaa14eb 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -620,6 +620,7 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes m_debugMode->setWidget(splitter2); QToolBar *debugToolBar = new QToolBar; + debugToolBar->setProperty("topBorder", true); debugToolBar->addAction(am->command(ProjectExplorer::Constants::DEBUG)->action()); debugToolBar->addAction(am->command(Constants::INTERRUPT)->action()); debugToolBar->addAction(am->command(Constants::NEXT)->action()); diff --git a/src/plugins/designer/formeditorplugin.cpp b/src/plugins/designer/formeditorplugin.cpp index 823efb590d1..862b29cb46e 100644 --- a/src/plugins/designer/formeditorplugin.cpp +++ b/src/plugins/designer/formeditorplugin.cpp @@ -108,7 +108,11 @@ bool FormEditorPlugin::initialize(const QStringList &arguments, QString *error) addObject(m_factory); // Make sure settings pages and action shortcuts are registered - FormEditorW::ensureInitStage(FormEditorW::RegisterPlugins); + // TODO we don't want to do a full initialization here, + // we actually want to call ensureInitStage(FormEditorW::RegisterPlugins) + // But due to a bug in kde 4.2.0 this crashes then when opening the file dialog + // This should be removed after 4.2.1 is out + FormEditorW::ensureInitStage(FormEditorW::FullyInitialized); error->clear(); return true; diff --git a/src/plugins/designer/workbenchintegration.cpp b/src/plugins/designer/workbenchintegration.cpp index 6f699b83817..bb657999ca4 100644 --- a/src/plugins/designer/workbenchintegration.cpp +++ b/src/plugins/designer/workbenchintegration.cpp @@ -564,7 +564,7 @@ bool WorkbenchIntegration::navigateToSlot(const QString &objectName, // Find the class definition in the file itself or in the directly // included files (order 1). QString namespaceName; - const Class *cl; + const Class *cl = 0; Document::Ptr doc; foreach (const Document::Ptr &d, docList) { diff --git a/src/plugins/find/findtoolbar.cpp b/src/plugins/find/findtoolbar.cpp index 7d8072b7ac3..e4bb642a48c 100644 --- a/src/plugins/find/findtoolbar.cpp +++ b/src/plugins/find/findtoolbar.cpp @@ -78,6 +78,7 @@ FindToolBar::FindToolBar(FindPlugin *plugin, CurrentDocumentFind *currentDocumen m_ui.setupUi(m_widget); addWidget(m_widget); setFocusProxy(m_ui.findEdit); + setProperty("topBorder", true); connect(m_ui.findEdit, SIGNAL(editingFinished()), this, SLOT(invokeResetIncrementalSearch())); @@ -225,16 +226,6 @@ FindToolBar::~FindToolBar() { } -void FindToolBar::paintEvent(QPaintEvent *event) -{ - QToolBar::paintEvent(event); - - QPainter p(this); - const QRect r = rect(); - p.setPen(StyleHelper::borderColor()); - p.drawLine(r.topLeft(), r.topRight()); -} - bool FindToolBar::eventFilter(QObject *obj, QEvent *event) { if ((obj == m_ui.findEdit || obj == m_findCompleter->popup()) diff --git a/src/plugins/find/findtoolbar.h b/src/plugins/find/findtoolbar.h index ce3dfdd7449..030a57876a3 100644 --- a/src/plugins/find/findtoolbar.h +++ b/src/plugins/find/findtoolbar.h @@ -58,8 +58,6 @@ public: void invokeClearResults(); - void paintEvent(QPaintEvent *event); - private slots: void invokeFindNext(); void invokeFindPrevious(); diff --git a/src/plugins/find/searchresulttreeview.cpp b/src/plugins/find/searchresulttreeview.cpp index 3b51d9e0c1d..6887fa9bf80 100644 --- a/src/plugins/find/searchresulttreeview.cpp +++ b/src/plugins/find/searchresulttreeview.cpp @@ -76,6 +76,9 @@ void SearchResultTreeView::appendResultLine(int index, const QString &fileName, void SearchResultTreeView::emitJumpToSearchResult(const QModelIndex &index) { + if (model()->data(index, ItemDataRoles::TypeRole).toString().compare("row") != 0) + return; + QString fileName = model()->data(index, ItemDataRoles::FileNameRole).toString(); int position = model()->data(index, ItemDataRoles::ResultIndexRole).toInt(); int lineNumber = model()->data(index, ItemDataRoles::ResultLineNumberRole).toInt(); diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index 88f7b53e559..a8e14e98689 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -527,6 +527,9 @@ void SessionManager::setStartupProject(Project *startupProject) Q_ASSERT(m_file->m_projects.contains(startupProject)); } + if (m_file->m_startupProject == startupProject) + return; + m_file->m_startupProject = startupProject; emit startupProjectChanged(startupProject); } diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.h b/src/plugins/qt4projectmanager/qt4runconfiguration.h index ce1d44769e0..0913fc0861c 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.h @@ -38,9 +38,11 @@ #include #include +QT_BEGIN_NAMESPACE class QWidget; class QLabel; class QLineEdit; +QT_END_NAMESPACE namespace Qt4ProjectManager { diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp index 790edab4571..c67f976e59c 100644 --- a/src/shared/proparser/profileevaluator.cpp +++ b/src/shared/proparser/profileevaluator.cpp @@ -1841,7 +1841,8 @@ bool ProFileEvaluator::Private::evaluateConditionalFunction(const QString &funct dirstr = file.left(slsh+1); file = file.right(file.length() - slsh - 1); } - cond = QDir(dirstr).entryList(QStringList(file)).count(); + if (file.contains('*') || file.contains('?')) + cond = QDir(dirstr).entryList(QStringList(file)).count(); break; } diff --git a/src/shared/qrceditor/resourceview.cpp b/src/shared/qrceditor/resourceview.cpp index cb010f0f4b9..94df537f2ce 100644 --- a/src/shared/qrceditor/resourceview.cpp +++ b/src/shared/qrceditor/resourceview.cpp @@ -413,7 +413,7 @@ QStringList ResourceView::fileNamesToAdd() { return QFileDialog::getOpenFileNames(this, tr("Open file"), m_qrcModel->absolutePath(QString()), - tr("All files (*.*)")); + tr("All files (*)")); } void ResourceView::onAddFiles()