qtextcursor.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/gui/text/qtextcursor.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5enum {-
6 AdjustPrev = 0x1,-
7 AdjustUp = 0x3,-
8 AdjustNext = 0x4,-
9 AdjustDown = 0x12-
10};-
11-
12QTextCursorPrivate::QTextCursorPrivate(QTextDocumentPrivate *p)-
13 : priv(p), x(0), position(0), anchor(0), adjusted_anchor(0),-
14 currentCharFormat(-1), visualNavigation(false), keepPositionOnInsert(false),-
15 changed(false)-
16{-
17 priv->addCursor(this);-
18}
never executed: end of block
0
19-
20QTextCursorPrivate::QTextCursorPrivate(const QTextCursorPrivate &rhs)-
21 : QSharedData(rhs)-
22{-
23 position = rhs.position;-
24 anchor = rhs.anchor;-
25 adjusted_anchor = rhs.adjusted_anchor;-
26 priv = rhs.priv;-
27 x = rhs.x;-
28 currentCharFormat = rhs.currentCharFormat;-
29 visualNavigation = rhs.visualNavigation;-
30 keepPositionOnInsert = rhs.keepPositionOnInsert;-
31 changed = rhs.changed;-
32 priv->addCursor(this);-
33}
never executed: end of block
0
34-
35QTextCursorPrivate::~QTextCursorPrivate()-
36{-
37 if (priv
privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
38 priv->removeCursor(this);
never executed: priv->removeCursor(this);
0
39}
never executed: end of block
0
40-
41QTextCursorPrivate::AdjustResult QTextCursorPrivate::adjustPosition(int positionOfChange, int charsAddedOrRemoved, QTextUndoCommand::Operation op)-
42{-
43 QTextCursorPrivate::AdjustResult result = QTextCursorPrivate::CursorMoved;-
44-
45 if (position < positionOfChange
position < positionOfChangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
46 || (position == positionOfChange
position == positionOfChangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
47 && (op == QTextUndoCommand::KeepCursor
op == QTextUnd...nd::KeepCursorDescription
TRUEnever evaluated
FALSEnever evaluated
0
48 || keepPositionOnInsert
keepPositionOnInsertDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
49 )-
50 ) {-
51 result = CursorUnchanged;-
52 }
never executed: end of block
else {
0
53 if (charsAddedOrRemoved < 0
charsAddedOrRemoved < 0Description
TRUEnever evaluated
FALSEnever evaluated
&& position < positionOfChange - charsAddedOrRemoved
position < pos...AddedOrRemovedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
54 position = positionOfChange;
never executed: position = positionOfChange;
0
55 else-
56 position += charsAddedOrRemoved;
never executed: position += charsAddedOrRemoved;
0
57-
58 currentCharFormat = -1;-
59 }
never executed: end of block
0
60-
61 if (anchor >= positionOfChange
anchor >= positionOfChangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
62 && (anchor != positionOfChange
anchor != positionOfChangeDescription
TRUEnever evaluated
FALSEnever evaluated
|| op != QTextUndoCommand::KeepCursor
op != QTextUnd...nd::KeepCursorDescription
TRUEnever evaluated
FALSEnever evaluated
)) {
0
63 if (charsAddedOrRemoved < 0
charsAddedOrRemoved < 0Description
TRUEnever evaluated
FALSEnever evaluated
&& anchor < positionOfChange - charsAddedOrRemoved
anchor < posit...AddedOrRemovedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
64 anchor = positionOfChange;
never executed: anchor = positionOfChange;
0
65 else-
66 anchor += charsAddedOrRemoved;
never executed: anchor += charsAddedOrRemoved;
0
67 }-
68-
69 if (adjusted_anchor >= positionOfChange
adjusted_ancho...sitionOfChangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
70 && (adjusted_anchor != positionOfChange
adjusted_ancho...sitionOfChangeDescription
TRUEnever evaluated
FALSEnever evaluated
|| op != QTextUndoCommand::KeepCursor
op != QTextUnd...nd::KeepCursorDescription
TRUEnever evaluated
FALSEnever evaluated
)) {
0
71 if (charsAddedOrRemoved < 0
charsAddedOrRemoved < 0Description
TRUEnever evaluated
FALSEnever evaluated
&& adjusted_anchor < positionOfChange - charsAddedOrRemoved
adjusted_ancho...AddedOrRemovedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
72 adjusted_anchor = positionOfChange;
never executed: adjusted_anchor = positionOfChange;
0
73 else-
74 adjusted_anchor += charsAddedOrRemoved;
never executed: adjusted_anchor += charsAddedOrRemoved;
0
75 }-
76-
77 return
never executed: return result;
result;
never executed: return result;
0
78}-
79-
80void QTextCursorPrivate::setX()-
81{-
82 if (priv->isInEditBlock()
priv->isInEditBlock()Description
TRUEnever evaluated
FALSEnever evaluated
|| priv->inContentsChange
priv->inContentsChangeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
83 x = -1;-
84 return;
never executed: return;
0
85 }-
86-
87 QTextBlock block = this->block();-
88 const QTextLayout *layout = blockLayout(block);-
89 int pos = position - block.position();-
90-
91 QTextLine line = layout->lineForTextPosition(pos);-
92 if (line.isValid()
line.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
93 x = line.cursorToX(pos);
never executed: x = line.cursorToX(pos);
0
94 else-
95 x = -1;
never executed: x = -1;
0
96}-
97-
98void QTextCursorPrivate::remove()-
99{-
100 if (anchor == position
anchor == positionDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
101 return;
never executed: return;
0
102 currentCharFormat = -1;-
103 int pos1 = position;-
104 int pos2 = adjusted_anchor;-
105 QTextUndoCommand::Operation op = QTextUndoCommand::KeepCursor;-
106 if (pos1 > pos2
pos1 > pos2Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
107 pos1 = adjusted_anchor;-
108 pos2 = position;-
109 op = QTextUndoCommand::MoveCursor;-
110 }
never executed: end of block
0
111-
112-
113 QTextTable *table = complexSelectionTable();-
114 if (table
tableDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
115 priv->beginEditBlock();-
116 int startRow, startCol, numRows, numCols;-
117 selectedTableCells(&startRow, &numRows, &startCol, &numCols);-
118 clearCells(table, startRow, startCol, numRows, numCols, op);-
119 adjusted_anchor = anchor = position;-
120 priv->endEditBlock();-
121 }
never executed: end of block
else {
0
122 priv->remove(pos1, pos2-pos1, op);-
123 adjusted_anchor = anchor = position;-
124 }
never executed: end of block
0
125-
126}-
127-
128void QTextCursorPrivate::clearCells(QTextTable *table, int startRow, int startCol, int numRows, int numCols, QTextUndoCommand::Operation op)-
129{-
130 priv->beginEditBlock();-
131-
132 for (int row = startRow; row < startRow + numRows
row < startRow + numRowsDescription
TRUEnever evaluated
FALSEnever evaluated
; ++row)
0
133 for (int col = startCol; col < startCol + numCols
col < startCol + numColsDescription
TRUEnever evaluated
FALSEnever evaluated
; ++col) {
0
134 QTextTableCell cell = table->cellAt(row, col);-
135 const int startPos = cell.firstPosition();-
136 const int endPos = cell.lastPosition();-
137 ((!(startPos <= endPos)) ? qt_assert("startPos <= endPos",__FILE__,188) : qt_noop());-
138 priv->remove(startPos, endPos - startPos, op);-
139 }
never executed: end of block
0
140-
141 priv->endEditBlock();-
142}
never executed: end of block
0
143-
144bool QTextCursorPrivate::canDelete(int pos) const-
145{-
146 QTextDocumentPrivate::FragmentIterator fit = priv->find(pos);-
147 QTextCharFormat fmt = priv->formatCollection()->charFormat((*fit)->format);-
148 return
never executed: return (fmt.objectIndex() == -1 || fmt.objectType() == QTextFormat::ImageObject);
(fmt.objectIndex() == -1 || fmt.objectType() == QTextFormat::ImageObject);
never executed: return (fmt.objectIndex() == -1 || fmt.objectType() == QTextFormat::ImageObject);
0
149}-
150-
151void QTextCursorPrivate::insertBlock(const QTextBlockFormat &format, const QTextCharFormat &charFormat)-
152{-
153 QTextFormatCollection *formats = priv->formatCollection();-
154 int idx = formats->indexForFormat(format);-
155 ((!(formats->format(idx).isBlockFormat())) ? qt_assert("formats->format(idx).isBlockFormat()",__FILE__,206) : qt_noop());-
156-
157 priv->insertBlock(position, idx, formats->indexForFormat(charFormat));-
158 currentCharFormat = -1;-
159}
never executed: end of block
0
160-
161void QTextCursorPrivate::adjustCursor(QTextCursor::MoveOperation m)-
162{-
163 adjusted_anchor = anchor;-
164 if (position == anchor
position == anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
165 return;
never executed: return;
0
166-
167 QTextFrame *f_position = priv->frameAt(position);-
168 QTextFrame *f_anchor = priv->frameAt(adjusted_anchor);-
169-
170 if (f_position != f_anchor
f_position != f_anchorDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
171-
172 QList<QTextFrame *> positionChain;-
173 QList<QTextFrame *> anchorChain;-
174 QTextFrame *f = f_position;-
175 while (f
fDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
176 positionChain.prepend(f);-
177 f = f->parentFrame();-
178 }
never executed: end of block
0
179 f = f_anchor;-
180 while (f
fDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
181 anchorChain.prepend(f);-
182 f = f->parentFrame();-
183 }
never executed: end of block
0
184 ((!(positionChain.at(0) == anchorChain.at(0))) ? qt_assert("positionChain.at(0) == anchorChain.at(0)",__FILE__,235) : qt_noop());-
185 int i = 1;-
186 int l = qMin(positionChain.size(), anchorChain.size());-
187 for (; i < l
i < lDescription
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
188 if (positionChain.at(i) != anchorChain.at(i)
positionChain....horChain.at(i)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
189 break;
never executed: break;
0
190 }
never executed: end of block
0
191-
192 if (m <= QTextCursor::WordLeft
m <= QTextCursor::WordLeftDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
193 if (i < positionChain.size()
i < positionChain.size()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
194 position = positionChain.at(i)->firstPosition() - 1;
never executed: position = positionChain.at(i)->firstPosition() - 1;
0
195 }
never executed: end of block
else {
0
196 if (i < positionChain.size()
i < positionChain.size()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
197 position = positionChain.at(i)->lastPosition() + 1;
never executed: position = positionChain.at(i)->lastPosition() + 1;
0
198 }
never executed: end of block
0
199 if (position < adjusted_anchor
position < adjusted_anchorDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
200 if (i < anchorChain.size()
i < anchorChain.size()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
201 adjusted_anchor = anchorChain.at(i)->lastPosition() + 1;
never executed: adjusted_anchor = anchorChain.at(i)->lastPosition() + 1;
0
202 }
never executed: end of block
else {
0
203 if (i < anchorChain.size()
i < anchorChain.size()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
204 adjusted_anchor = anchorChain.at(i)->firstPosition() - 1;
never executed: adjusted_anchor = anchorChain.at(i)->firstPosition() - 1;
0
205 }
never executed: end of block
0
206-
207 f_position = positionChain.at(i-1);-
208 }
never executed: end of block
0
209-
210-
211 QTextTable *table = qobject_cast<QTextTable *>(f_position);-
212 if (!table
!tableDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
213 return;
never executed: return;
0
214-
215 QTextTableCell c_position = table->cellAt(position);-
216 QTextTableCell c_anchor = table->cellAt(adjusted_anchor);-
217 if (c_position != c_anchor
c_position != c_anchorDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
218 position = c_position.firstPosition();-
219 if (position < adjusted_anchor
position < adjusted_anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
220 adjusted_anchor = c_anchor.lastPosition();
never executed: adjusted_anchor = c_anchor.lastPosition();
0
221 else-
222 adjusted_anchor = c_anchor.firstPosition();
never executed: adjusted_anchor = c_anchor.firstPosition();
0
223 }-
224 currentCharFormat = -1;-
225}
never executed: end of block
0
226-
227void QTextCursorPrivate::aboutToRemoveCell(int from, int to)-
228{-
229 ((!(from <= to)) ? qt_assert("from <= to",__FILE__,280) : qt_noop());-
230 if (position == anchor
position == anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
231 return;
never executed: return;
0
232-
233 QTextTable *t = qobject_cast<QTextTable *>(priv->frameAt(position));-
234 if (!t
!tDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
235 return;
never executed: return;
0
236 QTextTableCell removedCellFrom = t->cellAt(from);-
237 QTextTableCell removedCellEnd = t->cellAt(to);-
238 if (! removedCellFrom.isValid()
! removedCellFrom.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
|| !removedCellEnd.isValid()
!removedCellEnd.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
239 return;
never executed: return;
0
240-
241 int curFrom = position;-
242 int curTo = adjusted_anchor;-
243 if (curTo < curFrom
curTo < curFromDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
244 qSwap(curFrom, curTo);
never executed: qSwap(curFrom, curTo);
0
245-
246 QTextTableCell cellStart = t->cellAt(curFrom);-
247 QTextTableCell cellEnd = t->cellAt(curTo);-
248-
249 if (cellStart.row() >= removedCellFrom.row()
cellStart.row(...CellFrom.row()Description
TRUEnever evaluated
FALSEnever evaluated
&& cellEnd.row() <= removedCellEnd.row()
cellEnd.row() ...dCellEnd.row()Description
TRUEnever evaluated
FALSEnever evaluated
0
250 && cellStart.column() >= removedCellFrom.column()
cellStart.colu...lFrom.column()Description
TRUEnever evaluated
FALSEnever evaluated
0
251 && cellEnd.column() <= removedCellEnd.column()
cellEnd.column...llEnd.column()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
252-
253 QTextTableCell cell;-
254 if (removedCellFrom.row() == 0
removedCellFrom.row() == 0Description
TRUEnever evaluated
FALSEnever evaluated
&& removedCellEnd.row() == t->rows()-1
removedCellEnd...== t->rows()-1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
255 cell = t->cellAt(cellStart.row(), removedCellEnd.column()+1);
never executed: cell = t->cellAt(cellStart.row(), removedCellEnd.column()+1);
0
256 else if (removedCellFrom.column() == 0
removedCellFrom.column() == 0Description
TRUEnever evaluated
FALSEnever evaluated
&& removedCellEnd.column() == t->columns()-1
removedCellEnd...t->columns()-1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
257 cell = t->cellAt(removedCellEnd.row() + 1, cellStart.column());
never executed: cell = t->cellAt(removedCellEnd.row() + 1, cellStart.column());
0
258-
259 int newPosition;-
260 if (cell.isValid()
cell.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
261 newPosition = cell.firstPosition();
never executed: newPosition = cell.firstPosition();
0
262 else-
263 newPosition = t->lastPosition()+1;
never executed: newPosition = t->lastPosition()+1;
0
264-
265 setPosition(newPosition);-
266 anchor = newPosition;-
267 adjusted_anchor = newPosition;-
268 x = 0;-
269 }
never executed: end of block
0
270 else if (cellStart.row() >= removedCellFrom.row()
cellStart.row(...CellFrom.row()Description
TRUEnever evaluated
FALSEnever evaluated
&& cellStart.row() <= removedCellEnd.row()
cellStart.row(...dCellEnd.row()Description
TRUEnever evaluated
FALSEnever evaluated
0
271 && cellEnd.row() > removedCellEnd.row()
cellEnd.row() ...dCellEnd.row()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
272 int newPosition = t->cellAt(removedCellEnd.row() + 1, cellStart.column()).firstPosition();-
273 if (position < anchor
position < anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
274 position = newPosition;
never executed: position = newPosition;
0
275 else-
276 anchor = adjusted_anchor = newPosition;
never executed: anchor = adjusted_anchor = newPosition;
0
277 }-
278 else if (cellStart.column() >= removedCellFrom.column()
cellStart.colu...lFrom.column()Description
TRUEnever evaluated
FALSEnever evaluated
&& cellStart.column() <= removedCellEnd.column()
cellStart.colu...llEnd.column()Description
TRUEnever evaluated
FALSEnever evaluated
0
279 && cellEnd.column() > removedCellEnd.column()
cellEnd.column...llEnd.column()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
280 int newPosition = t->cellAt(cellStart.row(), removedCellEnd.column()+1).firstPosition();-
281 if (position < anchor
position < anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
282 position = newPosition;
never executed: position = newPosition;
0
283 else-
284 anchor = adjusted_anchor = newPosition;
never executed: anchor = adjusted_anchor = newPosition;
0
285 }-
286}
never executed: end of block
0
287-
288bool QTextCursorPrivate::movePosition(QTextCursor::MoveOperation op, QTextCursor::MoveMode mode)-
289{-
290 currentCharFormat = -1;-
291 bool adjustX = true;-
292 QTextBlock blockIt = block();-
293 bool visualMovement = priv->defaultCursorMoveStyle == Qt::VisualMoveStyle;-
294-
295 if (!blockIt.isValid()
!blockIt.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
296 return
never executed: return false;
false;
never executed: return false;
0
297-
298 if (blockIt.textDirection() == Qt::RightToLeft
blockIt.textDi...t::RightToLeftDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
299 if (op == QTextCursor::WordLeft
op == QTextCursor::WordLeftDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
300 op = QTextCursor::NextWord;
never executed: op = QTextCursor::NextWord;
0
301 else if (op == QTextCursor::WordRight
op == QTextCursor::WordRightDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
302 op = QTextCursor::PreviousWord;
never executed: op = QTextCursor::PreviousWord;
0
303-
304 if (!visualMovement
!visualMovementDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
305 if (op == QTextCursor::Left
op == QTextCursor::LeftDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
306 op = QTextCursor::NextCharacter;
never executed: op = QTextCursor::NextCharacter;
0
307 else if (op == QTextCursor::Right
op == QTextCursor::RightDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
308 op = QTextCursor::PreviousCharacter;
never executed: op = QTextCursor::PreviousCharacter;
0
309 }
never executed: end of block
0
310 }
never executed: end of block
0
311-
312 const QTextLayout *layout = blockLayout(blockIt);-
313 int relativePos = position - blockIt.position();-
314 QTextLine line;-
315 if (!priv->isInEditBlock()
!priv->isInEditBlock()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
316 line = layout->lineForTextPosition(relativePos);
never executed: line = layout->lineForTextPosition(relativePos);
0
317-
318 ((!(priv->frameAt(position) == priv->frameAt(adjusted_anchor))) ? qt_assert("priv->frameAt(position) == priv->frameAt(adjusted_anchor)",__FILE__,369) : qt_noop());-
319-
320 int newPosition = position;-
321-
322 if (mode == QTextCursor::KeepAnchor
mode == QTextC...or::KeepAnchorDescription
TRUEnever evaluated
FALSEnever evaluated
&& complexSelectionTable() != 0
complexSelectionTable() != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
323 if ((op >= QTextCursor::EndOfLine
op >= QTextCursor::EndOfLineDescription
TRUEnever evaluated
FALSEnever evaluated
&& op <= QTextCursor::NextWord
op <= QTextCursor::NextWordDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
324 || (op >= QTextCursor::Right
op >= QTextCursor::RightDescription
TRUEnever evaluated
FALSEnever evaluated
&& op <= QTextCursor::WordRight
op <= QTextCursor::WordRightDescription
TRUEnever evaluated
FALSEnever evaluated
)) {
0
325 QTextTable *t = qobject_cast<QTextTable *>(priv->frameAt(position));-
326 ((!(t)) ? qt_assert("t",__FILE__,377) : qt_noop());-
327 QTextTableCell cell_pos = t->cellAt(position);-
328 if (cell_pos.column() + cell_pos.columnSpan() != t->columns()
cell_pos.colum...= t->columns()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
329 op = QTextCursor::NextCell;
never executed: op = QTextCursor::NextCell;
0
330 }
never executed: end of block
0
331 }
never executed: end of block
0
332-
333 if (x == -1
x == -1Description
TRUEnever evaluated
FALSEnever evaluated
&& !priv->isInEditBlock()
!priv->isInEditBlock()Description
TRUEnever evaluated
FALSEnever evaluated
&& (op == QTextCursor::Up
op == QTextCursor::UpDescription
TRUEnever evaluated
FALSEnever evaluated
|| op == QTextCursor::Down
op == QTextCursor::DownDescription
TRUEnever evaluated
FALSEnever evaluated
))
0
334 setX();
never executed: setX();
0
335-
336 switch(op) {-
337 case
never executed: case QTextCursor::NoMove:
QTextCursor::NoMove:
never executed: case QTextCursor::NoMove:
0
338 return
never executed: return true;
true;
never executed: return true;
0
339-
340 case
never executed: case QTextCursor::Start:
QTextCursor::Start:
never executed: case QTextCursor::Start:
0
341 newPosition = 0;-
342 break;
never executed: break;
0
343 case
never executed: case QTextCursor::StartOfLine:
QTextCursor::StartOfLine:
never executed: case QTextCursor::StartOfLine:
{
0
344 newPosition = blockIt.position();-
345 if (line.isValid()
line.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
346 newPosition += line.textStart();
never executed: newPosition += line.textStart();
0
347-
348 break;
never executed: break;
0
349 }-
350 case
never executed: case QTextCursor::StartOfBlock:
QTextCursor::StartOfBlock:
never executed: case QTextCursor::StartOfBlock:
{
0
351 newPosition = blockIt.position();-
352 break;
never executed: break;
0
353 }-
354 case
never executed: case QTextCursor::PreviousBlock:
QTextCursor::PreviousBlock:
never executed: case QTextCursor::PreviousBlock:
{
0
355 if (blockIt == priv->blocksBegin()
blockIt == priv->blocksBegin()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
356 return
never executed: return false;
false;
never executed: return false;
0
357 blockIt = blockIt.previous();-
358-
359 newPosition = blockIt.position();-
360 break;
never executed: break;
0
361 }-
362 case
never executed: case QTextCursor::PreviousCharacter:
QTextCursor::PreviousCharacter:
never executed: case QTextCursor::PreviousCharacter:
0
363 if (mode == QTextCursor::MoveAnchor
mode == QTextC...or::MoveAnchorDescription
TRUEnever evaluated
FALSEnever evaluated
&& position != adjusted_anchor
position != adjusted_anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
364 newPosition = qMin(position, adjusted_anchor);
never executed: newPosition = qMin(position, adjusted_anchor);
0
365 else-
366 newPosition = priv->previousCursorPosition(position, QTextLayout::SkipCharacters);
never executed: newPosition = priv->previousCursorPosition(position, QTextLayout::SkipCharacters);
0
367 break;
never executed: break;
0
368 case
never executed: case QTextCursor::Left:
QTextCursor::Left:
never executed: case QTextCursor::Left:
0
369 if (mode == QTextCursor::MoveAnchor
mode == QTextC...or::MoveAnchorDescription
TRUEnever evaluated
FALSEnever evaluated
&& position != adjusted_anchor
position != adjusted_anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
370 newPosition = visualMovement
visualMovementDescription
TRUEnever evaluated
FALSEnever evaluated
? qMax(position, adjusted_anchor)
never executed: newPosition = visualMovement ? qMax(position, adjusted_anchor) : qMin(position, adjusted_anchor);
0
371 : qMin(position, adjusted_anchor);
never executed: newPosition = visualMovement ? qMax(position, adjusted_anchor) : qMin(position, adjusted_anchor);
0
372 else-
373 newPosition = visualMovement
visualMovementDescription
TRUEnever evaluated
FALSEnever evaluated
? priv->leftCursorPosition(position)
never executed: newPosition = visualMovement ? priv->leftCursorPosition(position) : priv->previousCursorPosition(position, QTextLayout::SkipCharacters);
0
374 : priv->previousCursorPosition(position, QTextLayout::SkipCharacters);
never executed: newPosition = visualMovement ? priv->leftCursorPosition(position) : priv->previousCursorPosition(position, QTextLayout::SkipCharacters);
0
375 break;
never executed: break;
0
376 case
never executed: case QTextCursor::StartOfWord:
QTextCursor::StartOfWord:
never executed: case QTextCursor::StartOfWord:
{
0
377 if (relativePos == 0
relativePos == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
378 break;
never executed: break;
0
379-
380-
381 QTextEngine *engine = layout->engine();-
382 const QCharAttributes *attributes = engine->attributes();-
383 if ((
(relativePos =....length() - 1)Description
TRUEnever evaluated
FALSEnever evaluated
relativePos == blockIt.length() - 1)
(relativePos =....length() - 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
384 && (attributes[relativePos - 1].whiteSpace
attributes[rel... 1].whiteSpaceDescription
TRUEnever evaluated
FALSEnever evaluated
|| engine->atWordSeparator(relativePos - 1)
engine->atWord...lativePos - 1)Description
TRUEnever evaluated
FALSEnever evaluated
))
0
385 return
never executed: return false;
false;
never executed: return false;
0
386-
387 if (relativePos < blockIt.length()-1
relativePos < ...kIt.length()-1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
388 ++
never executed: ++position;
position;
never executed: ++position;
0
389-
390-
391 }-
392 case
never executed: case QTextCursor::PreviousWord:
QTextCursor::PreviousWord:
never executed: case QTextCursor::PreviousWord:
code before this statement never executed: case QTextCursor::PreviousWord:
0
393 case
never executed: case QTextCursor::WordLeft:
QTextCursor::WordLeft:
never executed: case QTextCursor::WordLeft:
0
394 newPosition = priv->previousCursorPosition(position, QTextLayout::SkipWords);-
395 break;
never executed: break;
0
396 case
never executed: case QTextCursor::Up:
QTextCursor::Up:
never executed: case QTextCursor::Up:
{
0
397 int i = line.lineNumber() - 1;-
398 if (i == -1
i == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
399 if (blockIt == priv->blocksBegin()
blockIt == priv->blocksBegin()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
400 return
never executed: return false;
false;
never executed: return false;
0
401 int blockPosition = blockIt.position();-
402 QTextTable *table = qobject_cast<QTextTable *>(priv->frameAt(blockPosition));-
403 if (table
tableDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
404 QTextTableCell cell = table->cellAt(blockPosition);-
405 if (cell.firstPosition() == blockPosition
cell.firstPosi... blockPositionDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
406 int row = cell.row() - 1;-
407 if (row >= 0
row >= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
408 blockPosition = table->cellAt(row, cell.column()).lastPosition();-
409 }
never executed: end of block
else {
0
410-
411 blockPosition = table->firstPosition() - 1;-
412 }
never executed: end of block
0
413 blockIt = priv->blocksFind(blockPosition);-
414 }
never executed: end of block
else {
0
415 blockIt = blockIt.previous();-
416 }
never executed: end of block
0
417 } else {-
418 blockIt = blockIt.previous();-
419 }
never executed: end of block
0
420 layout = blockLayout(blockIt);-
421 i = layout->lineCount()-1;-
422 }
never executed: end of block
0
423 if (layout->lineCount()
layout->lineCount()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
424 QTextLine line = layout->lineAt(i);-
425 newPosition = line.xToCursor(x) + blockIt.position();-
426 }
never executed: end of block
else {
0
427 newPosition = blockIt.position();-
428 }
never executed: end of block
0
429 adjustX = false;-
430 break;
never executed: break;
0
431 }-
432-
433 case
never executed: case QTextCursor::End:
QTextCursor::End:
never executed: case QTextCursor::End:
0
434 newPosition = priv->length() - 1;-
435 break;
never executed: break;
0
436 case
never executed: case QTextCursor::EndOfLine:
QTextCursor::EndOfLine:
never executed: case QTextCursor::EndOfLine:
{
0
437 if (!line.isValid()
!line.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
|| line.textLength() == 0
line.textLength() == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
438 if (blockIt.length() >= 1
blockIt.length() >= 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
439-
440 newPosition = blockIt.position() + blockIt.length() - 1;
never executed: newPosition = blockIt.position() + blockIt.length() - 1;
0
441 break;
never executed: break;
0
442 }-
443 newPosition = blockIt.position() + line.textStart() + line.textLength();-
444 if (newPosition >= priv->length()
newPosition >= priv->length()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
445 newPosition = priv->length() - 1;
never executed: newPosition = priv->length() - 1;
0
446 if (line.lineNumber() < layout->lineCount() - 1
line.lineNumbe...ineCount() - 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
447 const QString text = blockIt.text();-
448-
449-
450 if (text.at(line.textStart() + line.textLength() - 1).isSpace()
text.at(line.t...- 1).isSpace()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
451 --
never executed: --newPosition;
newPosition;
never executed: --newPosition;
0
452 }
never executed: end of block
0
453 break;
never executed: break;
0
454 }-
455 case
never executed: case QTextCursor::EndOfWord:
QTextCursor::EndOfWord:
never executed: case QTextCursor::EndOfWord:
{
0
456 QTextEngine *engine = layout->engine();-
457 const QCharAttributes *attributes = engine->attributes();-
458 const int len = blockIt.length() - 1;-
459 if (relativePos >= len
relativePos >= lenDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
460 return
never executed: return false;
false;
never executed: return false;
0
461 if (engine->atWordSeparator(relativePos)
engine->atWord...r(relativePos)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
462 ++relativePos;-
463 while (relativePos < len
relativePos < lenDescription
TRUEnever evaluated
FALSEnever evaluated
&& engine->atWordSeparator(relativePos)
engine->atWord...r(relativePos)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
464 ++
never executed: ++relativePos;
relativePos;
never executed: ++relativePos;
0
465 }
never executed: end of block
else {
0
466 while (relativePos < len
relativePos < lenDescription
TRUEnever evaluated
FALSEnever evaluated
&& !attributes[relativePos].whiteSpace
!attributes[re...os].whiteSpaceDescription
TRUEnever evaluated
FALSEnever evaluated
&& !engine->atWordSeparator(relativePos)
!engine->atWor...r(relativePos)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
467 ++
never executed: ++relativePos;
relativePos;
never executed: ++relativePos;
0
468 }
never executed: end of block
0
469 newPosition = blockIt.position() + relativePos;-
470 break;
never executed: break;
0
471 }-
472 case
never executed: case QTextCursor::EndOfBlock:
QTextCursor::EndOfBlock:
never executed: case QTextCursor::EndOfBlock:
0
473 if (blockIt.length() >= 1
blockIt.length() >= 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
474-
475 newPosition = blockIt.position() + blockIt.length() - 1;
never executed: newPosition = blockIt.position() + blockIt.length() - 1;
0
476 break;
never executed: break;
0
477 case
never executed: case QTextCursor::NextBlock:
QTextCursor::NextBlock:
never executed: case QTextCursor::NextBlock:
{
0
478 blockIt = blockIt.next();-
479 if (!blockIt.isValid()
!blockIt.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
480 return
never executed: return false;
false;
never executed: return false;
0
481-
482 newPosition = blockIt.position();-
483 break;
never executed: break;
0
484 }-
485 case
never executed: case QTextCursor::NextCharacter:
QTextCursor::NextCharacter:
never executed: case QTextCursor::NextCharacter:
0
486 if (mode == QTextCursor::MoveAnchor
mode == QTextC...or::MoveAnchorDescription
TRUEnever evaluated
FALSEnever evaluated
&& position != adjusted_anchor
position != adjusted_anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
487 newPosition = qMax(position, adjusted_anchor);
never executed: newPosition = qMax(position, adjusted_anchor);
0
488 else-
489 newPosition = priv->nextCursorPosition(position, QTextLayout::SkipCharacters);
never executed: newPosition = priv->nextCursorPosition(position, QTextLayout::SkipCharacters);
0
490 break;
never executed: break;
0
491 case
never executed: case QTextCursor::Right:
QTextCursor::Right:
never executed: case QTextCursor::Right:
0
492 if (mode == QTextCursor::MoveAnchor
mode == QTextC...or::MoveAnchorDescription
TRUEnever evaluated
FALSEnever evaluated
&& position != adjusted_anchor
position != adjusted_anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
493 newPosition = visualMovement
visualMovementDescription
TRUEnever evaluated
FALSEnever evaluated
? qMin(position, adjusted_anchor)
never executed: newPosition = visualMovement ? qMin(position, adjusted_anchor) : qMax(position, adjusted_anchor);
0
494 : qMax(position, adjusted_anchor);
never executed: newPosition = visualMovement ? qMin(position, adjusted_anchor) : qMax(position, adjusted_anchor);
0
495 else-
496 newPosition = visualMovement
visualMovementDescription
TRUEnever evaluated
FALSEnever evaluated
? priv->rightCursorPosition(position)
never executed: newPosition = visualMovement ? priv->rightCursorPosition(position) : priv->nextCursorPosition(position, QTextLayout::SkipCharacters);
0
497 : priv->nextCursorPosition(position, QTextLayout::SkipCharacters);
never executed: newPosition = visualMovement ? priv->rightCursorPosition(position) : priv->nextCursorPosition(position, QTextLayout::SkipCharacters);
0
498 break;
never executed: break;
0
499 case
never executed: case QTextCursor::NextWord:
QTextCursor::NextWord:
never executed: case QTextCursor::NextWord:
0
500 case
never executed: case QTextCursor::WordRight:
QTextCursor::WordRight:
never executed: case QTextCursor::WordRight:
0
501 newPosition = priv->nextCursorPosition(position, QTextLayout::SkipWords);-
502 break;
never executed: break;
0
503-
504 case
never executed: case QTextCursor::Down:
QTextCursor::Down:
never executed: case QTextCursor::Down:
{
0
505 int i = line.lineNumber() + 1;-
506-
507 if (i >= layout->lineCount()
i >= layout->lineCount()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
508 int blockPosition = blockIt.position() + blockIt.length() - 1;-
509 QTextTable *table = qobject_cast<QTextTable *>(priv->frameAt(blockPosition));-
510 if (table
tableDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
511 QTextTableCell cell = table->cellAt(blockPosition);-
512 if (cell.lastPosition() == blockPosition
cell.lastPosit... blockPositionDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
513 int row = cell.row() + cell.rowSpan();-
514 if (row < table->rows()
row < table->rows()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
515 blockPosition = table->cellAt(row, cell.column()).firstPosition();-
516 }
never executed: end of block
else {
0
517-
518 blockPosition = table->lastPosition() + 1;-
519 }
never executed: end of block
0
520 blockIt = priv->blocksFind(blockPosition);-
521 }
never executed: end of block
else {
0
522 blockIt = blockIt.next();-
523 }
never executed: end of block
0
524 } else {-
525 blockIt = blockIt.next();-
526 }
never executed: end of block
0
527-
528 if (blockIt == priv->blocksEnd()
blockIt == priv->blocksEnd()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
529 return
never executed: return false;
false;
never executed: return false;
0
530 layout = blockLayout(blockIt);-
531 i = 0;-
532 }
never executed: end of block
0
533 if (layout->lineCount()
layout->lineCount()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
534 QTextLine line = layout->lineAt(i);-
535 newPosition = line.xToCursor(x) + blockIt.position();-
536 }
never executed: end of block
else {
0
537 newPosition = blockIt.position();-
538 }
never executed: end of block
0
539 adjustX = false;-
540 break;
never executed: break;
0
541 }-
542 case
never executed: case QTextCursor::NextCell:
QTextCursor::NextCell:
never executed: case QTextCursor::NextCell:
0
543 case
never executed: case QTextCursor::PreviousCell:
QTextCursor::PreviousCell:
never executed: case QTextCursor::PreviousCell:
0
544 case
never executed: case QTextCursor::NextRow:
QTextCursor::NextRow:
never executed: case QTextCursor::NextRow:
0
545 case
never executed: case QTextCursor::PreviousRow:
QTextCursor::PreviousRow:
never executed: case QTextCursor::PreviousRow:
{
0
546 QTextTable *table = qobject_cast<QTextTable *>(priv->frameAt(position));-
547 if (!table
!tableDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
548 return
never executed: return false;
false;
never executed: return false;
0
549-
550 QTextTableCell cell = table->cellAt(position);-
551 ((!(cell.isValid())) ? qt_assert("cell.isValid()",__FILE__,602) : qt_noop());-
552 int column = cell.column();-
553 int row = cell.row();-
554 const int currentRow = row;-
555 if (op == QTextCursor::NextCell
op == QTextCursor::NextCellDescription
TRUEnever evaluated
FALSEnever evaluated
|| op == QTextCursor::NextRow
op == QTextCursor::NextRowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
556 do {-
557 column += cell.columnSpan();-
558 if (column >= table->columns()
column >= table->columns()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
559 column = 0;-
560 ++row;-
561 }
never executed: end of block
0
562 cell = table->cellAt(row, column);-
563-
564 }
never executed: end of block
while (cell.isValid()
cell.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
565 && ((op == QTextCursor::NextRow
op == QTextCursor::NextRowDescription
TRUEnever evaluated
FALSEnever evaluated
&& currentRow == cell.row()
currentRow == cell.row()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
566 || cell.row() < row
cell.row() < rowDescription
TRUEnever evaluated
FALSEnever evaluated
));
0
567 }
never executed: end of block
0
568 else if (op == QTextCursor::PreviousCell
op == QTextCur...::PreviousCellDescription
TRUEnever evaluated
FALSEnever evaluated
|| op == QTextCursor::PreviousRow
op == QTextCursor::PreviousRowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
569 do {-
570 --column;-
571 if (column < 0
column < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
572 column = table->columns()-1;-
573 --row;-
574 }
never executed: end of block
0
575 cell = table->cellAt(row, column);-
576-
577 }
never executed: end of block
while (cell.isValid()
cell.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
578 && ((op == QTextCursor::PreviousRow
op == QTextCursor::PreviousRowDescription
TRUEnever evaluated
FALSEnever evaluated
&& currentRow == cell.row()
currentRow == cell.row()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
579 || cell.row() < row
cell.row() < rowDescription
TRUEnever evaluated
FALSEnever evaluated
));
0
580 }
never executed: end of block
0
581 if (cell.isValid()
cell.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
582 newPosition = cell.firstPosition();
never executed: newPosition = cell.firstPosition();
0
583 break;
never executed: break;
0
584 }-
585 }-
586-
587 if (mode == QTextCursor::KeepAnchor
mode == QTextC...or::KeepAnchorDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
588 QTextTable *table = qobject_cast<QTextTable *>(priv->frameAt(position));-
589 if (table
tableDescription
TRUEnever evaluated
FALSEnever evaluated
&& ((op >= QTextCursor::PreviousBlock
op >= QTextCur...:PreviousBlockDescription
TRUEnever evaluated
FALSEnever evaluated
&& op <= QTextCursor::WordLeft
op <= QTextCursor::WordLeftDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
590 || (op >= QTextCursor::NextBlock
op >= QTextCursor::NextBlockDescription
TRUEnever evaluated
FALSEnever evaluated
&& op <= QTextCursor::WordRight
op <= QTextCursor::WordRightDescription
TRUEnever evaluated
FALSEnever evaluated
))) {
0
591 int oldColumn = table->cellAt(position).column();-
592-
593 const QTextTableCell otherCell = table->cellAt(newPosition);-
594 if (!otherCell.isValid()
!otherCell.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
595 return
never executed: return false;
false;
never executed: return false;
0
596-
597 int newColumn = otherCell.column();-
598 if ((oldColumn > newColumn
oldColumn > newColumnDescription
TRUEnever evaluated
FALSEnever evaluated
&& op >= QTextCursor::End
op >= QTextCursor::EndDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
599 || (oldColumn < newColumn
oldColumn < newColumnDescription
TRUEnever evaluated
FALSEnever evaluated
&& op <= QTextCursor::WordLeft
op <= QTextCursor::WordLeftDescription
TRUEnever evaluated
FALSEnever evaluated
))
0
600 return
never executed: return false;
false;
never executed: return false;
0
601 }
never executed: end of block
0
602 }
never executed: end of block
0
603-
604 const bool moved = setPosition(newPosition);-
605-
606 if (mode == QTextCursor::MoveAnchor
mode == QTextC...or::MoveAnchorDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
607 anchor = position;-
608 adjusted_anchor = position;-
609 }
never executed: end of block
else {
0
610 adjustCursor(op);-
611 }
never executed: end of block
0
612-
613 if (adjustX
adjustXDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
614 setX();
never executed: setX();
0
615-
616 return
never executed: return moved;
moved;
never executed: return moved;
0
617}-
618-
619QTextTable *QTextCursorPrivate::complexSelectionTable() const-
620{-
621 if (position == anchor
position == anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
622 return
never executed: return 0;
0;
never executed: return 0;
0
623-
624 QTextTable *t = qobject_cast<QTextTable *>(priv->frameAt(position));-
625 if (t
tDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
626 QTextTableCell cell_pos = t->cellAt(position);-
627 QTextTableCell cell_anchor = t->cellAt(adjusted_anchor);-
628-
629 ((!(cell_anchor.isValid())) ? qt_assert("cell_anchor.isValid()",__FILE__,680) : qt_noop());-
630-
631 if (cell_pos == cell_anchor
cell_pos == cell_anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
632 t = 0;
never executed: t = 0;
0
633 }
never executed: end of block
0
634 return
never executed: return t;
t;
never executed: return t;
0
635}-
636-
637void QTextCursorPrivate::selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns) const-
638{-
639 *firstRow = -1;-
640 *firstColumn = -1;-
641 *numRows = -1;-
642 *numColumns = -1;-
643-
644 if (position == anchor
position == anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
645 return;
never executed: return;
0
646-
647 QTextTable *t = qobject_cast<QTextTable *>(priv->frameAt(position));-
648 if (!t
!tDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
649 return;
never executed: return;
0
650-
651 QTextTableCell cell_pos = t->cellAt(position);-
652 QTextTableCell cell_anchor = t->cellAt(adjusted_anchor);-
653-
654 ((!(cell_anchor.isValid())) ? qt_assert("cell_anchor.isValid()",__FILE__,705) : qt_noop());-
655-
656 if (cell_pos == cell_anchor
cell_pos == cell_anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
657 return;
never executed: return;
0
658-
659 *firstRow = qMin(cell_pos.row(), cell_anchor.row());-
660 *firstColumn = qMin(cell_pos.column(), cell_anchor.column());-
661 *numRows = qMax(cell_pos.row() + cell_pos.rowSpan(), cell_anchor.row() + cell_anchor.rowSpan()) - *firstRow;-
662 *numColumns = qMax(cell_pos.column() + cell_pos.columnSpan(), cell_anchor.column() + cell_anchor.columnSpan()) - *firstColumn;-
663}
never executed: end of block
0
664-
665static void setBlockCharFormatHelper(QTextDocumentPrivate *priv, int pos1, int pos2,-
666 const QTextCharFormat &format, QTextDocumentPrivate::FormatChangeMode changeMode)-
667{-
668 QTextBlock it = priv->blocksFind(pos1);-
669 QTextBlock end = priv->blocksFind(pos2);-
670 if (end.isValid()
end.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
671 end = end.next();
never executed: end = end.next();
0
672-
673 for (; it != end
it != endDescription
TRUEnever evaluated
FALSEnever evaluated
; it = it.next()) {
0
674 priv->setCharFormat(it.position() - 1, 1, format, changeMode);-
675 }
never executed: end of block
0
676}
never executed: end of block
0
677-
678void QTextCursorPrivate::setBlockCharFormat(const QTextCharFormat &_format,-
679 QTextDocumentPrivate::FormatChangeMode changeMode)-
680{-
681 priv->beginEditBlock();-
682-
683 QTextCharFormat format = _format;-
684 format.clearProperty(QTextFormat::ObjectIndex);-
685-
686 QTextTable *table = complexSelectionTable();-
687 if (table
tableDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
688 int row_start, col_start, num_rows, num_cols;-
689 selectedTableCells(&row_start, &num_rows, &col_start, &num_cols);-
690-
691 ((!(row_start != -1)) ? qt_assert("row_start != -1",__FILE__,742) : qt_noop());-
692 for (int r = row_start; r < row_start + num_rows
r < row_start + num_rowsDescription
TRUEnever evaluated
FALSEnever evaluated
; ++r) {
0
693 for (int c = col_start; c < col_start + num_cols
c < col_start + num_colsDescription
TRUEnever evaluated
FALSEnever evaluated
; ++c) {
0
694 QTextTableCell cell = table->cellAt(r, c);-
695 int rspan = cell.rowSpan();-
696 int cspan = cell.columnSpan();-
697 if (rspan != 1
rspan != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
698 int cr = cell.row();-
699 if (cr != r
cr != rDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
700 continue;
never executed: continue;
0
701 }
never executed: end of block
0
702 if (cspan != 1
cspan != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
703 int cc = cell.column();-
704 if (cc != c
cc != cDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
705 continue;
never executed: continue;
0
706 }
never executed: end of block
0
707-
708 int pos1 = cell.firstPosition();-
709 int pos2 = cell.lastPosition();-
710 setBlockCharFormatHelper(priv, pos1, pos2, format, changeMode);-
711 }
never executed: end of block
0
712 }
never executed: end of block
0
713 }
never executed: end of block
else {
0
714 int pos1 = position;-
715 int pos2 = adjusted_anchor;-
716 if (pos1 > pos2
pos1 > pos2Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
717 pos1 = adjusted_anchor;-
718 pos2 = position;-
719 }
never executed: end of block
0
720-
721 setBlockCharFormatHelper(priv, pos1, pos2, format, changeMode);-
722 }
never executed: end of block
0
723 priv->endEditBlock();-
724}
never executed: end of block
0
725-
726-
727void QTextCursorPrivate::setBlockFormat(const QTextBlockFormat &format, QTextDocumentPrivate::FormatChangeMode changeMode)-
728{-
729 QTextTable *table = complexSelectionTable();-
730 if (table
tableDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
731 priv->beginEditBlock();-
732 int row_start, col_start, num_rows, num_cols;-
733 selectedTableCells(&row_start, &num_rows, &col_start, &num_cols);-
734-
735 ((!(row_start != -1)) ? qt_assert("row_start != -1",__FILE__,786) : qt_noop());-
736 for (int r = row_start; r < row_start + num_rows
r < row_start + num_rowsDescription
TRUEnever evaluated
FALSEnever evaluated
; ++r) {
0
737 for (int c = col_start; c < col_start + num_cols
c < col_start + num_colsDescription
TRUEnever evaluated
FALSEnever evaluated
; ++c) {
0
738 QTextTableCell cell = table->cellAt(r, c);-
739 int rspan = cell.rowSpan();-
740 int cspan = cell.columnSpan();-
741 if (rspan != 1
rspan != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
742 int cr = cell.row();-
743 if (cr != r
cr != rDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
744 continue;
never executed: continue;
0
745 }
never executed: end of block
0
746 if (cspan != 1
cspan != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
747 int cc = cell.column();-
748 if (cc != c
cc != cDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
749 continue;
never executed: continue;
0
750 }
never executed: end of block
0
751-
752 int pos1 = cell.firstPosition();-
753 int pos2 = cell.lastPosition();-
754 priv->setBlockFormat(priv->blocksFind(pos1), priv->blocksFind(pos2), format, changeMode);-
755 }
never executed: end of block
0
756 }
never executed: end of block
0
757 priv->endEditBlock();-
758 }
never executed: end of block
else {
0
759 int pos1 = position;-
760 int pos2 = adjusted_anchor;-
761 if (pos1 > pos2
pos1 > pos2Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
762 pos1 = adjusted_anchor;-
763 pos2 = position;-
764 }
never executed: end of block
0
765-
766 priv->setBlockFormat(priv->blocksFind(pos1), priv->blocksFind(pos2), format, changeMode);-
767 }
never executed: end of block
0
768}-
769-
770void QTextCursorPrivate::setCharFormat(const QTextCharFormat &_format, QTextDocumentPrivate::FormatChangeMode changeMode)-
771{-
772 ((!(position != anchor)) ? qt_assert("position != anchor",__FILE__,823) : qt_noop());-
773-
774 QTextCharFormat format = _format;-
775 format.clearProperty(QTextFormat::ObjectIndex);-
776-
777 QTextTable *table = complexSelectionTable();-
778 if (table
tableDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
779 priv->beginEditBlock();-
780 int row_start, col_start, num_rows, num_cols;-
781 selectedTableCells(&row_start, &num_rows, &col_start, &num_cols);-
782-
783 ((!(row_start != -1)) ? qt_assert("row_start != -1",__FILE__,834) : qt_noop());-
784 for (int r = row_start; r < row_start + num_rows
r < row_start + num_rowsDescription
TRUEnever evaluated
FALSEnever evaluated
; ++r) {
0
785 for (int c = col_start; c < col_start + num_cols
c < col_start + num_colsDescription
TRUEnever evaluated
FALSEnever evaluated
; ++c) {
0
786 QTextTableCell cell = table->cellAt(r, c);-
787 int rspan = cell.rowSpan();-
788 int cspan = cell.columnSpan();-
789 if (rspan != 1
rspan != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
790 int cr = cell.row();-
791 if (cr != r
cr != rDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
792 continue;
never executed: continue;
0
793 }
never executed: end of block
0
794 if (cspan != 1
cspan != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
795 int cc = cell.column();-
796 if (cc != c
cc != cDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
797 continue;
never executed: continue;
0
798 }
never executed: end of block
0
799-
800 int pos1 = cell.firstPosition();-
801 int pos2 = cell.lastPosition();-
802 priv->setCharFormat(pos1, pos2-pos1, format, changeMode);-
803 }
never executed: end of block
0
804 }
never executed: end of block
0
805 priv->endEditBlock();-
806 }
never executed: end of block
else {
0
807 int pos1 = position;-
808 int pos2 = adjusted_anchor;-
809 if (pos1 > pos2
pos1 > pos2Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
810 pos1 = adjusted_anchor;-
811 pos2 = position;-
812 }
never executed: end of block
0
813-
814 priv->setCharFormat(pos1, pos2-pos1, format, changeMode);-
815 }
never executed: end of block
0
816}-
817-
818-
819QTextLayout *QTextCursorPrivate::blockLayout(QTextBlock &block) const{-
820 QTextLayout *tl = block.layout();-
821 if (!tl->lineCount()
!tl->lineCount()Description
TRUEnever evaluated
FALSEnever evaluated
&& priv->layout()
priv->layout()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
822 priv->layout()->blockBoundingRect(block);
never executed: priv->layout()->blockBoundingRect(block);
0
823 return
never executed: return tl;
tl;
never executed: return tl;
0
824}-
825QTextCursor::QTextCursor()-
826 : d(0)-
827{-
828}
never executed: end of block
0
829-
830-
831-
832-
833QTextCursor::QTextCursor(QTextDocument *document)-
834 : d(new QTextCursorPrivate(document->docHandle()))-
835{-
836}
never executed: end of block
0
837-
838-
839-
840-
841QTextCursor::QTextCursor(QTextFrame *frame)-
842 : d(new QTextCursorPrivate(frame->document()->docHandle()))-
843{-
844 d->adjusted_anchor = d->anchor = d->position = frame->firstPosition();-
845}
never executed: end of block
0
846-
847-
848-
849-
850-
851QTextCursor::QTextCursor(const QTextBlock &block)-
852 : d(new QTextCursorPrivate(block.docHandle()))-
853{-
854 d->adjusted_anchor = d->anchor = d->position = block.position();-
855}
never executed: end of block
0
856-
857-
858-
859-
860-
861QTextCursor::QTextCursor(QTextDocumentPrivate *p, int pos)-
862 : d(new QTextCursorPrivate(p))-
863{-
864 d->adjusted_anchor = d->anchor = d->position = pos;-
865-
866 d->setX();-
867}
never executed: end of block
0
868-
869-
870-
871-
872QTextCursor::QTextCursor(QTextCursorPrivate *d)-
873{-
874 ((!(d)) ? qt_assert("d",__FILE__,1094) : qt_noop());-
875 this->d = d;-
876}
never executed: end of block
0
877-
878-
879-
880-
881QTextCursor::QTextCursor(const QTextCursor &cursor)-
882{-
883 d = cursor.d;-
884}
never executed: end of block
0
885-
886-
887-
888-
889-
890-
891-
892QTextCursor &QTextCursor::operator=(const QTextCursor &cursor)-
893{-
894 d = cursor.d;-
895 return
never executed: return *this;
*this;
never executed: return *this;
0
896}-
897QTextCursor::~QTextCursor()-
898{-
899}-
900-
901-
902-
903-
904-
905bool QTextCursor::isNull() const-
906{-
907 return
never executed: return !d || !d->priv;
!d || !d->priv;
never executed: return !d || !d->priv;
0
908}-
909void QTextCursor::setPosition(int pos, MoveMode m)-
910{-
911 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
912 return;
never executed: return;
0
913-
914 if (pos < 0
pos < 0Description
TRUEnever evaluated
FALSEnever evaluated
|| pos >= d->priv->length()
pos >= d->priv->length()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
915 QMessageLogger(__FILE__, 1155, __PRETTY_FUNCTION__).warning("QTextCursor::setPosition: Position '%d' out of range", pos);-
916 return;
never executed: return;
0
917 }-
918-
919 d->setPosition(pos);-
920 if (m == MoveAnchor
m == MoveAnchorDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
921 d->anchor = pos;-
922 d->adjusted_anchor = pos;-
923 }
never executed: end of block
else {
0
924 QTextCursor::MoveOperation op;-
925 if (pos < d->anchor
pos < d->anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
926 op = QTextCursor::Left;
never executed: op = QTextCursor::Left;
0
927 else-
928 op = QTextCursor::Right;
never executed: op = QTextCursor::Right;
0
929 d->adjustCursor(op);-
930 }
never executed: end of block
0
931 d->setX();-
932}
never executed: end of block
0
933-
934-
935-
936-
937-
938-
939-
940int QTextCursor::position() const-
941{-
942 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
943 return
never executed: return -1;
-1;
never executed: return -1;
0
944 return
never executed: return d->position;
d->position;
never executed: return d->position;
0
945}-
946int QTextCursor::positionInBlock() const-
947{-
948 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
949 return
never executed: return 0;
0;
never executed: return 0;
0
950 return
never executed: return d->position - d->block().position();
d->position - d->block().position();
never executed: return d->position - d->block().position();
0
951}-
952int QTextCursor::anchor() const-
953{-
954 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
955 return
never executed: return -1;
-1;
never executed: return -1;
0
956 return
never executed: return d->anchor;
d->anchor;
never executed: return d->anchor;
0
957}-
958bool QTextCursor::movePosition(MoveOperation op, MoveMode mode, int n)-
959{-
960 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
961 return
never executed: return false;
false;
never executed: return false;
0
962 switch (op) {-
963 case
never executed: case Start:
Start:
never executed: case Start:
0
964 case
never executed: case StartOfLine:
StartOfLine:
never executed: case StartOfLine:
0
965 case
never executed: case End:
End:
never executed: case End:
0
966 case
never executed: case EndOfLine:
EndOfLine:
never executed: case EndOfLine:
0
967 n = 1;-
968 break;
never executed: break;
0
969 default
never executed: default:
:
never executed: default:
break;
never executed: break;
0
970 }-
971-
972 int previousPosition = d->position;-
973 for (; n > 0
n > 0Description
TRUEnever evaluated
FALSEnever evaluated
; --n) {
0
974 if (!d->movePosition(op, mode)
!d->movePosition(op, mode)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
975 return
never executed: return false;
false;
never executed: return false;
0
976 }
never executed: end of block
0
977-
978 if (d->visualNavigation
d->visualNavigationDescription
TRUEnever evaluated
FALSEnever evaluated
&& !d->block().isVisible()
!d->block().isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
979 QTextBlock b = d->block();-
980 if (previousPosition < d->position
previousPosition < d->positionDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
981 while (!b.next().isVisible()
!b.next().isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
982 b = b.next();
never executed: b = b.next();
0
983 d->setPosition(b.position() + b.length() - 1);-
984 }
never executed: end of block
else {
0
985 while (!b.previous().isVisible()
!b.previous().isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
986 b = b.previous();
never executed: b = b.previous();
0
987 d->setPosition(b.position());-
988 }
never executed: end of block
0
989 if (mode == QTextCursor::MoveAnchor
mode == QTextC...or::MoveAnchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
990 d->anchor = d->position;
never executed: d->anchor = d->position;
0
991 while (d->movePosition(op, mode)
d->movePosition(op, mode)Description
TRUEnever evaluated
FALSEnever evaluated
0
992 && !d->block().isVisible()
!d->block().isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
993 ;
never executed: ;
0
994-
995 }
never executed: end of block
0
996 return
never executed: return true;
true;
never executed: return true;
0
997}-
998bool QTextCursor::visualNavigation() const-
999{-
1000 return
never executed: return d ? d->visualNavigation : false;
d ? d->visualNavigation : false;
never executed: return d ? d->visualNavigation : false;
0
1001}-
1002void QTextCursor::setVisualNavigation(bool b)-
1003{-
1004 if (d
dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1005 d->visualNavigation = b;
never executed: d->visualNavigation = b;
0
1006}
never executed: end of block
0
1007void QTextCursor::setVerticalMovementX(int x)-
1008{-
1009 if (d
dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1010 d->x = x;
never executed: d->x = x;
0
1011}
never executed: end of block
0
1012int QTextCursor::verticalMovementX() const-
1013{-
1014 return
never executed: return d ? d->x : -1;
d ? d->x : -1;
never executed: return d ? d->x : -1;
0
1015}-
1016bool QTextCursor::keepPositionOnInsert() const-
1017{-
1018 return
never executed: return d ? d->keepPositionOnInsert : false;
d ? d->keepPositionOnInsert : false;
never executed: return d ? d->keepPositionOnInsert : false;
0
1019}-
1020void QTextCursor::setKeepPositionOnInsert(bool b)-
1021{-
1022 if (d
dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1023 d->keepPositionOnInsert = b;
never executed: d->keepPositionOnInsert = b;
0
1024}
never executed: end of block
0
1025void QTextCursor::insertText(const QString &text)-
1026{-
1027 QTextCharFormat fmt = charFormat();-
1028 fmt.clearProperty(QTextFormat::ObjectType);-
1029 insertText(text, fmt);-
1030}
never executed: end of block
0
1031-
1032-
1033-
1034-
1035-
1036-
1037-
1038void QTextCursor::insertText(const QString &text, const QTextCharFormat &_format)-
1039{-
1040 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1041 return;
never executed: return;
0
1042-
1043 ((!(_format.isValid())) ? qt_assert("_format.isValid()",__FILE__,1417) : qt_noop());-
1044-
1045 QTextCharFormat format = _format;-
1046 format.clearProperty(QTextFormat::ObjectIndex);-
1047-
1048 bool hasEditBlock = false;-
1049-
1050 if (d->anchor != d->position
d->anchor != d->positionDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1051 hasEditBlock = true;-
1052 d->priv->beginEditBlock();-
1053 d->remove();-
1054 }
never executed: end of block
0
1055-
1056 if (!text.isEmpty()
!text.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1057 QTextFormatCollection *formats = d->priv->formatCollection();-
1058 int formatIdx = formats->indexForFormat(format);-
1059 ((!(formats->format(formatIdx).isCharFormat())) ? qt_assert("formats->format(formatIdx).isCharFormat()",__FILE__,1433) : qt_noop());-
1060-
1061 QTextBlockFormat blockFmt = blockFormat();-
1062-
1063-
1064 int textStart = d->priv->text.length();-
1065 int blockStart = 0;-
1066 d->priv->text += text;-
1067 int textEnd = d->priv->text.length();-
1068-
1069 for (int i = 0; i < text.length()
i < text.length()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
1070 QChar ch = text.at(i);-
1071-
1072 const int blockEnd = i;-
1073-
1074 if (ch == QLatin1Char('\r')
ch == QLatin1Char('\r')Description
TRUEnever evaluated
FALSEnever evaluated
0
1075 && (
(i + 1) < text.length()Description
TRUEnever evaluated
FALSEnever evaluated
i + 1) < text.length()
(i + 1) < text.length()Description
TRUEnever evaluated
FALSEnever evaluated
0
1076 && text.at(i + 1) == QLatin1Char('\n')
text.at(i + 1)...tin1Char('\n')Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1077 ++i;-
1078 ch = text.at(i);-
1079 }
never executed: end of block
0
1080-
1081 if (ch == QLatin1Char('\n')
ch == QLatin1Char('\n')Description
TRUEnever evaluated
FALSEnever evaluated
0
1082 || ch == QChar::ParagraphSeparator
ch == QChar::P...graphSeparatorDescription
TRUEnever evaluated
FALSEnever evaluated
0
1083 || ch == QChar(0xfdd0)
ch == QChar(0xfdd0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1084 || ch == QChar(0xfdd1)
ch == QChar(0xfdd1)Description
TRUEnever evaluated
FALSEnever evaluated
0
1085 || ch == QLatin1Char('\r')
ch == QLatin1Char('\r')Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1086-
1087 if (!hasEditBlock
!hasEditBlockDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1088 hasEditBlock = true;-
1089 d->priv->beginEditBlock();-
1090 }
never executed: end of block
0
1091-
1092 if (blockEnd > blockStart
blockEnd > blockStartDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1093 d->priv->insert(d->position, textStart + blockStart, blockEnd - blockStart, formatIdx);
never executed: d->priv->insert(d->position, textStart + blockStart, blockEnd - blockStart, formatIdx);
0
1094-
1095 d->insertBlock(blockFmt, format);-
1096 blockStart = i + 1;-
1097 }
never executed: end of block
0
1098 }
never executed: end of block
0
1099 if (textStart + blockStart < textEnd
textStart + bl...tart < textEndDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1100 d->priv->insert(d->position, textStart + blockStart, textEnd - textStart - blockStart, formatIdx);
never executed: d->priv->insert(d->position, textStart + blockStart, textEnd - textStart - blockStart, formatIdx);
0
1101 }
never executed: end of block
0
1102 if (hasEditBlock
hasEditBlockDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1103 d->priv->endEditBlock();
never executed: d->priv->endEditBlock();
0
1104 d->setX();-
1105}
never executed: end of block
0
1106-
1107-
1108-
1109-
1110-
1111-
1112-
1113void QTextCursor::deleteChar()-
1114{-
1115 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1116 return;
never executed: return;
0
1117-
1118 if (d->position != d->anchor
d->position != d->anchorDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1119 removeSelectedText();-
1120 return;
never executed: return;
0
1121 }-
1122-
1123 if (!d->canDelete(d->position)
!d->canDelete(d->position)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1124 return;
never executed: return;
0
1125 d->adjusted_anchor = d->anchor =-
1126 d->priv->nextCursorPosition(d->anchor, QTextLayout::SkipCharacters);-
1127 d->remove();-
1128 d->setX();-
1129}
never executed: end of block
0
1130-
1131-
1132-
1133-
1134-
1135-
1136-
1137void QTextCursor::deletePreviousChar()-
1138{-
1139 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1140 return;
never executed: return;
0
1141-
1142 if (d->position != d->anchor
d->position != d->anchorDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1143 removeSelectedText();-
1144 return;
never executed: return;
0
1145 }-
1146-
1147 if (d->anchor < 1
d->anchor < 1Description
TRUEnever evaluated
FALSEnever evaluated
|| !d->canDelete(d->anchor-1)
!d->canDelete(d->anchor-1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1148 return;
never executed: return;
0
1149 d->anchor--;-
1150-
1151 QTextDocumentPrivate::FragmentIterator fragIt = d->priv->find(d->anchor);-
1152 const QTextFragmentData * const frag = fragIt.value();-
1153 int fpos = fragIt.position();-
1154 QChar uc = d->priv->buffer().at(d->anchor - fpos + frag->stringPosition);-
1155 if (d->anchor > fpos
d->anchor > fposDescription
TRUEnever evaluated
FALSEnever evaluated
&& uc.isLowSurrogate()
uc.isLowSurrogate()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1156-
1157-
1158 uc = d->priv->buffer().at(d->anchor - 1 - fpos + frag->stringPosition);-
1159 if (uc.isHighSurrogate()
uc.isHighSurrogate()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1160 --
never executed: --d->anchor;
d->anchor;
never executed: --d->anchor;
0
1161 }
never executed: end of block
0
1162-
1163 d->adjusted_anchor = d->anchor;-
1164 d->remove();-
1165 d->setX();-
1166}
never executed: end of block
0
1167-
1168-
1169-
1170-
1171void QTextCursor::select(SelectionType selection)-
1172{-
1173 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1174 return;
never executed: return;
0
1175-
1176 clearSelection();-
1177-
1178 const QTextBlock block = d->block();-
1179-
1180 switch (selection) {-
1181 case
never executed: case LineUnderCursor:
LineUnderCursor:
never executed: case LineUnderCursor:
0
1182 movePosition(StartOfLine);-
1183 movePosition(EndOfLine, KeepAnchor);-
1184 break;
never executed: break;
0
1185 case
never executed: case WordUnderCursor:
WordUnderCursor:
never executed: case WordUnderCursor:
0
1186 movePosition(StartOfWord);-
1187 movePosition(EndOfWord, KeepAnchor);-
1188 break;
never executed: break;
0
1189 case
never executed: case BlockUnderCursor:
BlockUnderCursor:
never executed: case BlockUnderCursor:
0
1190 if (block.length() == 1
block.length() == 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1191 break;
never executed: break;
0
1192 movePosition(StartOfBlock);-
1193-
1194 if (movePosition(PreviousBlock)
movePosition(PreviousBlock)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1195 movePosition(EndOfBlock);-
1196 movePosition(NextBlock, KeepAnchor);-
1197 }
never executed: end of block
0
1198 movePosition(EndOfBlock, KeepAnchor);-
1199 break;
never executed: break;
0
1200 case
never executed: case Document:
Document:
never executed: case Document:
0
1201 movePosition(Start);-
1202 movePosition(End, KeepAnchor);-
1203 break;
never executed: break;
0
1204 }-
1205}
never executed: end of block
0
1206-
1207-
1208-
1209-
1210bool QTextCursor::hasSelection() const-
1211{-
1212 return
never executed: return !!d && d->position != d->anchor;
!!d && d->position != d->anchor;
never executed: return !!d && d->position != d->anchor;
0
1213}-
1214bool QTextCursor::hasComplexSelection() const-
1215{-
1216 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1217 return
never executed: return false;
false;
never executed: return false;
0
1218-
1219 return
never executed: return d->complexSelectionTable() != 0;
d->complexSelectionTable() != 0;
never executed: return d->complexSelectionTable() != 0;
0
1220}-
1221void QTextCursor::selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns) const-
1222{-
1223 *firstRow = -1;-
1224 *firstColumn = -1;-
1225 *numRows = -1;-
1226 *numColumns = -1;-
1227-
1228 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| d->position == d->anchor
d->position == d->anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1229 return;
never executed: return;
0
1230-
1231 d->selectedTableCells(firstRow, numRows, firstColumn, numColumns);-
1232}
never executed: end of block
0
1233void QTextCursor::clearSelection()-
1234{-
1235 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1236 return;
never executed: return;
0
1237 d->adjusted_anchor = d->anchor = d->position;-
1238 d->currentCharFormat = -1;-
1239}
never executed: end of block
0
1240-
1241-
1242-
1243-
1244-
1245-
1246-
1247void QTextCursor::removeSelectedText()-
1248{-
1249 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
|| d->position == d->anchor
d->position == d->anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1250 return;
never executed: return;
0
1251-
1252 d->priv->beginEditBlock();-
1253 d->remove();-
1254 d->priv->endEditBlock();-
1255 d->setX();-
1256}
never executed: end of block
0
1257-
1258-
1259-
1260-
1261-
1262-
1263-
1264int QTextCursor::selectionStart() const-
1265{-
1266 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1267 return
never executed: return -1;
-1;
never executed: return -1;
0
1268 return
never executed: return qMin(d->position, d->adjusted_anchor);
qMin(d->position, d->adjusted_anchor);
never executed: return qMin(d->position, d->adjusted_anchor);
0
1269}-
1270-
1271-
1272-
1273-
1274-
1275-
1276-
1277int QTextCursor::selectionEnd() const-
1278{-
1279 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1280 return
never executed: return -1;
-1;
never executed: return -1;
0
1281 return
never executed: return qMax(d->position, d->adjusted_anchor);
qMax(d->position, d->adjusted_anchor);
never executed: return qMax(d->position, d->adjusted_anchor);
0
1282}-
1283-
1284static void getText(QString &text, QTextDocumentPrivate *priv, const QString &docText, int pos, int end)-
1285{-
1286 while (pos < end
pos < endDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1287 QTextDocumentPrivate::FragmentIterator fragIt = priv->find(pos);-
1288 const QTextFragmentData * const frag = fragIt.value();-
1289-
1290 const int offsetInFragment = qMax(0, pos - fragIt.position());-
1291 const int len = qMin(int(frag->size_array[0] - offsetInFragment), end - pos);-
1292-
1293 text += QString(docText.constData() + frag->stringPosition + offsetInFragment, len);-
1294 pos += len;-
1295 }
never executed: end of block
0
1296}
never executed: end of block
0
1297QString QTextCursor::selectedText() const-
1298{-
1299 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
|| d->position == d->anchor
d->position == d->anchorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1300 return
never executed: return QString();
QString();
never executed: return QString();
0
1301-
1302 const QString docText = d->priv->buffer();-
1303 QString text;-
1304-
1305 QTextTable *table = d->complexSelectionTable();-
1306 if (table
tableDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1307 int row_start, col_start, num_rows, num_cols;-
1308 selectedTableCells(&row_start, &num_rows, &col_start, &num_cols);-
1309-
1310 ((!(row_start != -1)) ? qt_assert("row_start != -1",__FILE__,1723) : qt_noop());-
1311 for (int r = row_start; r < row_start + num_rows
r < row_start + num_rowsDescription
TRUEnever evaluated
FALSEnever evaluated
; ++r) {
0
1312 for (int c = col_start; c < col_start + num_cols
c < col_start + num_colsDescription
TRUEnever evaluated
FALSEnever evaluated
; ++c) {
0
1313 QTextTableCell cell = table->cellAt(r, c);-
1314 int rspan = cell.rowSpan();-
1315 int cspan = cell.columnSpan();-
1316 if (rspan != 1
rspan != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1317 int cr = cell.row();-
1318 if (cr != r
cr != rDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1319 continue;
never executed: continue;
0
1320 }
never executed: end of block
0
1321 if (cspan != 1
cspan != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1322 int cc = cell.column();-
1323 if (cc != c
cc != cDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1324 continue;
never executed: continue;
0
1325 }
never executed: end of block
0
1326-
1327 getText(text, d->priv, docText, cell.firstPosition(), cell.lastPosition());-
1328 }
never executed: end of block
0
1329 }
never executed: end of block
0
1330 }
never executed: end of block
else {
0
1331 getText(text, d->priv, docText, selectionStart(), selectionEnd());-
1332 }
never executed: end of block
0
1333-
1334 return
never executed: return text;
text;
never executed: return text;
0
1335}-
1336QTextDocumentFragment QTextCursor::selection() const-
1337{-
1338 return
never executed: return QTextDocumentFragment(*this);
QTextDocumentFragment(*this);
never executed: return QTextDocumentFragment(*this);
0
1339}-
1340-
1341-
1342-
1343-
1344QTextBlock QTextCursor::block() const-
1345{-
1346 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1347 return
never executed: return QTextBlock();
QTextBlock();
never executed: return QTextBlock();
0
1348 return
never executed: return d->block();
d->block();
never executed: return d->block();
0
1349}-
1350-
1351-
1352-
1353-
1354-
1355-
1356QTextBlockFormat QTextCursor::blockFormat() const-
1357{-
1358 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1359 return
never executed: return QTextBlockFormat();
QTextBlockFormat();
never executed: return QTextBlockFormat();
0
1360-
1361 return
never executed: return d->block().blockFormat();
d->block().blockFormat();
never executed: return d->block().blockFormat();
0
1362}-
1363-
1364-
1365-
1366-
1367-
1368-
1369-
1370void QTextCursor::setBlockFormat(const QTextBlockFormat &format)-
1371{-
1372 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1373 return;
never executed: return;
0
1374-
1375 d->setBlockFormat(format, QTextDocumentPrivate::SetFormat);-
1376}
never executed: end of block
0
1377void QTextCursor::mergeBlockFormat(const QTextBlockFormat &modifier)-
1378{-
1379 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1380 return;
never executed: return;
0
1381-
1382 d->setBlockFormat(modifier, QTextDocumentPrivate::MergeFormat);-
1383}
never executed: end of block
0
1384QTextCharFormat QTextCursor::blockCharFormat() const-
1385{-
1386 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1387 return
never executed: return QTextCharFormat();
QTextCharFormat();
never executed: return QTextCharFormat();
0
1388-
1389 return
never executed: return d->block().charFormat();
d->block().charFormat();
never executed: return d->block().charFormat();
0
1390}-
1391-
1392-
1393-
1394-
1395-
1396-
1397-
1398void QTextCursor::setBlockCharFormat(const QTextCharFormat &format)-
1399{-
1400 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1401 return;
never executed: return;
0
1402-
1403 d->setBlockCharFormat(format, QTextDocumentPrivate::SetFormatAndPreserveObjectIndices);-
1404}
never executed: end of block
0
1405void QTextCursor::mergeBlockCharFormat(const QTextCharFormat &modifier)-
1406{-
1407 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1408 return;
never executed: return;
0
1409-
1410 d->setBlockCharFormat(modifier, QTextDocumentPrivate::MergeFormat);-
1411}
never executed: end of block
0
1412QTextCharFormat QTextCursor::charFormat() const-
1413{-
1414 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1415 return
never executed: return QTextCharFormat();
QTextCharFormat();
never executed: return QTextCharFormat();
0
1416-
1417 int idx = d->currentCharFormat;-
1418 if (idx == -1
idx == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1419 QTextBlock block = d->block();-
1420-
1421 int pos;-
1422 if (d->position == block.position()
d->position ==...ock.position()Description
TRUEnever evaluated
FALSEnever evaluated
0
1423 && block.length() > 1
block.length() > 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1424 pos = d->position;
never executed: pos = d->position;
0
1425 else-
1426 pos = d->position - 1;
never executed: pos = d->position - 1;
0
1427-
1428 if (pos == -1
pos == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1429 idx = d->priv->blockCharFormatIndex(d->priv->blockMap().firstNode());-
1430 }
never executed: end of block
else {
0
1431 ((!(pos >= 0 && pos < d->priv->length())) ? qt_assert("pos >= 0 && pos < d->priv->length()",__FILE__,1890) : qt_noop());-
1432-
1433 QTextDocumentPrivate::FragmentIterator it = d->priv->find(pos);-
1434 ((!(!it.atEnd())) ? qt_assert("!it.atEnd()",__FILE__,1893) : qt_noop());-
1435 idx = it.value()->format;-
1436 }
never executed: end of block
0
1437 }-
1438-
1439 QTextCharFormat cfmt = d->priv->formatCollection()->charFormat(idx);-
1440 cfmt.clearProperty(QTextFormat::ObjectIndex);-
1441-
1442 ((!(cfmt.isValid())) ? qt_assert("cfmt.isValid()",__FILE__,1901) : qt_noop());-
1443 return
never executed: return cfmt;
cfmt;
never executed: return cfmt;
0
1444}-
1445void QTextCursor::setCharFormat(const QTextCharFormat &format)-
1446{-
1447 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1448 return;
never executed: return;
0
1449 if (d->position == d->anchor
d->position == d->anchorDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1450 d->currentCharFormat = d->priv->formatCollection()->indexForFormat(format);-
1451 return;
never executed: return;
0
1452 }-
1453 d->setCharFormat(format, QTextDocumentPrivate::SetFormatAndPreserveObjectIndices);-
1454}
never executed: end of block
0
1455void QTextCursor::mergeCharFormat(const QTextCharFormat &modifier)-
1456{-
1457 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1458 return;
never executed: return;
0
1459 if (d->position == d->anchor
d->position == d->anchorDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1460 QTextCharFormat format = charFormat();-
1461 format.merge(modifier);-
1462 d->currentCharFormat = d->priv->formatCollection()->indexForFormat(format);-
1463 return;
never executed: return;
0
1464 }-
1465-
1466 d->setCharFormat(modifier, QTextDocumentPrivate::MergeFormat);-
1467}
never executed: end of block
0
1468-
1469-
1470-
1471-
1472-
1473-
1474-
1475bool QTextCursor::atBlockStart() const-
1476{-
1477 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1478 return
never executed: return false;
false;
never executed: return false;
0
1479-
1480 return
never executed: return d->position == d->block().position();
d->position == d->block().position();
never executed: return d->position == d->block().position();
0
1481}-
1482-
1483-
1484-
1485-
1486-
1487-
1488-
1489bool QTextCursor::atBlockEnd() const-
1490{-
1491 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1492 return
never executed: return false;
false;
never executed: return false;
0
1493-
1494 return
never executed: return d->position == d->block().position() + d->block().length() - 1;
d->position == d->block().position() + d->block().length() - 1;
never executed: return d->position == d->block().position() + d->block().length() - 1;
0
1495}-
1496-
1497-
1498-
1499-
1500-
1501-
1502-
1503bool QTextCursor::atStart() const-
1504{-
1505 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1506 return
never executed: return false;
false;
never executed: return false;
0
1507-
1508 return
never executed: return d->position == 0;
d->position == 0;
never executed: return d->position == 0;
0
1509}-
1510bool QTextCursor::atEnd() const-
1511{-
1512 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1513 return
never executed: return false;
false;
never executed: return false;
0
1514-
1515 return
never executed: return d->position == d->priv->length() - 1;
d->position == d->priv->length() - 1;
never executed: return d->position == d->priv->length() - 1;
0
1516}-
1517-
1518-
1519-
1520-
1521-
1522-
1523-
1524void QTextCursor::insertBlock()-
1525{-
1526 insertBlock(blockFormat());-
1527}
never executed: end of block
0
1528void QTextCursor::insertBlock(const QTextBlockFormat &format)-
1529{-
1530 QTextCharFormat charFmt = charFormat();-
1531 charFmt.clearProperty(QTextFormat::ObjectType);-
1532 insertBlock(format, charFmt);-
1533}
never executed: end of block
0
1534void QTextCursor::insertBlock(const QTextBlockFormat &format, const QTextCharFormat &_charFormat)-
1535{-
1536 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1537 return;
never executed: return;
0
1538-
1539 QTextCharFormat charFormat = _charFormat;-
1540 charFormat.clearProperty(QTextFormat::ObjectIndex);-
1541-
1542 d->priv->beginEditBlock();-
1543 d->remove();-
1544 d->insertBlock(format, charFormat);-
1545 d->priv->endEditBlock();-
1546 d->setX();-
1547}
never executed: end of block
0
1548QTextList *QTextCursor::insertList(const QTextListFormat &format)-
1549{-
1550 insertBlock();-
1551 return
never executed: return createList(format);
createList(format);
never executed: return createList(format);
0
1552}-
1553QTextList *QTextCursor::insertList(QTextListFormat::Style style)-
1554{-
1555 insertBlock();-
1556 return
never executed: return createList(style);
createList(style);
never executed: return createList(style);
0
1557}-
1558-
1559-
1560-
1561-
1562-
1563-
1564-
1565QTextList *QTextCursor::createList(const QTextListFormat &format)-
1566{-
1567 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1568 return
never executed: return 0;
0;
never executed: return 0;
0
1569-
1570 QTextList *list = static_cast<QTextList *>(d->priv->createObject(format));-
1571 QTextBlockFormat modifier;-
1572 modifier.setObjectIndex(list->objectIndex());-
1573 mergeBlockFormat(modifier);-
1574 return
never executed: return list;
list;
never executed: return list;
0
1575}-
1576QTextList *QTextCursor::createList(QTextListFormat::Style style)-
1577{-
1578 QTextListFormat fmt;-
1579 fmt.setStyle(style);-
1580 return
never executed: return createList(fmt);
createList(fmt);
never executed: return createList(fmt);
0
1581}-
1582-
1583-
1584-
1585-
1586-
1587-
1588-
1589QTextList *QTextCursor::currentList() const-
1590{-
1591 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1592 return
never executed: return 0;
0;
never executed: return 0;
0
1593-
1594 QTextBlockFormat b = blockFormat();-
1595 QTextObject *o = d->priv->objectForFormat(b);-
1596 return
never executed: return qobject_cast<QTextList *>(o);
qobject_cast<QTextList *>(o);
never executed: return qobject_cast<QTextList *>(o);
0
1597}-
1598QTextTable *QTextCursor::insertTable(int rows, int cols)-
1599{-
1600 return
never executed: return insertTable(rows, cols, QTextTableFormat());
insertTable(rows, cols, QTextTableFormat());
never executed: return insertTable(rows, cols, QTextTableFormat());
0
1601}-
1602QTextTable *QTextCursor::insertTable(int rows, int cols, const QTextTableFormat &format)-
1603{-
1604 if(!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
|| rows == 0
rows == 0Description
TRUEnever evaluated
FALSEnever evaluated
|| cols == 0
cols == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1605 return
never executed: return 0;
0;
never executed: return 0;
0
1606-
1607 int pos = d->position;-
1608 QTextTable *t = QTextTablePrivate::createTable(d->priv, d->position, rows, cols, format);-
1609 d->setPosition(pos+1);-
1610-
1611 d->anchor = d->position;-
1612 d->adjusted_anchor = d->anchor;-
1613 return
never executed: return t;
t;
never executed: return t;
0
1614}-
1615-
1616-
1617-
1618-
1619-
1620-
1621-
1622QTextTable *QTextCursor::currentTable() const-
1623{-
1624 if(!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1625 return
never executed: return 0;
0;
never executed: return 0;
0
1626-
1627 QTextFrame *frame = d->priv->frameAt(d->position);-
1628 while (frame
frameDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1629 QTextTable *table = qobject_cast<QTextTable *>(frame);-
1630 if (table
tableDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1631 return
never executed: return table;
table;
never executed: return table;
0
1632 frame = frame->parentFrame();-
1633 }
never executed: end of block
0
1634 return
never executed: return 0;
0;
never executed: return 0;
0
1635}-
1636QTextFrame *QTextCursor::insertFrame(const QTextFrameFormat &format)-
1637{-
1638 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1639 return
never executed: return 0;
0;
never executed: return 0;
0
1640-
1641 return
never executed: return d->priv->insertFrame(selectionStart(), selectionEnd(), format);
d->priv->insertFrame(selectionStart(), selectionEnd(), format);
never executed: return d->priv->insertFrame(selectionStart(), selectionEnd(), format);
0
1642}-
1643-
1644-
1645-
1646-
1647-
1648-
1649QTextFrame *QTextCursor::currentFrame() const-
1650{-
1651 if(!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1652 return
never executed: return 0;
0;
never executed: return 0;
0
1653-
1654 return
never executed: return d->priv->frameAt(d->position);
d->priv->frameAt(d->position);
never executed: return d->priv->frameAt(d->position);
0
1655}-
1656-
1657-
1658-
1659-
1660-
1661void QTextCursor::insertFragment(const QTextDocumentFragment &fragment)-
1662{-
1663 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
|| fragment.isEmpty()
fragment.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1664 return;
never executed: return;
0
1665-
1666 d->priv->beginEditBlock();-
1667 d->remove();-
1668 fragment.d->insert(*this);-
1669 d->priv->endEditBlock();-
1670-
1671 if (fragment.d
fragment.dDescription
TRUEnever evaluated
FALSEnever evaluated
&& fragment.d->doc
fragment.d->docDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1672 d->priv->mergeCachedResources(fragment.d->doc->docHandle());
never executed: d->priv->mergeCachedResources(fragment.d->doc->docHandle());
0
1673}
never executed: end of block
0
1674void QTextCursor::insertHtml(const QString &html)-
1675{-
1676 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1677 return;
never executed: return;
0
1678 QTextDocumentFragment fragment = QTextDocumentFragment::fromHtml(html, d->priv->document());-
1679 insertFragment(fragment);-
1680}
never executed: end of block
0
1681void QTextCursor::insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment)-
1682{-
1683 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1684 return;
never executed: return;
0
1685-
1686 QTextFrameFormat ffmt;-
1687 ffmt.setPosition(alignment);-
1688 QTextObject *obj = d->priv->createObject(ffmt);-
1689-
1690 QTextImageFormat fmt = format;-
1691 fmt.setObjectIndex(obj->objectIndex());-
1692-
1693 d->priv->beginEditBlock();-
1694 d->remove();-
1695 const int idx = d->priv->formatCollection()->indexForFormat(fmt);-
1696 d->priv->insert(d->position, QString(QChar(QChar::ObjectReplacementCharacter)), idx);-
1697 d->priv->endEditBlock();-
1698}
never executed: end of block
0
1699-
1700-
1701-
1702-
1703void QTextCursor::insertImage(const QTextImageFormat &format)-
1704{-
1705 insertText(QString(QChar::ObjectReplacementCharacter), format);-
1706}
never executed: end of block
0
1707void QTextCursor::insertImage(const QString &name)-
1708{-
1709 QTextImageFormat format;-
1710 format.setName(name);-
1711 insertImage(format);-
1712}
never executed: end of block
0
1713void QTextCursor::insertImage(const QImage &image, const QString &name)-
1714{-
1715 if (image.isNull()
image.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1716 QMessageLogger(__FILE__, 2329, __PRETTY_FUNCTION__).warning("QTextCursor::insertImage: attempt to add an invalid image");-
1717 return;
never executed: return;
0
1718 }-
1719 QString imageName = name;-
1720 if (name.isEmpty()
name.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1721 imageName = QString::number(image.cacheKey());
never executed: imageName = QString::number(image.cacheKey());
0
1722 d->priv->document()->addResource(QTextDocument::ImageResource, QUrl(imageName), image);-
1723 QTextImageFormat format;-
1724 format.setName(imageName);-
1725 insertImage(format);-
1726}
never executed: end of block
0
1727-
1728-
1729-
1730-
1731-
1732-
1733-
1734bool QTextCursor::operator!=(const QTextCursor &rhs) const-
1735{-
1736 return
never executed: return !operator==(rhs);
!operator==(rhs);
never executed: return !operator==(rhs);
0
1737}-
1738-
1739-
1740-
1741-
1742-
1743-
1744-
1745bool QTextCursor::operator<(const QTextCursor &rhs) const-
1746{-
1747 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1748 return
never executed: return !!rhs.d;
!!rhs.d;
never executed: return !!rhs.d;
0
1749-
1750 if (!rhs.d
!rhs.dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1751 return
never executed: return false;
false;
never executed: return false;
0
1752-
1753 ((!(d->priv == rhs.d->priv)) ? qt_assert_x("QTextCursor::operator<", "cannot compare cursors attached to different documents",__FILE__,2366) : qt_noop());-
1754-
1755 return
never executed: return d->position < rhs.d->position;
d->position < rhs.d->position;
never executed: return d->position < rhs.d->position;
0
1756}-
1757bool QTextCursor::operator<=(const QTextCursor &rhs) const-
1758{-
1759 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1760 return
never executed: return true;
true;
never executed: return true;
0
1761-
1762 if (!rhs.d
!rhs.dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1763 return
never executed: return false;
false;
never executed: return false;
0
1764-
1765 ((!(d->priv == rhs.d->priv)) ? qt_assert_x("QTextCursor::operator<=", "cannot compare cursors attached to different documents",__FILE__,2386) : qt_noop());-
1766-
1767 return
never executed: return d->position <= rhs.d->position;
d->position <= rhs.d->position;
never executed: return d->position <= rhs.d->position;
0
1768}-
1769-
1770-
1771-
1772-
1773-
1774-
1775-
1776bool QTextCursor::operator==(const QTextCursor &rhs) const-
1777{-
1778 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1779 return
never executed: return !rhs.d;
!rhs.d;
never executed: return !rhs.d;
0
1780-
1781 if (!rhs.d
!rhs.dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1782 return
never executed: return false;
false;
never executed: return false;
0
1783-
1784 return
never executed: return d->position == rhs.d->position && d->priv == rhs.d->priv;
d->position == rhs.d->position && d->priv == rhs.d->priv;
never executed: return d->position == rhs.d->position && d->priv == rhs.d->priv;
0
1785}-
1786bool QTextCursor::operator>=(const QTextCursor &rhs) const-
1787{-
1788 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1789 return
never executed: return false;
false;
never executed: return false;
0
1790-
1791 if (!rhs.d
!rhs.dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1792 return
never executed: return true;
true;
never executed: return true;
0
1793-
1794 ((!(d->priv == rhs.d->priv)) ? qt_assert_x("QTextCursor::operator>=", "cannot compare cursors attached to different documents",__FILE__,2423) : qt_noop());-
1795-
1796 return
never executed: return d->position >= rhs.d->position;
d->position >= rhs.d->position;
never executed: return d->position >= rhs.d->position;
0
1797}-
1798-
1799-
1800-
1801-
1802-
1803-
1804-
1805bool QTextCursor::operator>(const QTextCursor &rhs) const-
1806{-
1807 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1808 return
never executed: return false;
false;
never executed: return false;
0
1809-
1810 if (!rhs.d
!rhs.dDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1811 return
never executed: return true;
true;
never executed: return true;
0
1812-
1813 ((!(d->priv == rhs.d->priv)) ? qt_assert_x("QTextCursor::operator>", "cannot compare cursors attached to different documents",__FILE__,2442) : qt_noop());-
1814-
1815 return
never executed: return d->position > rhs.d->position;
d->position > rhs.d->position;
never executed: return d->position > rhs.d->position;
0
1816}-
1817void QTextCursor::beginEditBlock()-
1818{-
1819 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1820 return;
never executed: return;
0
1821-
1822 if (d->priv->editBlock == 0
d->priv->editBlock == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1823 d->priv->editBlockCursorPosition = d->position;
never executed: d->priv->editBlockCursorPosition = d->position;
0
1824-
1825 d->priv->beginEditBlock();-
1826}
never executed: end of block
0
1827void QTextCursor::joinPreviousEditBlock()-
1828{-
1829 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1830 return;
never executed: return;
0
1831-
1832 d->priv->joinPreviousEditBlock();-
1833}
never executed: end of block
0
1834void QTextCursor::endEditBlock()-
1835{-
1836 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1837 return;
never executed: return;
0
1838-
1839 d->priv->endEditBlock();-
1840}
never executed: end of block
0
1841bool QTextCursor::isCopyOf(const QTextCursor &other) const-
1842{-
1843 return
never executed: return d == other.d;
d == other.d;
never executed: return d == other.d;
0
1844}-
1845int QTextCursor::blockNumber() const-
1846{-
1847 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1848 return
never executed: return 0;
0;
never executed: return 0;
0
1849-
1850 return
never executed: return d->block().blockNumber();
d->block().blockNumber();
never executed: return d->block().blockNumber();
0
1851}-
1852int QTextCursor::columnNumber() const-
1853{-
1854 if (!d
!dDescription
TRUEnever evaluated
FALSEnever evaluated
|| !d->priv
!d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1855 return
never executed: return 0;
0;
never executed: return 0;
0
1856-
1857 QTextBlock block = d->block();-
1858 if (!block.isValid()
!block.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1859 return
never executed: return 0;
0;
never executed: return 0;
0
1860-
1861 const QTextLayout *layout = d->blockLayout(block);-
1862-
1863 const int relativePos = d->position - block.position();-
1864-
1865 if (layout->lineCount() == 0
layout->lineCount() == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1866 return
never executed: return relativePos;
relativePos;
never executed: return relativePos;
0
1867-
1868 QTextLine line = layout->lineForTextPosition(relativePos);-
1869 if (!line.isValid()
!line.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1870 return
never executed: return 0;
0;
never executed: return 0;
0
1871 return
never executed: return relativePos - line.textStart();
relativePos - line.textStart();
never executed: return relativePos - line.textStart();
0
1872}-
1873-
1874-
1875-
1876-
1877-
1878QTextDocument *QTextCursor::document() const-
1879{-
1880 if (d->priv
d->privDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1881 return
never executed: return d->priv->document();
d->priv->document();
never executed: return d->priv->document();
0
1882 return
never executed: return 0;
0;
never executed: return 0;
0
1883}-
1884-
1885-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9