Files
odfstudio/sw/Module_sw.mk
T
Miklos Vajna 69edfcf789 DOCX import: fix assertion failure when redline ends right before a ToC
This was always a problem, but now more visible since commit
8b3c861c46 (tdf#89991 DOCX: import Show
changes from older formats, 2019-06-13), as it now affects more
documents: tracked changes can be hidden by the time the initial layout
is created.

With that aside, the immediate problem is an assertion failure in
InsertCnt_(), because it assumes that an end node for a section has to
have a matching pActualSection, created by start node of the same
section. This will fail in case the start node is hidden, but not the
end node.

The deeper problem is that redlines are not supposed to cross section
boundaries: if e.g. multiple cells are selected in a table and the user
deletes while tracking changes, then the UI creates multiple redlines
instead.  The problem here is similar: a delete redline ends right
before the section start, so when SwNodes::InsertTextSection() inserts a
section node, the end of that redline is automatically moved to the
start of the section content (its index increases, the actual SwNode
doesn't change).

Fix the problem by explicitly checking for a redline end at ToX start and
moving it back to the end of last content node. This matches the doc
model produced by the WW8 import.

Change-Id: Ic7b279185a20d2a32abd054d3fc6be530ddde12a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105412
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
2020-11-06 17:58:04 +01:00

187 lines
5.1 KiB
Makefile

# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This file incorporates work covered by the following license notice:
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed
# with this work for additional information regarding copyright
# ownership. The ASF licenses this file to you under the Apache
# License, Version 2.0 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
#
include $(SRCDIR)/sw/ooxmlexport_setup.mk
$(eval $(call gb_Module_Module,sw))
$(eval $(call gb_Module_add_targets,sw,\
CustomTarget_generated \
Library_msword \
Library_sw \
Library_swd \
Library_swui \
UIConfig_sglobal \
UIConfig_sweb \
UIConfig_swform \
UIConfig_swreport \
UIConfig_swriter \
UIConfig_swxform \
))
$(eval $(call gb_Module_add_l10n_targets,sw,\
AllLangMoTarget_sw \
))
ifneq ($(filter SCRIPTING,$(BUILD_TYPE)),)
$(eval $(call gb_Module_add_targets,sw,\
Library_vbaswobj \
))
endif
ifneq ($(OS),iOS)
$(eval $(call gb_Module_add_check_targets,sw,\
Library_swqahelper \
CppunitTest_sw_uibase_unit \
))
$(eval $(call gb_Module_add_slowcheck_targets,sw,\
$(if $(and $(filter $(COM),MSC),$(MERGELIBS)),, \
CppunitTest_sw_uwriter) \
CppunitTest_sw_rtfexport \
CppunitTest_sw_rtfexport2 \
CppunitTest_sw_rtfexport3 \
CppunitTest_sw_rtfexport4 \
CppunitTest_sw_rtfexport5 \
CppunitTest_sw_docbookexport \
CppunitTest_sw_fodfexport \
CppunitTest_sw_htmlexport \
CppunitTest_sw_xhtmlexport \
CppunitTest_sw_htmlimport \
CppunitTest_sw_macros_test \
CppunitTest_sw_ooxmlexport \
CppunitTest_sw_ooxmlexport2 \
CppunitTest_sw_ooxmlexport3 \
CppunitTest_sw_ooxmlexport4 \
CppunitTest_sw_ooxmlexport5 \
CppunitTest_sw_ooxmlexport6 \
CppunitTest_sw_ooxmlexport7 \
CppunitTest_sw_ooxmlexport8 \
CppunitTest_sw_ooxmlexport9 \
CppunitTest_sw_ooxmlexport10 \
CppunitTest_sw_ooxmlexport11 \
CppunitTest_sw_ooxmlexport12 \
CppunitTest_sw_ooxmlexport13 \
CppunitTest_sw_ooxmlexport14 \
CppunitTest_sw_ooxmlexport15 \
CppunitTest_sw_ooxmlexport_template \
CppunitTest_sw_ooxmlfieldexport \
CppunitTest_sw_ooxmllinks \
CppunitTest_sw_ooxmlw14export \
CppunitTest_sw_ooxmlencryption \
CppunitTest_sw_ooxmlimport \
CppunitTest_sw_ooxmlimport2 \
CppunitTest_sw_ww8export \
CppunitTest_sw_ww8export2 \
CppunitTest_sw_ww8export3 \
CppunitTest_sw_ww8import \
CppunitTest_sw_rtfimport \
CppunitTest_sw_odfexport \
CppunitTest_sw_odfimport \
CppunitTest_sw_txtexport \
CppunitTest_sw_txtimport \
$(if $(filter-out MACOSX,$(OS)), \
CppunitTest_sw_uiwriter \
) \
CppunitTest_sw_layoutwriter \
CppunitTest_sw_mailmerge \
CppunitTest_sw_globalfilter \
CppunitTest_sw_accessible_relation_set \
CppunitTest_sw_apiterminate \
CppunitTest_sw_apitests \
CppunitTest_sw_unowriter \
CppunitTest_sw_core_text \
CppunitTest_sw_core_doc \
CppunitTest_sw_core_docnode \
CppunitTest_sw_uibase_shells \
CppunitTest_sw_uibase_dochdl \
CppunitTest_sw_uibase_frmdlg \
CppunitTest_sw_uibase_uno \
CppunitTest_sw_core_accessibilitycheck \
CppunitTest_sw_core_layout \
CppunitTest_sw_core_frmedt \
CppunitTest_sw_core_txtnode \
CppunitTest_sw_core_objectpositioning \
CppunitTest_sw_core_unocore \
CppunitTest_sw_core_crsr \
CppunitTest_sw_core_undo \
CppunitTest_sw_uibase_uiview \
CppunitTest_sw_core_draw \
))
ifneq ($(DISABLE_GUI),TRUE)
ifeq ($(OS),LINUX)
$(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_tiledrendering \
))
endif
endif
ifneq ($(DISABLE_CVE_TESTS),TRUE)
$(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_filters_test \
CppunitTest_sw_filters_test2 \
))
endif
$(eval $(call gb_Module_add_subsequentcheck_targets,sw,\
JunitTest_sw_complex \
JunitTest_sw_unoapi_1 \
JunitTest_sw_unoapi_2 \
JunitTest_sw_unoapi_3 \
JunitTest_sw_unoapi_4 \
))
$(eval $(call gb_Module_add_subsequentcheck_targets,sw,\
PythonTest_sw_python \
))
# screenshots
$(eval $(call gb_Module_add_screenshot_targets,sw,\
CppunitTest_sw_dialogs_test \
CppunitTest_sw_dialogs_test_2 \
))
$(eval $(call gb_Module_add_uicheck_targets,sw,\
UITest_writer_tests \
UITest_writer_tests2 \
UITest_writer_tests3 \
UITest_writer_tests4 \
UITest_writer_tests5 \
UITest_writer_tests6 \
UITest_writer_tests7 \
UITest_sw_table \
UITest_sw_findReplace \
UITest_sw_findSimilarity \
UITest_chapterNumbering \
UITest_librelogo \
UITest_sw_navigator \
UITest_sw_options \
UITest_sw_styleInspector \
UITest_sw_ui_fmtui \
UITest_classification \
UITest_writer_macro_tests \
UITest_writer_dialogs \
))
endif
# vim: set noet sw=4 ts=4: