aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgoro <qtc-committer@nokia.com>2008-12-11 15:40:35 +0100
committergoro <qtc-committer@nokia.com>2008-12-11 15:40:35 +0100
commitf26f458f51f2d2a7a950890ea5f00e01b5f11eae (patch)
treefdad5883d0b77d13ef1fcbf851d4d1a429f09a02
parent9042ff32b05ade9388e552f0a872abe63fd309c8 (diff)
parentc4b222695e30276c6a911eb361721fd3f3ad87ac (diff)
Merge branch '0.9.1-beta' of git@scm.dev.nokia.troll.no:creator/mainline into 0.9.1-beta
-rw-r--r--doc/coding-style.qdoc246
-rw-r--r--src/libs/cplusplus/TypeOfExpression.cpp2
-rw-r--r--src/libs/utils/pathchooser.cpp7
-rw-r--r--src/plugins/coreplugin/navigationwidget.cpp4
-rw-r--r--src/plugins/cppeditor/cppeditor.cpp3
-rw-r--r--src/plugins/debugger/debugger.pro2
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp8
-rw-r--r--src/plugins/debugger/debuggerplugin.h2
-rw-r--r--src/plugins/debugger/gdbengine.h2
-rw-r--r--src/plugins/debugger/gdboptionpage.cpp49
-rw-r--r--src/plugins/debugger/gdboptionpage.h6
-rw-r--r--src/plugins/debugger/gdboptionpage.ui53
-rw-r--r--src/plugins/debugger/gdbtypemacros.ui32
-rw-r--r--src/plugins/git/settingspage.cpp2
-rw-r--r--src/plugins/texteditor/basetexteditor.cpp35
15 files changed, 355 insertions, 98 deletions
diff --git a/doc/coding-style.qdoc b/doc/coding-style.qdoc
new file mode 100644
index 00000000000..f028e56fe74
--- /dev/null
+++ b/doc/coding-style.qdoc
@@ -0,0 +1,246 @@
+/*!
+
+\contentpage{index.html}{Qt Creator}
+\page coding-style.html
+
+\title Qt Creator Coding Rules
+
+THIS IS PRELIMINARY.
+
+\section1 Introduction
+
+The aim of this section is to serve as a guide for the developers, to aid us
+to build understandable and maintainable code, to create less confusion and
+surprises when working on Qt Creator.
+
+As usual: Rules are not set in stone. If there's a good reason to break one,
+do it, preferably after making sure that there are others agreeing.
+
+This document is incomplete.
+
+In general, if you want to contribute to the main source, we expect at least
+that you:
+
+\list 1
+\o The most important rule first: KISS (keep it simple ...): always
+ use a simple implementation in favor of a more complicated one.
+ This eases maintenance a lot.
+\o Write good C++ code: Readable, well commented when necessary,
+ and taking advantage of the OO model. Follow the \l{Formatting} guidelines.
+ There are also certain \l{Code Constructs} that we try to follow.
+\o Adapt the code to the structures already existing in Qt Creator, or in
+ the case that you have better ideas, discuss them with other developers
+ before writing the code.
+\o Take advantage of Qt. Don't re-invent the wheel. Think about what parts
+ of your code are generic enough that they might be incorporated into
+ Qt proper.
+\o Document interfaces. Right now we use qdoc, but changing to doxygen
+ is being considered.
+\endlist
+
+
+
+\section1 Submitting Code
+
+It is implicitly understood that all patches contributed to The Qt Creator
+Project are made under under the Gnu General Public License, version 2 or later
+and
+
+If you have a problem with that, don't contribute code.
+
+Also please don't just pop up out of the blue with a huge patch (or
+small) that changes something substantial in Qt Creator. Always discuss your
+ideas with the other developers on mailing list first.
+
+When you create the patch, please use git or use "diff -up" since we find
+that a lot easier to read than the other diff formats. Also please do not
+send patches that implements or fixes several different things; several
+patches is a much better option.
+
+We also require you to provide a commit message entry with every patch,
+this describes in detail what the patch is doing.
+
+
+
+\section1 Code Constructs
+
+We have several guidelines on code constructs, some of these exist to
+make the code faster, others to make the code clearer. Yet others
+exist to allow us to take advantage of the strong type checking
+in C++.
+
+\list 1
+\o Declaration of variables should wait as long as possible. The rule
+ is: "Don't declare it until you need it." In C++ there are a lot of
+ user defined types, and these can very often be expensive to
+ initialize. This rule connects to the next rule too.
+
+\o Make the scope of a variable as small as possible.
+
+\o Prefer preincrement to postincrement whenever possible.
+ Preincrement has potential of being faster than postincrement. Just
+ think about the obvious implementations of pre/post-increment. This
+ rule applies to decrement too.
+
+\code
+ ++T;
+ --U;
+ -NOT-
+ T++; // not used in Qt Creator
+ U--; // not used in Qt Creator
+\endcode
+
+\o Try to minimize evaluation of the same code over and over. This is
+ aimed especially at loops.
+
+\code
+
+ Container::iterator end = large.end();
+ for (Container::iterator it = large.begin(); it != end; ++it) {
+ ...;
+ }
+ -NOT-
+ for (Container::iterator it = large.begin();
+ it != large.end(); ++it) {
+ ...;
+ }
+\endcode
+
+
+
+\section1 Formatting
+
+\section2 Declarations
+
+Only one declaration on each line.
+\code
+ int a;
+ int b;
+ -NOT-
+ int a, b; // not used in Qt Creator
+\endcode
+
+ This is especially important when initialization is done at the same
+ time.
+\code
+ QString a = "Joe";
+ QString b = "Foo";
+ -NOT-
+ QString a = "Joe", b = "Foo"; // not used in Qt Creator
+\endcode
+ [Note that 'QString a = "Joe"' is formally calling a copy constructor
+ on a temporary constructed from a string literal and therefore has the
+ potential of being more expensive then direct construction by
+ 'QString a("joe")'. However the compiler is allowed to elide the copy
+ (even if it had side effects), and modern compilers typically do so.
+ Given these equal costs, Qt Creator code favours the '=' idiom as it is in
+ line with the traditional C-style initialization, _and_ cannot be
+ mistaken as function declaration, _and_ reduces the level of nested
+ parantheses in more initializations.]
+
+
+\section2 Pointers and references
+
+\code
+ char *p = "flop";
+ char &c = *p;
+ -NOT-
+ char* p = "flop"; // not used in Qt Creator
+ char & c = *p; // not used in Qt Creator
+\endcode
+
+ This is simply in line with the official Qt guide lines.
+
+ Also note that we will have:
+\code
+ const char *p;
+ -NOT-
+ char const * p; // not used in Qt Creator
+\endcode
+
+
+ Using a plain 0 for Null pointer constants is always correct and least effort
+ to type. So:
+\code
+ void *p = 0;
+ -NOT-
+ void *p = NULL; // not used in Qt Creator
+ -NOT-
+ void *p = '\0'; // not used in Qt Creator
+ -NOT-
+ void *p = 42 - 7 * 6; // also not used in Qt Creator
+\endcode
+ Note: As an exception, imported third party code as well as code
+ interfacing the "native" APIs (src/support/os_*) can use NULL.
+
+
+\section2 Operator names and parentheses
+\code
+ operator==(type)
+ -NOT-
+ operator == (type) // not used in Qt Creator
+\endcode
+
+ The == is part of the function name, separating it makes the
+ declaration look like an expression.
+
+
+\section2 Function names and parentheses
+\code
+ void mangle()
+ -NOT-
+ void mangle () // not used in Qt Creator
+\endcode
+
+
+
+\section2 Naming rules
+
+ Simply follow the style of Qt proper. As examples:
+ \list
+ \o Use descriptive but simple and short names. Do not abbreviate.
+
+ \o Class names are capitalized, and function names lowercased.
+ Enums are named like Classes, values are in lower-case.
+\endlist
+
+
+
+\section2 Formatting
+
+ Adapt the formatting of your code to the one used in the
+ other parts of Qt Creator. In case there is different formatting for
+ the same construct, use the one used more often.
+
+
+\section2 Declarations
+
+ - Use this order for the access sections of your class: public,
+ protected, private. The public section is interesting for every
+ user of the class. The private section is only of interest for the
+ implementors of the class (you). [Obviously not true since this is
+ for developers, and we do not want one developer only to be able to
+ read and understand the implementation of class internals. Lgb]
+
+ - Avoid declaring global objects in the declaration file of the class.
+ If the same variable is used for all objects, use a static member.
+
+ - Avoid global or static variables.
+
+
+\section2 File headers
+
+ If you create a new file, the top of the file should include a
+ header comment equal to the one found in other source files of Qt Creator.
+
+\section2 Documentation
+
+ The documentation is generated from source and header files.
+ You document for the other developers, not for yourself.
+ In the header you should document interfaces, i.e. what the function does,
+ not the implementation.
+ In the .cpp files you document the implementation if the implementation
+ in non-obvious.
+
+
+*/
diff --git a/src/libs/cplusplus/TypeOfExpression.cpp b/src/libs/cplusplus/TypeOfExpression.cpp
index 53fa7e78396..68732f78ea0 100644
--- a/src/libs/cplusplus/TypeOfExpression.cpp
+++ b/src/libs/cplusplus/TypeOfExpression.cpp
@@ -107,6 +107,8 @@ void TypeOfExpression::processEnvironment(QMap<QString, Document::Ptr> documents
Document::Ptr doc, Environment *env,
QSet<QString> *processed) const
{
+ if (! doc)
+ return;
if (processed->contains(doc->fileName()))
return;
processed->insert(doc->fileName());
diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp
index 81a2228e669..100fdbe717f 100644
--- a/src/libs/utils/pathchooser.cpp
+++ b/src/libs/utils/pathchooser.cpp
@@ -46,11 +46,12 @@
#include <QtGui/QHBoxLayout>
#include <QtGui/QLineEdit>
#include <QtGui/QToolButton>
+#include <QtGui/QPushButton>
namespace Core {
namespace Utils {
-#ifdef Q_OS_OSX
+#ifdef Q_OS_MAC
/*static*/ const char * const PathChooser::browseButtonLabel = "Choose...";
#else
/*static*/ const char * const PathChooser::browseButtonLabel = "Browse...";
@@ -112,7 +113,11 @@ PathChooser::PathChooser(QWidget *parent) :
hLayout->addWidget(m_d->m_lineEdit);
hLayout->setSizeConstraint(QLayout::SetMinimumSize);
+#ifdef Q_OS_MAC
+ QPushButton *browseButton = new QPushButton;
+#else
QToolButton *browseButton = new QToolButton;
+#endif
browseButton->setText(tr(browseButtonLabel));
connect(browseButton, SIGNAL(clicked()), this, SLOT(slotBrowse()));
diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp
index 82ed13a29e8..8e84df39321 100644
--- a/src/plugins/coreplugin/navigationwidget.cpp
+++ b/src/plugins/coreplugin/navigationwidget.cpp
@@ -334,6 +334,10 @@ NavigationSubWidget::NavigationSubWidget(NavigationWidget *parentWidget)
m_navigationComboBox = new NavComboBox(this);
m_navigationWidget = 0;
+#ifdef Q_OS_MAC
+ // this is to avoid ugly tool bar behavior
+ m_navigationComboBox->setMaximumWidth(130);
+#endif
m_toolbar = new QToolBar(this);
m_toolbar->setContentsMargins(0, 0, 0, 0);
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index e3bf12757bd..acf55f6d93f 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -744,7 +744,8 @@ void CPPEditor::unCommentSelection()
QString endText = endBlock.text();
int endPos = end - endBlock.position();
- bool hasTrailingCharacters = !endText.mid(endPos).trimmed().isEmpty();
+ bool hasTrailingCharacters = !endText.left(endPos).remove(QLatin1String("//")).trimmed().isEmpty()
+ && !endText.mid(endPos).trimmed().isEmpty();
if ((endPos <= endText.length() - 2
&& endText.at(endPos) == QLatin1Char('*')
&& endText.at(endPos+1) == QLatin1Char('/'))) {
diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro
index 3d67e19c6aa..7308fb441c2 100644
--- a/src/plugins/debugger/debugger.pro
+++ b/src/plugins/debugger/debugger.pro
@@ -58,7 +58,6 @@ SOURCES += attachexternaldialog.cpp \
gdbengine.cpp \
gdbmi.cpp \
gdboptionpage.cpp \
- gdbtypemacros.cpp \
gdbengine.h \
moduleshandler.cpp \
moduleswindow.cpp \
@@ -79,7 +78,6 @@ FORMS += attachexternaldialog.ui \
breakcondition.ui \
mode.ui \
gdboptionpage.ui \
- gdbtypemacros.ui \
startexternaldialog.ui \
RESOURCES += debugger.qrc
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 37406f70cc1..d9217069c68 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -183,7 +183,6 @@ DebuggerPlugin::DebuggerPlugin()
{
m_pm = 0;
m_generalOptionPage = 0;
- m_typeMacroPage = 0;
m_locationMark = 0;
m_manager = 0;
}
@@ -202,7 +201,6 @@ void DebuggerPlugin::shutdown()
//qDebug() << "DebuggerPlugin::~DebuggerPlugin";
removeObject(m_debugMode);
removeObject(m_generalOptionPage);
- removeObject(m_typeMacroPage);
// FIXME: when using the line below, BreakWindow etc gets deleted twice.
// so better leak for now...
@@ -212,9 +210,6 @@ void DebuggerPlugin::shutdown()
delete m_generalOptionPage;
m_generalOptionPage = 0;
- delete m_typeMacroPage;
- m_typeMacroPage = 0;
-
delete m_locationMark;
m_locationMark = 0;
@@ -409,13 +404,10 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes
mdebug->addAction(cmd);
m_generalOptionPage = 0;
- m_typeMacroPage = 0;
// FIXME:
m_generalOptionPage = new GdbOptionPage(&theGdbSettings());
addObject(m_generalOptionPage);
- m_typeMacroPage = new TypeMacroPage(&theGdbSettings());
- addObject(m_typeMacroPage);
m_locationMark = 0;
diff --git a/src/plugins/debugger/debuggerplugin.h b/src/plugins/debugger/debuggerplugin.h
index 91ffe4dbf77..ebf12b5e123 100644
--- a/src/plugins/debugger/debuggerplugin.h
+++ b/src/plugins/debugger/debuggerplugin.h
@@ -54,7 +54,6 @@ namespace Internal {
class DebuggerManager;
class DebugMode;
class GdbOptionPage;
-class TypeMacroPage;
class LocationMark;
class DebuggerPlugin : public ExtensionSystem::IPlugin
@@ -103,7 +102,6 @@ private:
ExtensionSystem::PluginManager *m_pm;
GdbOptionPage *m_generalOptionPage;
- TypeMacroPage *m_typeMacroPage;
QString m_previousMode;
LocationMark *m_locationMark;
diff --git a/src/plugins/debugger/gdbengine.h b/src/plugins/debugger/gdbengine.h
index 56106a75244..6b3cbb15fee 100644
--- a/src/plugins/debugger/gdbengine.h
+++ b/src/plugins/debugger/gdbengine.h
@@ -80,7 +80,7 @@ enum DataDumperState
DataDumperUnavailable,
};
-// FIXME: Move to extra file?
+
class GdbSettings
{
public:
diff --git a/src/plugins/debugger/gdboptionpage.cpp b/src/plugins/debugger/gdboptionpage.cpp
index e05b811889a..7d6742e9582 100644
--- a/src/plugins/debugger/gdboptionpage.cpp
+++ b/src/plugins/debugger/gdboptionpage.cpp
@@ -58,7 +58,11 @@ GdbOptionPage::GdbOptionPage(GdbSettings *settings)
#if defined(Q_OS_WIN32)
defaultCommand.append(".exe");
#endif
+ QString defaultScript = coreIFace->resourcePath() +
+ QLatin1String("/gdb/qt4macros");
+
m_settings->m_gdbCmd = s->value("Location", defaultCommand).toString();
+ m_settings->m_scriptFile= s->value("ScriptFile", defaultScript).toString();
m_settings->m_gdbEnv = s->value("Environment", "").toString();
m_settings->m_autoRun = s->value("AutoRun", true).toBool();
m_settings->m_autoQuit = s->value("AutoQuit", true).toBool();
@@ -72,36 +76,50 @@ QString GdbOptionPage::name() const
QString GdbOptionPage::category() const
{
- return "Debugger|Gdb";
+ return "Debugger";
}
QString GdbOptionPage::trCategory() const
{
- return tr("Debugger|Gdb");
+ return tr("Debugger");
}
QWidget *GdbOptionPage::createPage(QWidget *parent)
{
QWidget *w = new QWidget(parent);
m_ui.setupUi(w);
- m_ui.gdbEdit->setText(m_settings->m_gdbCmd);
- m_ui.envEdit->setText(m_settings->m_gdbEnv);
+ m_ui.gdbLocationChooser->setExpectedKind(Core::Utils::PathChooser::Command);
+ m_ui.gdbLocationChooser->setPromptDialogTitle(tr("Choose Gdb Location"));
+ m_ui.gdbLocationChooser->setPath(m_settings->m_gdbCmd);
+ m_ui.scriptFileChooser->setExpectedKind(Core::Utils::PathChooser::File);
+ m_ui.scriptFileChooser->setPromptDialogTitle(tr("Choose Location of Startup Script File"));
+ m_ui.scriptFileChooser->setPath(m_settings->m_scriptFile);
+ m_ui.environmentEdit->setText(m_settings->m_gdbEnv);
m_ui.autoStartBox->setChecked(m_settings->m_autoRun);
m_ui.autoQuitBox->setChecked(m_settings->m_autoQuit);
- connect(m_ui.pushButtonBrowse, SIGNAL(clicked()),
- this, SLOT(browse()));
+
+ // FIXME
+ m_ui.autoStartBox->hide();
+ m_ui.autoQuitBox->hide();
+ m_ui.environmentEdit->hide();
+ m_ui.labelEnvironment->hide();
+
+ connect(m_ui.gdbLocationChooser, SIGNAL(changed()),
+ this, SLOT(onGdbLocationChanged()));
+ connect(m_ui.scriptFileChooser, SIGNAL(changed()),
+ this, SLOT(onScriptFileChanged()));
return w;
}
-void GdbOptionPage::browse()
+void GdbOptionPage::onGdbLocationChanged()
{
- QString fileName = QFileDialog::getOpenFileName(m_ui.pushButtonBrowse,
- "Browse for gdb executable");
- if (fileName.isEmpty())
- return;
- m_settings->m_gdbCmd = fileName;
- m_ui.gdbEdit->setText(fileName);
+ m_settings->m_gdbCmd = m_ui.gdbLocationChooser->path();
+}
+
+void GdbOptionPage::onScriptFileChanged()
+{
+ m_settings->m_scriptFile = m_ui.scriptFileChooser->path();
}
void GdbOptionPage::finished(bool accepted)
@@ -109,10 +127,11 @@ void GdbOptionPage::finished(bool accepted)
if (!accepted)
return;
- m_settings->m_gdbCmd = m_ui.gdbEdit->text();
- m_settings->m_gdbEnv = m_ui.envEdit->text();
+ m_settings->m_gdbCmd = m_ui.gdbLocationChooser->path();
+ m_settings->m_gdbEnv = m_ui.environmentEdit->text();
m_settings->m_autoRun = m_ui.autoStartBox->isChecked();
m_settings->m_autoQuit = m_ui.autoQuitBox->isChecked();
+ m_settings->m_scriptFile = m_ui.scriptFileChooser->path();
Core::ICore *coreIFace = m_pm->getObject<Core::ICore>();
if (!coreIFace || !coreIFace->settings())
diff --git a/src/plugins/debugger/gdboptionpage.h b/src/plugins/debugger/gdboptionpage.h
index e9ebd23d667..d306e03e20f 100644
--- a/src/plugins/debugger/gdboptionpage.h
+++ b/src/plugins/debugger/gdboptionpage.h
@@ -35,7 +35,6 @@
#define GDBOPTIONPAGE_H
#include "ui_gdboptionpage.h"
-#include "ui_gdbtypemacros.h"
#include <coreplugin/dialogs/ioptionspage.h>
@@ -63,7 +62,8 @@ public:
void finished(bool accepted);
public slots:
- void browse();
+ void onGdbLocationChanged();
+ void onScriptFileChanged();
private:
ExtensionSystem::PluginManager *m_pm;
@@ -72,6 +72,7 @@ private:
GdbSettings *m_settings;
};
+#if 0
class TypeMacroPage : public Core::IOptionsPage
{
Q_OBJECT
@@ -99,6 +100,7 @@ private:
GdbSettings *m_settings;
QWidget *m_widget;
};
+#endif
} // namespace Internal
} // namespace Debugger
diff --git a/src/plugins/debugger/gdboptionpage.ui b/src/plugins/debugger/gdboptionpage.ui
index 4b58d5d7140..580f13c0d66 100644
--- a/src/plugins/debugger/gdboptionpage.ui
+++ b/src/plugins/debugger/gdboptionpage.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>433</width>
- <height>216</height>
+ <height>233</height>
</rect>
</property>
<property name="windowTitle">
@@ -23,7 +23,7 @@
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
- <string>Gdb Debug Options</string>
+ <string>Locations</string>
</property>
<layout class="QGridLayout">
<property name="margin">
@@ -32,46 +32,45 @@
<property name="spacing">
<number>6</number>
</property>
- <item row="0" column="1">
- <widget class="QLineEdit" name="gdbEdit"/>
- </item>
- <item row="1" column="1" colspan="2">
- <widget class="QLineEdit" name="envEdit"/>
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="environmentEdit"/>
</item>
<item row="0" column="0">
- <widget class="QLabel" name="label">
+ <widget class="QLabel" name="labelGdbLocaltion">
+ <property name="toolTip">
+ <string>This is either a full abolute path leading to the gdb binary you intend to use or the name of a gdb binary that wiull be searched in your PATH.</string>
+ </property>
<property name="text">
<string>Gdb Location:</string>
</property>
- <property name="buddy">
- <cstring>gdbEdit</cstring>
- </property>
</widget>
</item>
<item row="1" column="0">
- <widget class="QLabel" name="label_2">
+ <widget class="QLabel" name="labelEnvironment">
<property name="text">
<string>Environment:</string>
</property>
<property name="buddy">
- <cstring>envEdit</cstring>
+ <cstring>environmentEdit</cstring>
</property>
</widget>
</item>
- <item row="0" column="2">
- <widget class="QPushButton" name="pushButtonBrowse">
- <property name="text">
- <string/>
+ <item row="2" column="0">
+ <widget class="QLabel" name="labelGdbStartupScript">
+ <property name="toolTip">
+ <string>This is either empty or points to a file containing gdb commands that will be executed immediately after gdb starts up.</string>
</property>
- <property name="icon">
- <iconset resource="../coreplugin/core.qrc">
- <normaloff>:/qworkbench/images/fileopen.png</normaloff>:/qworkbench/images/fileopen.png</iconset>
- </property>
- <property name="checkable">
- <bool>false</bool>
+ <property name="text">
+ <string>Gdb Startup Script:</string>
</property>
</widget>
</item>
+ <item row="2" column="1">
+ <widget class="Core::Utils::PathChooser" name="scriptFileChooser" native="true"/>
+ </item>
+ <item row="0" column="1">
+ <widget class="Core::Utils::PathChooser" name="gdbLocationChooser" native="true"/>
+ </item>
</layout>
</widget>
</item>
@@ -104,6 +103,14 @@
</item>
</layout>
</widget>
+ <customwidgets>
+ <customwidget>
+ <class>Core::Utils::PathChooser</class>
+ <extends>QWidget</extends>
+ <header location="global">utils/pathchooser.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
<resources>
<include location="../coreplugin/core.qrc"/>
</resources>
diff --git a/src/plugins/debugger/gdbtypemacros.ui b/src/plugins/debugger/gdbtypemacros.ui
index 51a2670d84d..f42514e4e49 100644
--- a/src/plugins/debugger/gdbtypemacros.ui
+++ b/src/plugins/debugger/gdbtypemacros.ui
@@ -21,24 +21,6 @@
<number>9</number>
</property>
<item>
- <widget class="QGroupBox" name="groupBox">
- <property name="title">
- <string>Script File</string>
- </property>
- <layout class="QHBoxLayout">
- <property name="spacing">
- <number>6</number>
- </property>
- <property name="margin">
- <number>9</number>
- </property>
- <item>
- <widget class="Core::Utils::PathChooser" name="scriptFile" native="true"/>
- </item>
- </layout>
- </widget>
- </item>
- <item>
<layout class="QGridLayout">
<property name="margin">
<number>0</number>
@@ -75,7 +57,7 @@
<string>+</string>
</property>
<property name="icon">
- <iconset resource="debugger.qrc">
+ <iconset>
<normaloff>:/gdbdebugger/images/newitem.png</normaloff>:/gdbdebugger/images/newitem.png</iconset>
</property>
</widget>
@@ -117,7 +99,7 @@
<string>-</string>
</property>
<property name="icon">
- <iconset resource="debugger.qrc">
+ <iconset>
<normaloff>:/gdbdebugger/images/delete.png</normaloff>:/gdbdebugger/images/delete.png</iconset>
</property>
</widget>
@@ -165,16 +147,8 @@
</item>
</layout>
</widget>
- <customwidgets>
- <customwidget>
- <class>Core::Utils::PathChooser</class>
- <extends>QWidget</extends>
- <header location="global">utils/pathchooser.h</header>
- <container>1</container>
- </customwidget>
- </customwidgets>
<resources>
- <include location="debugger.qrc"/>
+ <include location="gdbdebugger.qrc"/>
</resources>
<connections/>
</ui>
diff --git a/src/plugins/git/settingspage.cpp b/src/plugins/git/settingspage.cpp
index e1b14cb9ccc..7f0581fc3c3 100644
--- a/src/plugins/git/settingspage.cpp
+++ b/src/plugins/git/settingspage.cpp
@@ -77,7 +77,7 @@ QString SettingsPage::name() const
return tr("General");
}
- QString SettingsPage::category() const
+QString SettingsPage::category() const
{
return QLatin1String("Git");
}
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 59ee2c005a4..0772e4f154a 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -735,12 +735,15 @@ void BaseTextEditor::moveLineUpDown(bool up)
move.clearSelection();
move.insertText(text);
int end = move.position();
- move.endEditBlock();
+
if (hasSelection) {
move.setPosition(start);
move.setPosition(end, QTextCursor::KeepAnchor);
}
+ indent(document(), move, QChar::Null);
+ move.endEditBlock();
+
setTextCursor(move);
}
@@ -2765,6 +2768,8 @@ void BaseTextEditor::handleHomeKey(bool anchor)
while (character == tab || character.category() == QChar::Separator_Space) {
++pos;
+ if (pos == initpos)
+ break;
character = characterAt(pos);
}
@@ -2952,12 +2957,13 @@ void BaseTextEditor::markBlocksAsChanged(QList<int> blockNumbers) {
TextBlockUserData::MatchType TextBlockUserData::checkOpenParenthesis(QTextCursor *cursor, QChar c)
{
- if (!TextEditDocumentLayout::hasParentheses(cursor->block()))
+ QTextBlock block = cursor->block();
+ if (!TextEditDocumentLayout::hasParentheses(block) || TextEditDocumentLayout::ifdefedOut(block))
return NoMatch;
- Parentheses parenList = TextEditDocumentLayout::parentheses(cursor->block());
+ Parentheses parenList = TextEditDocumentLayout::parentheses(block);
Parenthesis openParen, closedParen;
- QTextBlock closedParenParag = cursor->block();
+ QTextBlock closedParenParag = block;
const int cursorPos = cursor->position() - closedParenParag.position();
int i = 0;
@@ -2982,7 +2988,8 @@ TextBlockUserData::MatchType TextBlockUserData::checkOpenParenthesis(QTextCursor
closedParenParag = closedParenParag.next();
if (!closedParenParag.isValid())
return NoMatch;
- if (TextEditDocumentLayout::hasParentheses(closedParenParag)) {
+ if (TextEditDocumentLayout::hasParentheses(closedParenParag)
+ && !TextEditDocumentLayout::ifdefedOut(closedParenParag)) {
parenList = TextEditDocumentLayout::parentheses(closedParenParag);
break;
}
@@ -3019,12 +3026,13 @@ TextBlockUserData::MatchType TextBlockUserData::checkOpenParenthesis(QTextCursor
TextBlockUserData::MatchType TextBlockUserData::checkClosedParenthesis(QTextCursor *cursor, QChar c)
{
- if (!TextEditDocumentLayout::hasParentheses(cursor->block()))
+ QTextBlock block = cursor->block();
+ if (!TextEditDocumentLayout::hasParentheses(block) || TextEditDocumentLayout::ifdefedOut(block))
return NoMatch;
- Parentheses parenList = TextEditDocumentLayout::parentheses(cursor->block());
+ Parentheses parenList = TextEditDocumentLayout::parentheses(block);
Parenthesis openParen, closedParen;
- QTextBlock openParenParag = cursor->block();
+ QTextBlock openParenParag = block;
const int cursorPos = cursor->position() - openParenParag.position();
int i = parenList.count() - 1;
@@ -3050,7 +3058,8 @@ TextBlockUserData::MatchType TextBlockUserData::checkClosedParenthesis(QTextCurs
if (!openParenParag.isValid())
return NoMatch;
- if (TextEditDocumentLayout::hasParentheses(openParenParag)) {
+ if (TextEditDocumentLayout::hasParentheses(openParenParag)
+ && !TextEditDocumentLayout::ifdefedOut(openParenParag)) {
parenList = TextEditDocumentLayout::parentheses(openParenParag);
break;
}
@@ -3092,7 +3101,7 @@ bool TextBlockUserData::findPreviousOpenParenthesis(QTextCursor *cursor, bool se
int ignore = 0;
while (block.isValid()) {
Parentheses parenList = TextEditDocumentLayout::parentheses(block);
- if (!parenList.isEmpty()) {
+ if (!parenList.isEmpty() && !TextEditDocumentLayout::ifdefedOut(block)) {
for (int i = parenList.count()-1; i >= 0; --i) {
Parenthesis paren = parenList.at(i);
if (block == cursor->block() && position - block.position() <= paren.pos + 1)
@@ -3119,7 +3128,7 @@ bool TextBlockUserData::findNextClosingParenthesis(QTextCursor *cursor, bool sel
int ignore = 0;
while (block.isValid()) {
Parentheses parenList = TextEditDocumentLayout::parentheses(block);
- if (!parenList.isEmpty()) {
+ if (!parenList.isEmpty() && !TextEditDocumentLayout::ifdefedOut(block)) {
for (int i = 0; i < parenList.count(); ++i) {
Parenthesis paren = parenList.at(i);
if (block == cursor->block() && position - block.position() >= paren.pos)
@@ -3144,7 +3153,7 @@ TextBlockUserData::MatchType TextBlockUserData::matchCursorBackward(QTextCursor
cursor->clearSelection();
const QTextBlock block = cursor->block();
- if (!TextEditDocumentLayout::hasParentheses(block))
+ if (!TextEditDocumentLayout::hasParentheses(block) || TextEditDocumentLayout::ifdefedOut(block))
return NoMatch;
const int relPos = cursor->position() - block.position();
@@ -3166,7 +3175,7 @@ TextBlockUserData::MatchType TextBlockUserData::matchCursorForward(QTextCursor *
cursor->clearSelection();
const QTextBlock block = cursor->block();
- if (!TextEditDocumentLayout::hasParentheses(block))
+ if (!TextEditDocumentLayout::hasParentheses(block) || TextEditDocumentLayout::ifdefedOut(block))
return NoMatch;
const int relPos = cursor->position() - block.position();