From: André Pönitz Date: Sat, 14 Aug 2004 21:03:55 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: 1.6.10~15066 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=11c69712d36a6e8c0d2234244bc5419a34d3ce70;p=features.git *** empty log message *** git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8931 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/dociterator.C b/src/dociterator.C index e8f4c0012b..2df577b5f4 100644 --- a/src/dociterator.C +++ b/src/dociterator.C @@ -410,6 +410,17 @@ void DocIterator::backwardPos() } +bool DocIterator::hasPart(DocIterator const & it) const +{ + // it can't be a part if it is larger + if (it.size() > size()) + return false; + + // as inset adresses are the 'last' level + return &it.back().inset() == &operator[](it.size() - 1).inset(); +} + + std::ostream & operator<<(std::ostream & os, DocIterator const & dit) { for (size_t i = 0, n = dit.size(); i != n; ++i) diff --git a/src/dociterator.h b/src/dociterator.h index d00add62d4..bb1f12832d 100644 --- a/src/dociterator.h +++ b/src/dociterator.h @@ -185,6 +185,9 @@ public: /// move backward one inset void backwardInset(); + /// are we some 'extension' (i.e. deeper nested) of the given iterator + bool hasPart(DocIterator const & it) const; + /// output friend std::ostream & operator<<(std::ostream & os, DocIterator const & cur); diff --git a/src/mathed/math_nestinset.C b/src/mathed/math_nestinset.C index 3b82d0e65c..f2986ee752 100644 --- a/src/mathed/math_nestinset.C +++ b/src/mathed/math_nestinset.C @@ -927,7 +927,7 @@ void MathNestInset::lfunMouseMotion(LCursor & cur, FuncRequest & cmd) if (cmd.button() == mouse_button::button1) { LCursor & bvcur = cur.bv().cursor(); if (abs(cmd.x - first_x) + abs(cmd.y - first_y) > 4 - && cur.size() <= bvcur.anchor_.size()) { + && bvcur.anchor_.hasPart(cur)) { first_x = cmd.x; first_y = cmd.y; diff --git a/src/text3.C b/src/text3.C index 3900a13a11..0b230da156 100644 --- a/src/text3.C +++ b/src/text3.C @@ -1129,9 +1129,9 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) // ignore motions deeper nested than the real anchor LCursor & bvcur = cur.bv().cursor(); - if (bvcur.anchor_.size() < cur.size()) + if (!bvcur.anchor_.hasPart(cur)) break; - + CursorSlice old = cur.top(); setCursorFromCoordinates(cur, cmd.x, cmd.y);