commit 1a1adbc821e7386d5bd2dc58089c6a99749f3d54
Author: Juergen Spitzmueller <[email protected]>
Date:   Tue Nov 19 13:37:44 2019 +0100

    Handle paragraph direction switch in captions (with polyglossia/bidi)
---
 src/insets/Inset.h      |    4 ++++
 src/insets/InsetFloat.h |    2 ++
 src/output_latex.cpp    |    6 ++++--
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/insets/Inset.h b/src/insets/Inset.h
index f458121..3f7178f 100644
--- a/src/insets/Inset.h
+++ b/src/insets/Inset.h
@@ -423,6 +423,10 @@ public:
        /// if this inset has paragraphs should they be forced to use a
        /// local font language switch?
        virtual bool forceLocalFontSwitch() const { return false; }
+       /// if this inset has paragraphs should they be forced to use a
+       /// font language switch that switches paragraph directions
+       /// (relevant with polyglossia only)?
+       virtual bool forceParDirectionSwitch() const { return false; }
        /// Does the inset force a specific encoding?
        virtual Encoding const * forcedEncoding(Encoding const *, Encoding 
const *) const
        { return 0; }
diff --git a/src/insets/InsetFloat.h b/src/insets/InsetFloat.h
index 224017e..734ba51 100644
--- a/src/insets/InsetFloat.h
+++ b/src/insets/InsetFloat.h
@@ -76,6 +76,8 @@ public:
        bool allowsCaptionVariation(std::string const &) const;
        ///
        LyXAlignment contentAlignment() const;
+       ///
+       bool forceParDirectionSwitch() const { return true; }
 private:
        ///
        void setCaptionType(std::string const & type);
diff --git a/src/output_latex.cpp b/src/output_latex.cpp
index 4124d2d..a349cbd 100644
--- a/src/output_latex.cpp
+++ b/src/output_latex.cpp
@@ -913,10 +913,12 @@ void TeXOnePar(Buffer const & buf,
                && runparams.local_font != nullptr
                && outer_language->rightToLeft()
                && !par_language->rightToLeft();
-       bool const localswitch = runparams_in.for_search
+       bool const localswitch =
+                       (runparams_in.for_search
                        || text.inset().forceLocalFontSwitch()
                        || (using_begin_end && text.inset().forcePlainLayout())
-                       || in_polyglossia_rtl_env;
+                       || in_polyglossia_rtl_env)
+                       && !text.inset().forceParDirectionSwitch();
        if (localswitch) {
                lang_begin_command = use_polyglossia ?
                            "\\text$$lang$$opts{" : 
lyxrc.language_command_local;
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to