forked from qt-creator/qt-creator
Merge branch 'master' of git@scm.dev.nokia.troll.no:creator/mainline
This commit is contained in:
@@ -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
|
||||
*/
|
||||
|
||||
|
@@ -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)
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -56,7 +56,7 @@ public:
|
||||
QString trCategory() const;
|
||||
QWidget* createPage(QWidget *parent);
|
||||
void apply();
|
||||
void finish() { }
|
||||
void finish();
|
||||
|
||||
private slots:
|
||||
void resetInterfaceColor();
|
||||
|
@@ -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));
|
||||
|
@@ -598,7 +598,11 @@ bool CppCodeCompletion::completeMember(const QList<TypeOfExpression::Result> &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<Symbol *> candidates = context.resolve(namedTy->name());
|
||||
foreach (Symbol *candidate, candidates) {
|
||||
@@ -689,12 +693,18 @@ bool CppCodeCompletion::completeMember(const QList<TypeOfExpression::Result> &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) {
|
||||
|
@@ -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());
|
||||
|
@@ -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;
|
||||
|
@@ -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) {
|
||||
|
@@ -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())
|
||||
|
@@ -58,8 +58,6 @@ public:
|
||||
|
||||
void invokeClearResults();
|
||||
|
||||
void paintEvent(QPaintEvent *event);
|
||||
|
||||
private slots:
|
||||
void invokeFindNext();
|
||||
void invokeFindPrevious();
|
||||
|
@@ -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();
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -38,9 +38,11 @@
|
||||
#include <QtCore/QStringList>
|
||||
#include <QtGui/QWidget>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QWidget;
|
||||
class QLabel;
|
||||
class QLineEdit;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace Qt4ProjectManager {
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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()
|
||||
|
Reference in New Issue
Block a user