Merge remote-tracking branch 'origin/3.1'

Conflicts:
	README
	tests/auto/debugger/tst_dumpers.cpp

Change-Id: Ib9aef37a246bc3bb9bca0c32a902af3b09ef3146
This commit is contained in:
Oswald Buddenhagen
2014-03-11 13:39:55 +01:00
279 changed files with 3131 additions and 1418 deletions

View File

@@ -113,7 +113,7 @@ void DescriptionEditorWidget::setDisplaySettings(const DisplaySettings &ds)
DiffEditor::DiffEditor()
: IEditor(0)
, m_document(new DiffEditorDocument(QLatin1String(Constants::DIFF_EDITOR_MIMETYPE)))
, m_document(new DiffEditorDocument())
, m_descriptionWidget(0)
, m_diffWidget(0)
, m_controller(0)

View File

@@ -37,7 +37,6 @@ namespace Constants {
const char DIFF_EDITOR_ID[] = "Diff Editor";
const char DIFF_EDITOR_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("DiffEditor", "Diff Editor");
const char DIFF_EDITOR_MIMETYPE[] = "text/x-patch";
const char G_TOOLS_DIFF[] = "QtCreator.Group.Tools.Options";
} // namespace Constants

View File

@@ -35,9 +35,8 @@
namespace DiffEditor {
DiffEditorDocument::DiffEditorDocument(const QString &mimeType) :
DiffEditorDocument::DiffEditorDocument() :
Core::IDocument(),
m_mimeType(mimeType),
m_diffEditorController(new DiffEditorController(this))
{
setId(Constants::DIFF_EDITOR_ID);
@@ -70,7 +69,7 @@ bool DiffEditorDocument::save(QString *errorString, const QString &fileName, boo
QString DiffEditorDocument::mimeType() const
{
return m_mimeType;
return QString();
}
Core::IDocument::ReloadBehavior DiffEditorDocument::reloadBehavior(ChangeTrigger state, ChangeType type) const

View File

@@ -42,7 +42,7 @@ class DIFFEDITOR_EXPORT DiffEditorDocument : public Core::IDocument
{
Q_OBJECT
public:
explicit DiffEditorDocument(const QString &mimeType);
explicit DiffEditorDocument();
virtual ~DiffEditorDocument();
DiffEditorController *controller() const;
@@ -59,7 +59,6 @@ public:
bool reload(QString *errorString, ReloadFlag flag, ChangeType type);
private:
const QString m_mimeType;
DiffEditorController *m_diffEditorController;
};

View File

@@ -43,7 +43,6 @@ DiffEditorFactory::DiffEditorFactory(QObject *parent)
{
setId(Constants::DIFF_EDITOR_ID);
setDisplayName(qApp->translate("DiffEditorFactory", Constants::DIFF_EDITOR_DISPLAY_NAME));
addMimeType(QLatin1String(Constants::DIFF_EDITOR_MIMETYPE));
}
Core::IEditor *DiffEditorFactory::createEditor()

View File

@@ -100,7 +100,9 @@ DiffEditorDocument *DiffEditorManager::findOrCreate(const QString &documentId, c
const QString msgWait = tr("Waiting for data...");
DiffEditor *diffEditor = qobject_cast<DiffEditor *>(
Core::EditorManager::openEditorWithContents(Constants::DIFF_EDITOR_ID,
0, msgWait.toUtf8()));
0, msgWait.toUtf8(),
(Core::EditorManager::OpenInOtherSplit
| Core::EditorManager::NoNewSplits)));
QTC_ASSERT(diffEditor, return 0);
document = qobject_cast<DiffEditorDocument *>(diffEditor->document());

View File

@@ -102,13 +102,12 @@ void DiffEditorPlugin::diff()
//: Editor title
QString title = tr("Diff \"%1\", \"%2\"").arg(fileName1).arg(fileName2);
DiffEditor *editor = qobject_cast<DiffEditor *>
(Core::EditorManager::openEditorWithContents(editorId, &title));
(Core::EditorManager::openEditorWithContents(editorId, &title, QByteArray(),
(Core::EditorManager::OpenInOtherSplit
| Core::EditorManager::NoNewSplits)));
if (!editor)
return;
Core::EditorManager::activateEditor(editor);
const QString text1 = getFileContents(fileName1);
const QString text2 = getFileContents(fileName2);

View File

@@ -30,6 +30,7 @@
#include "diffutils.h"
#include "differ.h"
#include <QStringList>
#include "texteditor/fontsettings.h"
namespace DiffEditor {
namespace Internal {
@@ -163,8 +164,9 @@ ChunkData calculateOriginalData(const QList<Diff> &leftDiffList,
if (leftDifference && rightDifference) {
bool doAlign = true;
if (line == 0 // omit alignment when first lines of equalities are empty
&& (newLeftLines.at(0).isEmpty() || newRightLines.at(0).isEmpty())) {
if (line == 0 // omit alignment when first lines of equalities are empty and last generated lines are not equal
&& (newLeftLines.at(0).isEmpty() || newRightLines.at(0).isEmpty())
&& !lastLineEqual) {
doAlign = false;
}
@@ -234,7 +236,7 @@ ChunkData calculateOriginalData(const QList<Diff> &leftDiffList,
++leftLine;
if (rightTextLine.textLineType == TextLineData::TextLine)
++rightLine;
if (equalLines.value(leftLine, -1) == rightLine)
if (equalLines.value(leftLine, -2) == rightLine)
row.equal = true;
chunkData.rows.append(row);
@@ -347,5 +349,36 @@ FileData calculateContextData(const ChunkData &originalData, int contextLinesNum
return fileData;
}
QList<QTextEdit::ExtraSelection> colorPositions(
const QTextCharFormat &format,
QTextCursor &cursor,
const QMap<int, int> &positions)
{
QList<QTextEdit::ExtraSelection> lineSelections;
cursor.setPosition(0);
QMapIterator<int, int> itPositions(positions);
while (itPositions.hasNext()) {
itPositions.next();
cursor.setPosition(itPositions.key());
cursor.setPosition(itPositions.value(), QTextCursor::KeepAnchor);
QTextEdit::ExtraSelection selection;
selection.cursor = cursor;
selection.format = format;
lineSelections.append(selection);
}
return lineSelections;
}
QTextCharFormat fullWidthFormatForTextStyle(const TextEditor::FontSettings &fontSettings,
TextEditor::TextStyle textStyle)
{
QTextCharFormat format = fontSettings.toTextCharFormat(textStyle);
format.setProperty(QTextFormat::FullWidthSelection, true);
return format;
}
} // namespace Internal
} // namespace DiffEditor

View File

@@ -32,7 +32,12 @@
#include <QString>
#include <QMap>
#include <QTextEdit>
#include "diffeditorcontroller.h"
#include "texteditor/texteditorconstants.h"
namespace TextEditor { class FontSettings; }
namespace DiffEditor {
@@ -89,7 +94,11 @@ ChunkData calculateOriginalData(const QList<Diff> &leftDiffList,
const QList<Diff> &rightDiffList);
FileData calculateContextData(const ChunkData &originalData,
int contextLinesNumber);
QList<QTextEdit::ExtraSelection> colorPositions(const QTextCharFormat &format,
QTextCursor &cursor,
const QMap<int, int> &positions);
QTextCharFormat fullWidthFormatForTextStyle(const TextEditor::FontSettings &fontSettings,
TextEditor::TextStyle textStyle);
} // namespace Internal
} // namespace DiffEditor

View File

@@ -756,6 +756,9 @@ SideBySideDiffEditorWidget::~SideBySideDiffEditorWidget()
void SideBySideDiffEditorWidget::setDiffEditorGuiController(DiffEditorGuiController *controller)
{
if (m_guiController == controller)
return;
if (m_guiController) {
disconnect(m_controller, SIGNAL(cleared(QString)), this, SLOT(clear(QString)));
disconnect(m_controller, SIGNAL(diffContentsChanged(QList<DiffEditorController::DiffFilesContents>,QString)),
@@ -850,8 +853,8 @@ void SideBySideDiffEditorWidget::handleWhitespaces(const QList<Diff> &input,
Differ::splitDiffList(input, leftOutput, rightOutput);
if (m_guiController && m_guiController->isIgnoreWhitespaces()) {
QList<Diff> leftDiffList = Differ::moveWhitespaceIntoEqualities(*leftOutput);
QList<Diff> rightDiffList = Differ::moveWhitespaceIntoEqualities(*rightOutput);
const QList<Diff> leftDiffList = Differ::moveWhitespaceIntoEqualities(*leftOutput);
const QList<Diff> rightDiffList = Differ::moveWhitespaceIntoEqualities(*rightOutput);
Differ::diffBetweenEqualities(leftDiffList, rightDiffList, leftOutput, rightOutput);
}
}
@@ -1034,30 +1037,7 @@ void SideBySideDiffEditorWidget::showDiff()
m_rightEditor->updateFoldingHighlight(QPoint(-1, -1));
}
QList<QTextEdit::ExtraSelection> SideBySideDiffEditorWidget::colorPositions(
const QTextCharFormat &format,
QTextCursor &cursor,
const QMap<int, int> &positions) const
{
QList<QTextEdit::ExtraSelection> lineSelections;
cursor.setPosition(0);
QMapIterator<int, int> itPositions(positions);
while (itPositions.hasNext()) {
itPositions.next();
cursor.setPosition(itPositions.key());
cursor.setPosition(itPositions.value(), QTextCursor::KeepAnchor);
QTextEdit::ExtraSelection selection;
selection.cursor = cursor;
selection.format = format;
lineSelections.append(selection);
}
return lineSelections;
}
void fixPositions(QMap<int, int>::ConstIterator *it,
static void fixPositions(QMap<int, int>::ConstIterator *it,
const QMap<int, int>::ConstIterator &itEnd,
int fileOffset,
int charCounter,
@@ -1247,14 +1227,6 @@ void SideBySideDiffEditorWidget::colorDiff(const QList<FileData> &fileDataList)
m_rightEditor->setExtraSelections(BaseTextEditorWidget::OtherSelection, rightSelections);
}
static QTextCharFormat fullWidthFormatForTextStyle(const TextEditor::FontSettings &fontSettings,
TextEditor::TextStyle textStyle)
{
QTextCharFormat format = fontSettings.toTextCharFormat(textStyle);
format.setProperty(QTextFormat::FullWidthSelection, true);
return format;
}
void SideBySideDiffEditorWidget::setFontSettings(const TextEditor::FontSettings &fontSettings)
{
m_leftEditor->baseTextDocument()->setFontSettings(fontSettings);

View File

@@ -33,18 +33,16 @@
#include "diffeditor_global.h"
#include "differ.h"
#include "diffeditorcontroller.h"
#include <QTextEdit>
#include <QWidget>
#include <QTextCharFormat>
namespace TextEditor { class FontSettings; }
QT_BEGIN_NAMESPACE
class QSplitter;
class QTextCharFormat;
QT_END_NAMESPACE
namespace DiffEditor {
class DiffEditorGuiController;
class SideDiffEditorWidget;
@@ -100,9 +98,6 @@ private:
void handleWhitespaces(const QList<Diff> &input,
QList<Diff> *leftOutput,
QList<Diff> *rightOutput) const;
QList<QTextEdit::ExtraSelection> colorPositions(const QTextCharFormat &format,
QTextCursor &cursor,
const QMap<int, int> &positions) const;
void colorDiff(const QList<Internal::FileData> &fileDataList);
void showDiff();
void synchronizeFoldings(SideDiffEditorWidget *source, SideDiffEditorWidget *destination);
@@ -119,7 +114,6 @@ private:
QList<Internal::FileData> m_contextFileData; // ultimate data to be shown, contextLinesNumber taken into account
bool m_foldingBlocker;
QString m_source;
QTextCharFormat m_fileLineFormat;
QTextCharFormat m_chunkLineFormat;