]> git.lyx.org Git - features.git/blobdiff - src/insets/InsetSpace.cpp
Regenerate previews after zoom (#11919)
[features.git] / src / insets / InsetSpace.cpp
index 669239b55fc0141aaed337cf1abca8f725499009..3f86eb8c074cf1c1775b6ca50c920d72e3fa85fc 100644 (file)
@@ -33,6 +33,7 @@
 #include "support/lassert.h"
 #include "support/Length.h"
 #include "support/lstrings.h"
+#include "support/qstring_helpers.h"
 
 #include "frontends/Application.h"
 #include "frontends/FontMetrics.h"
@@ -65,77 +66,77 @@ docstring InsetSpace::toolTip(BufferView const &, int, int) const
        docstring message;
        switch (params_.kind) {
        case InsetSpaceParams::NORMAL:
-               message = _("Interword Space");
+               message = _("Normal Space");
                break;
        case InsetSpaceParams::PROTECTED:
-               message = _("Protected Space");
+               message = _("Non-Breaking Normal Space");
                break;
        case InsetSpaceParams::VISIBLE:
-               message = _("Visible Space");
+               message = _("Non-Breaking Visible Normal Space");
                break;
        case InsetSpaceParams::THIN:
-               message = _("Thin Space");
+               message = _("Non-Breaking Thin Space (1/6 em)");
                break;
        case InsetSpaceParams::MEDIUM:
-               message = _("Medium Space");
+               message = _("Non-Breaking Medium Space (2/9 em)");
                break;
        case InsetSpaceParams::THICK:
-               message = _("Thick Space");
+               message = _("Non-Breaking Thick Space (5/18 em)");
                break;
        case InsetSpaceParams::QUAD:
-               message = _("Quad Space");
+               message = _("Quad Space (1 em)");
                break;
        case InsetSpaceParams::QQUAD:
-               message = _("Double Quad Space");
+               message = _("Double Quad Space (2 em)");
                break;
        case InsetSpaceParams::ENSPACE:
-               message = _("Enspace");
+               message = _("Non-Breaking Half Quad Space (1/2 em)");
                break;
        case InsetSpaceParams::ENSKIP:
-               message = _("Enskip");
+               message = _("Half Quad Space (1/2 em)");
                break;
        case InsetSpaceParams::NEGTHIN:
-               message = _("Negative Thin Space");
+               message = _("Non-Breaking Negative Thin Space (-1/6 em)");
                break;
        case InsetSpaceParams::NEGMEDIUM:
-               message = _("Negative Medium Space");
+               message = _("Non-Breaking Negative Medium Space (-2/9 em)");
                break;
        case InsetSpaceParams::NEGTHICK:
-               message = _("Negative Thick Space");
+               message = _("Non-Breaking Negative Thick Space (-5/18 em)");
                break;
        case InsetSpaceParams::HFILL:
                message = _("Horizontal Fill");
                break;
        case InsetSpaceParams::HFILL_PROTECTED:
-               message = _("Protected Horizontal Fill");
+               message = _("Non-Breaking Horizontal Fill");
                break;
        case InsetSpaceParams::DOTFILL:
-               message = _("Horizontal Fill (Dots)");
+               message = _("Non-Breaking Horizontal Fill (Dots)");
                break;
        case InsetSpaceParams::HRULEFILL:
-               message = _("Horizontal Fill (Rule)");
+               message = _("Non-Breaking Horizontal Fill (Rule)");
                break;
        case InsetSpaceParams::LEFTARROWFILL:
-               message = _("Horizontal Fill (Left Arrow)");
+               message = _("Non-Breaking Horizontal Fill (Left Arrow)");
                break;
        case InsetSpaceParams::RIGHTARROWFILL:
-               message = _("Horizontal Fill (Right Arrow)");
+               message = _("Non-Breaking Horizontal Fill (Right Arrow)");
                break;
        case InsetSpaceParams::UPBRACEFILL:
-               message = _("Horizontal Fill (Up Brace)");
+               message = _("Non-Breaking Horizontal Fill (Up Brace)");
                break;
        case InsetSpaceParams::DOWNBRACEFILL:
-               message = _("Horizontal Fill (Down Brace)");
+               message = _("Non-Breaking Horizontal Fill (Down Brace)");
                break;
        case InsetSpaceParams::CUSTOM:
                // FIXME unicode
                message = support::bformat(_("Horizontal Space (%1$s)"),
-                               from_ascii(params_.length.asString()));
+                                          locLengthDocString(from_ascii(params_.length.asString())));
                break;
        case InsetSpaceParams::CUSTOM_PROTECTED:
                // FIXME unicode
-               message = support::bformat(_("Protected Horizontal Space (%1$s)"),
-                               from_ascii(params_.length.asString()));
+               message = support::bformat(_("Non-Breaking Horizontal Space (%1$s)"),
+                                          locLengthDocString(from_ascii(params_.length.asString())));
                break;
        }
        return message;
