]> git.lyx.org Git - lyx.git/commitdiff
DocBook: fix closing formatting after deleted text.
authorThibaut Cuvelier <tcuvelier@lyx.org>
Sat, 7 Oct 2023 23:39:45 +0000 (01:39 +0200)
committerScott Kostyshak <skostysh@lyx.org>
Tue, 10 Oct 2023 13:57:17 +0000 (09:57 -0400)
Previously, when closing font tags, only the previous character's font was used. However, if that character is deleted, it had no change of having the right font tags opened/closed. Hence, look further to compare the font of the current character to output with the font of the previously output character.

autotests/export/docbook/tracking_formatting.lyx [new file with mode: 0644]
autotests/export/docbook/tracking_formatting.xml [new file with mode: 0644]
src/Paragraph.cpp

diff --git a/autotests/export/docbook/tracking_formatting.lyx b/autotests/export/docbook/tracking_formatting.lyx
new file mode 100644 (file)
index 0000000..44802ff
--- /dev/null
@@ -0,0 +1,111 @@
+#LyX 2.4 created this file. For more info see https://www.lyx.org/
+\lyxformat 620
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass article
+\use_default_options true
+\maintain_unincluded_children no
+\language american
+\language_package default
+\inputencoding utf8
+\fontencoding auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_roman_osf false
+\font_sans_osf false
+\font_typewriter_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\float_placement class
+\float_alignment class
+\paperfontsize default
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 1
+\use_formatted_ref 0
+\use_minted 0
+\use_lineno 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style english
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tablestyle default
+\tracking_changes true
+\output_changes false
+\change_bars false
+\postpone_fragile_content true
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\docbook_table_output 0
+\docbook_mathml_prefix 1
+\author 1075283030 "Thibaut"
+\end_header
+
+\begin_body
+
+\begin_layout Title
+Test:
+ deleted text just after the end of formatted text
+\end_layout
+
+\begin_layout Standard
+
+\lang spanish
+incluye el archivo 
+\family typewriter
+config.log
+\change_deleted 1075283030 1696721001
+
+\family default
+,
+
+\change_unchanged
+ y menciona el compilador que usas.
+\end_layout
+
+\end_body
+\end_document
diff --git a/autotests/export/docbook/tracking_formatting.xml b/autotests/export/docbook/tracking_formatting.xml
new file mode 100644 (file)
index 0000000..fb245c1
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This DocBook file was created by LyX 2.4.0~RC1.devel
+  See https://www.lyx.org/ for more information -->
+<article xml:lang="en-US" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:xi="http://www.w3.org/2001/XInclude" version="5.2">
+<title>Test: deleted text just after the end of formatted text</title>
+<para>incluye el archivo <code>config.log</code> y menciona el compilador que usas.</para>
+</article>
\ No newline at end of file
index 3718bd4a98362d377ba4910417df46dbba51a93b..333aeb8862cbda0c70e4d2b0832d5dcfcba89132 100644 (file)
@@ -3721,10 +3721,16 @@ std::tuple<std::vector<docstring>, std::vector<docstring>, std::vector<docstring
                        }
                }
 
-               // Determine which tags should be opened or closed regarding fonts.
+               // Determine which tags should be opened or closed regarding fonts. Consider the last output character (i.e. not
+               // deleted).
+               int last_output_char = (i == 0) ? 0 : i - 1;
+               if (i > 0) {
+                       while (last_output_char > 0 && isDeleted(last_output_char))
+                               --last_output_char;
+               }
                FontInfo const font_old = (i == 0 ?
                                (style.labeltype == LABEL_MANUAL ? style.labelfont : style.font) :
-                               getFont(buf.masterBuffer()->params(), i - 1, outerfont).fontInfo());
+                               getFont(buf.masterBuffer()->params(), last_output_char, outerfont).fontInfo());
                Font const font = getFont(buf.masterBuffer()->params(), i, outerfont);
         tie(tagsToOpen, tagsToClose) = computeDocBookFontSwitch(
                                font_old, font, buf.masterBuffer()->params().fonts_default_family, fs);