diff --git a/ChangeLog b/ChangeLog index d60a82a6bd..3e35fef347 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2000-04-27 Dekel Tsur + + * src/lyx_cb.C (TocUpdateCB): Reverse strings for Hebrew paragraphs + + * src/spellchecker.C (RunSpellChecker): Reverse Hebrew strings in + the spellchecker popup. + + * lib/lyxrc.example: Removed the \number_inset section + 2000-04-28 Jean-Marc Lasgouttes * src/insets/figinset.C (various): Use IsFileReadable() to make diff --git a/lib/lyxrc.example b/lib/lyxrc.example index 8541debdeb..681d960999 100644 --- a/lib/lyxrc.example +++ b/lib/lyxrc.example @@ -631,13 +631,6 @@ # Arabic). Default is false. #\rtl true -# If number_inset is set to "true", each time a digit key is pressed, -# LyX will automatically open a new number inset. -# If number_inset is set to "rtl", the above behavior will take place -# only when the cursor is on right-to-left text. -# Default is rtl. -#\number_inset true - # The latex command for loading the language package. # Default is \usepackage{babel}. #\language_package "\usepackage{omega}" diff --git a/src/lyx_cb.C b/src/lyx_cb.C index 95718cf716..cefd98ae82 100644 --- a/src/lyx_cb.C +++ b/src/lyx_cb.C @@ -3226,6 +3226,7 @@ extern "C" void TocUpdateCB(FL_OBJECT *, long) line[pos] = ' '; ++pos; + int pos0 = pos; /* now the contents */ LyXParagraph::size_type i = 0; @@ -3237,6 +3238,8 @@ extern "C" void TocUpdateCB(FL_OBJECT *, long) } ++i; } + if (par->isRightToLeftPar()) + reverse(line+pos0,line+pos); line[pos] = '\0'; fl_add_browser_line(fd_form_toc->browser_toc, line); diff --git a/src/spellchecker.C b/src/spellchecker.C index 514c014242..623668c5f4 100644 --- a/src/spellchecker.C +++ b/src/spellchecker.C @@ -37,6 +37,8 @@ #include #endif +#include + #include "LString.h" #include "sp_form.h" #include "spellchecker.h" @@ -643,6 +645,7 @@ bool RunSpellChecker(BufferView * bv) FL_OBJECT * obj; string tmp = (lyxrc.isp_use_alt_lang) ? lyxrc.isp_alt_lang : bv->buffer()->GetLanguage(); + bool rtl = tmp == "hebrew" || tmp == "arabic"; int oldval = 0; /* used for updating slider only when needed */ float newval = 0.0; @@ -704,11 +707,21 @@ bool RunSpellChecker(BufferView * bv) case ISP_MISSED: { bv->selectLastWord(); - fl_set_object_label(fd_form_spell_check->text, word); + if (rtl) { + string tmp = word; + reverse(tmp.begin(),tmp.end()); + fl_set_object_label(fd_form_spell_check->text, tmp.c_str()); + } else + fl_set_object_label(fd_form_spell_check->text, word); fl_set_input(fd_form_spell_check->input, word); fl_clear_browser(fd_form_spell_check->browser); for (i = 0; i < result->count; ++i) { - fl_add_browser_line(fd_form_spell_check->browser, result->misses[i]); + if (rtl) { + string tmp = result->misses[i]; + reverse(tmp.begin(),tmp.end()); + fl_add_browser_line(fd_form_spell_check->browser, tmp.c_str()); + } else + fl_add_browser_line(fd_form_spell_check->browser, result->misses[i]); } int clickline = -1; @@ -741,10 +754,17 @@ bool RunSpellChecker(BufferView * bv) break; } clickline = fl_get_browser(fd_form_spell_check->browser); - fl_set_input(fd_form_spell_check->input, - fl_get_browser_line(fd_form_spell_check->browser, - fl_get_browser(fd_form_spell_check->browser))); - + /// Why not use + /// fl_set_input(fd_form_spell_check->input, result->misses[clickline-1]); ? + if (rtl) { + string tmp = fl_get_browser_line(fd_form_spell_check->browser, + clickline); + reverse(tmp.begin(),tmp.end()); + fl_set_input(fd_form_spell_check->input, tmp.c_str()); + } else + fl_set_input(fd_form_spell_check->input, + fl_get_browser_line(fd_form_spell_check->browser, + clickline)); } if (obj == fd_form_spell_check->stop) { delete result;