@@ -579,97 +580,120 @@ void InsetSpace::latex(otexstream & os, OutputParams const & runparams) const
 {
        switch (params_.kind) {
        case InsetSpaceParams::NORMAL:
-               if (runparams.for_search != OutputParams::NoSearch)
+               if (runparams.find_effective())
                        os << "~";
                else
                        os << (runparams.free_spacing ? " " : "\\ ");
                break;
        case InsetSpaceParams::PROTECTED:
-               if (runparams.local_font &&
+               if (runparams.find_effective())
+                       os.put(0xa0);
+               else if (runparams.local_font &&
                    runparams.local_font->language()->lang() == "polutonikogreek")
                        // in babel's polutonikogreek, ~ is active
-                       os << (runparams.free_spacing && (runparams.for_search == OutputParams::NoSearch) ? " " : "\\nobreakspace{}");
+                       os << (runparams.free_spacing ? " " : "\\nobreakspace{}");
                else
-                       os << (runparams.free_spacing && (runparams.for_search == OutputParams::NoSearch) ? ' ' : '~');
+                       os << (runparams.free_spacing ? ' ' : '~');
                break;
        case InsetSpaceParams::VISIBLE:
-               os << (runparams.free_spacing && (runparams.for_search == OutputParams::NoSearch) ? " " : "\\textvisiblespace{}");
+               if (runparams.find_effective())
+                       os.put(0x2423);
+               else
+                       os << (runparams.free_spacing ? " " : "\\textvisiblespace{}");
                break;
        case InsetSpaceParams::THIN:
-               if (runparams.for_search != OutputParams::NoSearch)
-                       os << "\\thinspace{}";
+               if (runparams.find_effective())
+                       os.put(0x2009);
                else
                        os << (runparams.free_spacing ? " " : "\\,");
                break;
        case InsetSpaceParams::MEDIUM:
-               if (runparams.for_search != OutputParams::NoSearch)
-                       os << "\\medspace{}";
+               if (runparams.find_effective())
+                       os.put(0x2005);
                else if (params_.math)
                        os << (runparams.free_spacing ? " " : "\\:");
                else
                        os << (runparams.free_spacing ? " " : "\\medspace{}");
                break;
        case InsetSpaceParams::THICK:
-               if (runparams.for_search != OutputParams::NoSearch)
-                       os << "\\thickspace{}";
+               if (runparams.find_effective())
+                       os.put(0x2004);
                else if (params_.math)
                        os << (runparams.free_spacing ? " " : "\\;");
                else
                        os << (runparams.free_spacing ? " " : "\\thickspace{}");
                break;
        case InsetSpaceParams::QUAD:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\quad{}");
+               if (runparams.find_effective())
+                       os.put(0x2003);
+               else
+                       os << (runparams.free_spacing ? " " : "\\quad{}");
                break;
        case InsetSpaceParams::QQUAD:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\qquad{}");
+               if (runparams.find_effective()) {
+                       os.put(0x2003);
+                       os.put(0x2003);
+               }
+               else
+                       os << (runparams.free_spacing ? " " : "\\qquad{}");
                break;
        case InsetSpaceParams::ENSPACE:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\enspace{}");
+               if (runparams.find_effective())
+                       os.put(0x2002);
+               else
+                       os << (runparams.free_spacing ? " " : "\\enspace{}");
                break;
        case InsetSpaceParams::ENSKIP:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\enskip{}");
+               if (runparams.find_effective())
+                       os.put(0x2002);
+               else
+                       os << (runparams.free_spacing ? " " : "\\enskip{}");
                break;
        case InsetSpaceParams::NEGTHIN:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\negthinspace{}");
+               os << (runparams.free_spacing && runparams.find_effective() ? " " : "\\negthinspace{}");
                break;
        case InsetSpaceParams::NEGMEDIUM:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\negmedspace{}");
+               os << (runparams.free_spacing && runparams.find_effective() ? " " : "\\negmedspace{}");
                break;
        case InsetSpaceParams::NEGTHICK:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\negthickspace{}");
+               os << (runparams.free_spacing && runparams.find_effective() ? " " : "\\negthickspace{}");
                break;
        case InsetSpaceParams::HFILL:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\hfill{}");
+               os << (runparams.free_spacing && runparams.find_effective() ? " " : "\\hfill{}");
                break;
        case InsetSpaceParams::HFILL_PROTECTED:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\hspace*{\\fill}");
+               os << (runparams.free_spacing && runparams.find_effective() ? " " : "\\hspace*{\\fill}");
                break;
        case InsetSpaceParams::DOTFILL:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\dotfill{}");
+               os << (runparams.free_spacing && runparams.find_effective() ? " " : "\\dotfill{}");
                break;
        case InsetSpaceParams::HRULEFILL:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\hrulefill{}");
+               os << (runparams.free_spacing && runparams.find_effective() ? " " : "\\hrulefill{}");
                break;
        case InsetSpaceParams::LEFTARROWFILL:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\leftarrowfill{}");
+               os << (runparams.free_spacing && runparams.find_effective() ? " " : "\\leftarrowfill{}");
                break;
        case InsetSpaceParams::RIGHTARROWFILL:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\rightarrowfill{}");
+               os << (runparams.free_spacing && runparams.find_effective() ? " " : "\\rightarrowfill{}");
                break;
        case InsetSpaceParams::UPBRACEFILL:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\upbracefill{}");
+               os << (runparams.free_spacing && runparams.find_effective() ? " " : "\\upbracefill{}");
                break;
        case InsetSpaceParams::DOWNBRACEFILL:
-               os << (runparams.free_spacing && (runparams.for_search != OutputParams::NoSearch) ? " " : "\\downbracefill{}");
+               os << (runparams.free_spacing && runparams.find_effective() ? " " : "\\downbracefill{}");
                break;
        case InsetSpaceParams::CUSTOM:
-               if (runparams.free_spacing)
+               if (runparams.find_effective())
+                       os.put(0x00a0);
+               else if (runparams.free_spacing)
                        os << " ";
                else
                        os << "\\hspace{" << from_ascii(params_.length.asLatexString()) << "}";
                break;
        case InsetSpaceParams::CUSTOM_PROTECTED:
-               if (runparams.free_spacing)
+               if (runparams.find_effective())
+                       os.put(0x00a0);
+               else if (runparams.free_spacing)
                        os << " ";
                else
                        os << "\\hspace*{" << from_ascii(params_.length.asLatexString()) << "}";