#include "Bidi.h"
#include "Buffer.h"
-#include "LyXFont.h"
+#include "BufferView.h"
+#include "Font.h"
#include "Row.h"
#include "LyXRC.h"
#include "Paragraph.h"
return;
}
- if (par.ownerCode() == Inset::ERT_CODE) {
+ if (par.ownerCode() == Inset::ERT_CODE || par.ownerCode() == Inset::LISTINGS_CODE) {
start_ = -1;
return;
}
!par.isLineSeparator(lpos + 1) &&
!par.isNewline(lpos + 1))
? lpos + 1 : lpos;
- LyXFont font = par.getFontSettings(bufparams, pos);
+ Font font = par.getFontSettings(bufparams, pos);
if (pos != lpos && 0 < lpos && rtl0 && font.isRightToLeft() &&
- font.number() == LyXFont::ON &&
+ font.number() == Font::ON &&
par.getFontSettings(bufparams, lpos - 1).number()
- == LyXFont::ON) {
+ == Font::ON) {
font = par.getFontSettings(bufparams, lpos);
is_space = false;
}
bool Bidi::isBoundary(Buffer const & buf, Paragraph const & par,
- pos_type pos, LyXFont const & font) const
+ pos_type pos, Font const & font) const
{
if (!lyxrc.rtl_support)
return false; // This is just for speedup
}
+bool reverseDirectionNeeded(Cursor const & cur)
+{
+ /*
+ * We determine the directions based on the direction of the
+ * bottom() --- i.e., outermost --- paragraph, because that is
+ * the only way to achieve consistency of the arrow's movements
+ * within a paragraph, and thus avoid situations in which the
+ * cursor gets stuck.
+ */
+ return cur.bottom().paragraph().isRightToLeftPar(
+ cur.bv().buffer()->params());
+}
+
+
+bool isWithinRtlParagraph(Cursor const & cur)
+{
+ return cur.innerParagraph().isRightToLeftPar(
+ cur.bv().buffer()->params());
+}
+
} // namespace lyx