forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/3.1'
Conflicts: README tests/auto/debugger/tst_dumpers.cpp Change-Id: Ib9aef37a246bc3bb9bca0c32a902af3b09ef3146
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user