X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBidi.C;h=e29b62087d0783aea1a4d9a7fa6b5f3f44f7eb47;hb=fd2124c83dfcfeaf33b64d1d33c8ceb8d9f5f9b9;hp=28e729ce0d03bf77b5ce5c78d79f4f5efe92680d;hpb=a370d413aff193240e724b2e95c888cd5e1e2db1;p=lyx.git diff --git a/src/Bidi.C b/src/Bidi.C index 28e729ce0d..e29b62087d 100644 --- a/src/Bidi.C +++ b/src/Bidi.C @@ -8,10 +8,10 @@ * Full author contact details are available in file CREDITS. */ +#include #include "Bidi.h" #include "buffer.h" -#include "insets/updatableinset.h" #include "lyxfont.h" #include "lyxrow.h" #include "lyxrow_funcs.h" @@ -52,7 +52,7 @@ bool Bidi::same_direction() const void Bidi::computeTables(Paragraph const & par, - Buffer const & buf, Row & row) + Buffer const & buf, Row const & row) { same_direction_ = true; if (!lyxrc.rtl_support) { @@ -60,15 +60,13 @@ void Bidi::computeTables(Paragraph const & par, return; } - InsetOld * inset = par.inInset(); - if (inset && inset->owner() && - inset->owner()->lyxCode() == InsetOld::ERT_CODE) { + if (par.ownerCode() == InsetBase::ERT_CODE) { start_ = -1; return; } start_ = row.pos(); - end_ = lastPos(par, row); + end_ = row.endpos() - 1; if (start_ > end_) { start_ = -1; @@ -94,7 +92,7 @@ void Bidi::computeTables(Paragraph const & par, int lev = 0; bool rtl = false; bool rtl0 = false; - pos_type const body_pos = par.beginningOfBody(); + pos_type const body_pos = par.beginOfBody(); for (pos_type lpos = start_; lpos <= end_; ++lpos) { bool is_space = par.isLineSeparator(lpos); @@ -140,7 +138,7 @@ void Bidi::computeTables(Paragraph const & par, log2vis_list_[lpos - start_] = rtl ? 1 : -1; } else if (lev < new_level) { log2vis_list_[lpos - start_] = rtl ? -1 : 1; - if (new_level > rtl_par) + if (new_level > 0 && !rtl_par) same_direction_ = false; } else log2vis_list_[lpos - start_] = new_rtl ? -1 : 1;