Commit 1b3e3fb7 authored by mae's avatar mae
Browse files

Merge branch 'master' of git@scm.dev.nokia.troll.no:creator/mainline

parents 2faf32c7 e5c845fc
......@@ -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 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 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 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 \c{.pro} files are reformatted if files have been added or removed.
Whitespace is not preserved.
\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 files to include (\c .pri) files.
\o There is no IDE support for adding files to include (\c .pri) files.
\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/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 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 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 Code completion does not support typedefs (e.g. std::string) and
private classes (e.g. class MyClass::Data {};).
\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()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment