MCPcopy Create free account
hub / github.com/KDAB/GammaRay / sidebarPaintEvent

Method sidebarPaintEvent

ui/codeeditor/codeeditor.cpp:162–208  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

160}
161
162void CodeEditor::sidebarPaintEvent(QPaintEvent *event)
163{
164 QPainter painter(m_sideBar);
165 painter.fillRect(event->rect(), palette().color(QPalette::Window));
166
167 auto block = firstVisibleBlock();
168 auto blockNumber = block.blockNumber();
169 int top = blockBoundingGeometry(block).translated(contentOffset()).top();
170 int bottom = top + blockBoundingRect(block).height();
171 const auto foldingMarkerSize = foldingBarWidth();
172
173 while (block.isValid() && top <= event->rect().bottom()) {
174 if (block.isVisible() && bottom >= event->rect().top()) {
175 const auto number = QString::number(blockNumber + 1);
176 painter.setPen(palette().color(QPalette::Text));
177 painter.drawText(0, top, m_sideBar->width() - 2 - foldingMarkerSize, fontMetrics().height(), Qt::AlignRight, number);
178 }
179
180 // folding marker
181#ifdef HAVE_SYNTAX_HIGHLIGHTING
182 if (block.isVisible() && isFoldable(block)) {
183 QPolygonF polygon;
184 if (isFolded(block)) {
185 polygon << QPointF(foldingMarkerSize * 0.4, foldingMarkerSize * 0.25);
186 polygon << QPointF(foldingMarkerSize * 0.4, foldingMarkerSize * 0.75);
187 polygon << QPointF(foldingMarkerSize * 0.8, foldingMarkerSize * 0.5);
188 } else {
189 polygon << QPointF(foldingMarkerSize * 0.25, foldingMarkerSize * 0.4);
190 polygon << QPointF(foldingMarkerSize * 0.75, foldingMarkerSize * 0.4);
191 polygon << QPointF(foldingMarkerSize * 0.5, foldingMarkerSize * 0.8);
192 }
193 painter.save();
194 painter.setRenderHint(QPainter::Antialiasing);
195 painter.setPen(Qt::NoPen);
196 painter.setBrush(palette().color(QPalette::Highlight));
197 painter.translate(m_sideBar->width() - foldingMarkerSize, top);
198 painter.drawPolygon(polygon);
199 painter.restore();
200 }
201#endif
202
203 block = block.next();
204 top = bottom;
205 bottom = top + blockBoundingRect(block).height();
206 ++blockNumber;
207 }
208}
209
210void CodeEditor::highlightCurrentLine()
211{

Callers 1

paintEventMethod · 0.80

Calls 7

QPointFClass · 0.85
saveMethod · 0.80
translateMethod · 0.80
fillRectMethod · 0.45
isValidMethod · 0.45
isVisibleMethod · 0.45
drawPolygonMethod · 0.45

Tested by

no test coverage detected