mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-26 18:07:18 +00:00
Fix bad cursor positioning when entering an inset
The test added at 359aef92 was incorrect. Actually, Inset::editXY returns the inset when it is edited and also when it is not, which can be confusing. So if we are unlucky and the slices positions in the text area and in the inner inset match, the code below triggers and many bad things can happen. editXY() should probably have a documented way to indicate whether the cursor has entered the inset, although the test used right now is probably OK. The inset value is useful mainly for context menus or tasks that need to know which inset the (x, y) coordinates point to. Note finally that the documentation of TextMetrics::editXY is incorrect concerning the return value. It will return a non-null value if the cursor is on a not editable inset. Fixes #10691.
This commit is contained in:
parent
6fc72a1a1f
commit
7ca7873112
@ -1379,7 +1379,9 @@ Inset * TextMetrics::editXY(Cursor & cur, int x, int y,
|
||||
|
||||
// Try to descend recursively inside the inset.
|
||||
Inset * edited = inset->editXY(cur, x, y);
|
||||
if (edited == inset && cur.pos() == it->pos) {
|
||||
// FIXME: it is not clear that the test on position is needed
|
||||
// Remove it if/when semantics of editXY is clarified
|
||||
if (cur.text() == text_ && cur.pos() == it->pos) {
|
||||
// non-editable inset, set cursor after the inset if x is
|
||||
// nearer to that position (bug 9628)
|
||||
bool bound = false; // is modified by getPosNearX
|
||||
|
Loading…
x
Reference in New Issue
Block a user