Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Utilities
Kate
Commits
5888f4b7
Commit
5888f4b7
authored
Apr 16, 2013
by
Dominik Haumann
Browse files
make sure cursor stays visible/valid when text is folded
FIXED-IN: 4.11
BUG: 311866
CCBUG: 200858
parent
7ba51160
Changes
3
Hide whitespace changes
Inline
Side-by-side
part/buffer/katetextfolding.cpp
View file @
5888f4b7
...
...
@@ -156,6 +156,15 @@ qint64 TextFolding::newFoldingRange (const KTextEditor::Range &range, FoldingRan
return
newRange
->
id
;
}
KTextEditor
::
Range
TextFolding
::
foldingRange
(
qint64
id
)
const
{
FoldingRange
*
range
=
m_idToFoldingRange
.
value
(
id
);
if
(
!
range
)
return
KTextEditor
::
Range
::
invalid
();
return
KTextEditor
::
Range
(
range
->
start
->
toCursor
(),
range
->
end
->
toCursor
());
}
bool
TextFolding
::
foldRange
(
qint64
id
)
{
/**
...
...
part/buffer/katetextfolding.h
View file @
5888f4b7
...
...
@@ -78,7 +78,17 @@ class KATEPART_TESTS_EXPORT TextFolding : public QObject {
* the ids are stable for one Kate::TextFolding, e.g. you can rely in unit tests that you get 0,1,.... for successfully created ranges!
*/
qint64
newFoldingRange
(
const
KTextEditor
::
Range
&
range
,
FoldingRangeFlags
flags
=
FoldingRangeFlags
());
/**
* Returns the folding range associated with @p id.
* If @p id is not a valid id, the returned range matches KTextEditor::Range::invalid().
* @note This works for either persistend ranges or folded ranges.
* Note, that the highlighting does not add folds unless text is folded.
*
* @return the folding range for @p id
*/
KTextEditor
::
Range
foldingRange
(
qint64
id
)
const
;
/**
* Fold the given range.
* @param id id of the range to fold
...
...
part/view/kateviewinternal.cpp
View file @
5888f4b7
...
...
@@ -668,13 +668,15 @@ void KateViewInternal::slotRegionVisibilityChanged()
if
(
startPos
()
>
max
)
scrollPos
(
max
);
#if 0 // DON'T MESS WITH THE CURSORS https://bugs.kde.org/show_bug.cgi?id=295632 and foldedselection_test
m_preserveX = true;
KTextEditor::Cursor newPos = toRealCursor(toVirtualCursor(m_cursor));
KateTextLayout newLine = cache()->textLayout(newPos);
newPos = renderer()->xToCursor(newLine, m_preservedX, !m_view->wrapCursor());
updateCursor(newPos, true);
#endif
// if text was folded: make sure the cursor is on a visible line
qint64
foldedRangeId
=
-
1
;
if
(
!
m_view
->
textFolding
().
isLineVisible
(
m_cursor
.
line
(),
&
foldedRangeId
))
{
KTextEditor
::
Range
foldingRange
=
m_view
->
textFolding
().
foldingRange
(
foldedRangeId
);
Q_ASSERT
(
foldingRange
.
start
().
isValid
());
// set cursor to start of folding region
updateCursor
(
foldingRange
.
start
(),
true
);
}
updateView
();
update
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment