texteditor: introduce a widthFactor to enable non-quadratic text marks

This commit is contained in:
hjk
2011-03-21 17:32:53 +01:00
parent a18d0572bd
commit 6fd2aaaa32
3 changed files with 16 additions and 5 deletions

View File

@@ -3559,7 +3559,8 @@ int BaseTextEditorWidget::extraAreaWidth(int *markWidthPtr) const
if (d->m_lineNumbersVisible) {
QFont fnt = d->m_extraArea->font();
// this works under the assumption that bold or italic can only make a font wider
// this works under the assumption that bold or italic
// can only make a font wider
fnt.setBold(d->m_currentLineNumberFormat.font().bold());
fnt.setItalic(d->m_currentLineNumberFormat.font().italic());
const QFontMetrics linefm(fnt);
@@ -3709,10 +3710,11 @@ void BaseTextEditorWidget::extraAreaPaintEvent(QPaintEvent *e)
if (TextBlockUserData *userData = static_cast<TextBlockUserData*>(block.userData())) {
if (d->m_marksVisible) {
int xoffset = 0;
foreach (ITextMark *mrk, userData->marks()) {
const int radius = fmLineSpacing - 1;
const QRect r(xoffset, top, radius, radius);
mrk->paint(&painter, r);
foreach (ITextMark *mark, userData->marks()) {
const int height = fmLineSpacing - 1;
const int width = int(.5 + height * mark->widthFactor());
const QRect r(xoffset, top, width, height);
mark->paint(&painter, r);
xoffset += 2;
}
}

View File

@@ -73,6 +73,14 @@ ITextMark::Priority ITextMark::priority() const
return m_priority;
}
double ITextMark::widthFactor() const
{
return 1.0;
}
QMap<QString, QString> ITextEditor::openedTextEditorsContents()
{
QMap<QString, QString> workingCopy;

View File

@@ -79,6 +79,7 @@ public:
virtual void setIcon(const QIcon &icon);
virtual Priority priority() const;
virtual void setPriority(Priority prioriy);
virtual double widthFactor() const;
private:
QIcon m_icon;