configure.ac | 2 desktop/source/lib/init.cxx | 183 download.lst | 16 external/curl/configurable-z-option.patch.0 | 2 external/curl/curl-msvc-disable-protocols.patch.1 | 6 external/curl/curl-msvc.patch.1 | 18 external/curl/zlib.patch.0 | 40 officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu | 8 sd/qa/unit/data/tdf162455.svg | 2115 ++++++++++ sd/qa/unit/uiimpress.cxx | 37 sfx2/source/control/dispatch.cxx | 1 sfx2/source/control/unoctitm.cxx | 2 svx/source/svdraw/svdfmtf.cxx | 87 svx/source/svdraw/svdfmtf.hxx | 9 sw/inc/AnnotationWin.hxx | 3 sw/inc/PostItMgr.hxx | 2 sw/inc/cmdid.h | 1 sw/sdi/_annotsh.sdi | 6 sw/sdi/_textsh.sdi | 5 sw/sdi/swriter.sdi | 17 sw/source/uibase/docvw/AnnotationMenuButton.cxx | 4 sw/source/uibase/docvw/AnnotationWin.cxx | 18 sw/source/uibase/docvw/AnnotationWin2.cxx | 12 sw/source/uibase/docvw/PostItMgr.cxx | 56 sw/source/uibase/shells/annotsh.cxx | 10 sw/source/uibase/shells/textfld.cxx | 21 sw/source/uibase/uno/unotxdoc.cxx | 8 sw/uiconfig/sglobal/menubar/menubar.xml | 1 sw/uiconfig/sglobal/popupmenu/annotation.xml | 1 sw/uiconfig/swriter/menubar/menubar.xml | 1 sw/uiconfig/swriter/popupmenu/annotation.xml | 1 sw/uiconfig/swriter/ui/annotation.ui | 8 sw/uiconfig/swriter/ui/notebookbar_groupedbar_full.ui | 7 33 files changed, 2524 insertions(+), 184 deletions(-)
New commits: commit 1c7056cf82f461e4fd4ef6ff00db733af4d99ca6 Author: Pranam Lashkari <[email protected]> AuthorDate: Mon Sep 16 21:02:22 2024 +0300 Commit: Andras Timar <[email protected]> CommitDate: Tue Sep 17 15:29:08 2024 +0200 LOK: send state of EditDoc for write protection status Change-Id: I58eb4ab04b4063e382bc6550b5cf08d7806a6c6a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173470 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index a0a8e4092d6d..9a8b644a8191 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -4124,6 +4124,7 @@ static void doc_iniUnoCommands () u".uno:DistributeVertTop"_ustr, u".uno:AnimationEffects"_ustr, u".uno:ExecuteAnimationEffect"_ustr, + u".uno:EditDoc"_ustr, }; util::URL aCommandURL; diff --git a/sfx2/source/control/unoctitm.cxx b/sfx2/source/control/unoctitm.cxx index 720062c8b3cb..e898f565f8ff 100644 --- a/sfx2/source/control/unoctitm.cxx +++ b/sfx2/source/control/unoctitm.cxx @@ -1152,6 +1152,7 @@ constexpr auto handlers = frozen::make_unordered_map<std::u16string_view, Payloa { u"NormalMultiPaneGUI", IsActivePayload }, { u"NotesMode", IsActivePayload }, { u"SlideMasterPage", IsActivePayload }, + { u"EditDoc", IsActivePayload }, { u"CharFontName", FontNamePayload }, commit bde2f80f29c6d88dd6cd58859fc08f9d711911cc Author: Caolán McNamara <[email protected]> AuthorDate: Mon Sep 16 17:33:44 2024 +0100 Commit: Andras Timar <[email protected]> CommitDate: Tue Sep 17 15:29:08 2024 +0200 This should iterate over the thesaurus languages, not the spelling ones Change-Id: I94410274f7afbc0a6bc33fe43beb9810a905dfe4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173467 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Miklos Vajna <[email protected]> diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 0dde1e3ed4c3..a0a8e4092d6d 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -7967,7 +7967,7 @@ static void preloadData() // preload all available thesauri css::uno::Reference<linguistic2::XThesaurus> xThesaurus(xLngSvcMgr->getThesaurus()); - css::uno::Reference<linguistic2::XSupportedLocales> xThesLocales(xSpellChecker, css::uno::UNO_QUERY_THROW); + css::uno::Reference<linguistic2::XSupportedLocales> xThesLocales(xThesaurus, css::uno::UNO_QUERY_THROW); aLocales = xThesLocales->getLocales(); std::cerr << "Preloading local thesauri: "; for (auto &it : std::as_const(aLocales)) commit 507e57dea66a5772d7c8666d885e853b51a3675b Author: Caolán McNamara <[email protected]> AuthorDate: Mon Sep 16 12:55:33 2024 +0100 Commit: Andras Timar <[email protected]> CommitDate: Tue Sep 17 15:29:08 2024 +0200 Output what languages are handled by LanguageTool to explain the absence of languages that are listed by 'Preloading' because the languages handled by a remote LanguageTool are removed from the languages handled with local data. Change-Id: I203657f68a7b9399e39ebf9ab9447c7ae56efe68 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173448 Reviewed-by: Miklos Vajna <[email protected]> Tested-by: Jenkins CollaboraOffice <[email protected]> diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index ae1dd3c8abae..0dde1e3ed4c3 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -1029,8 +1029,10 @@ void hideSidebar() SetLastExceptionMsg(u"No view shell or sidebar"_ustr); } -void setLanguageToolConfig() +css::uno::Sequence<css::lang::Locale> setLanguageToolConfig() { + css::uno::Sequence<css::lang::Locale> aLTLocales; + const char* pEnabled = ::getenv("LANGUAGETOOL_ENABLED"); const char* pBaseUrlString = ::getenv("LANGUAGETOOL_BASEURL"); @@ -1043,7 +1045,7 @@ void setLanguageToolConfig() OUString aEnabled = OStringToOUString(pEnabled, RTL_TEXTENCODING_UTF8); if (aEnabled != "true") - return; + return aLTLocales; OUString aBaseUrl = OStringToOUString(pBaseUrlString, RTL_TEXTENCODING_UTF8); try { @@ -1071,6 +1073,11 @@ void setLanguageToolConfig() } batch->commit(); + uno::Reference<linguistic2::XProofreader> xGC( + xContext->getServiceManager()->createInstanceWithContext(u"org.openoffice.lingu.LanguageToolGrammarChecker"_ustr, xContext), + uno::UNO_QUERY_THROW); + uno::Reference<linguistic2::XSupportedLocales> xSuppLoc(xGC, uno::UNO_QUERY_THROW); + css::uno::Reference<css::linguistic2::XLinguServiceManager2> xLangSrv = css::linguistic2::LinguServiceManager::create(xContext); if (xLangSrv.is()) @@ -1081,11 +1088,6 @@ void setLanguageToolConfig() Sequence<OUString> aEmpty; Sequence<css::lang::Locale> aLocales = xSpell->getLocales(); - uno::Reference<linguistic2::XProofreader> xGC( - xContext->getServiceManager()->createInstanceWithContext(u"org.openoffice.lingu.LanguageToolGrammarChecker"_ustr, xContext), - uno::UNO_QUERY_THROW); - uno::Reference<linguistic2::XSupportedLocales> xSuppLoc(xGC, uno::UNO_QUERY_THROW); - for (int itLocale = 0; itLocale < aLocales.getLength(); itLocale++) { // turn off spell checker if LanguageTool supports the locale already @@ -1095,12 +1097,16 @@ void setLanguageToolConfig() } } } + + aLTLocales = xSuppLoc->getLocales(); } catch(uno::Exception const& rException) { SAL_WARN("lok", "Failed to set LanguageTool API settings: " << rException.Message); } } + + return aLTLocales; } } // end anonymous namespace @@ -7925,7 +7931,14 @@ static void preloadData() std::cerr << " "; // setup LanguageTool config before spell checking init - setLanguageToolConfig(); + css::uno::Sequence<css::lang::Locale> aLTLocales = setLanguageToolConfig(); + if (aLTLocales.getLength()) + { + std::cerr << "Remote linguistic service languages: "; + for (auto &it : std::as_const(aLTLocales)) + std::cerr << LanguageTag::convertToBcp47(it) << " "; + std::cerr << " "; + } // preload all available dictionaries linguistic2::DictionaryList::create(comphelper::getProcessComponentContext()); @@ -7933,7 +7946,7 @@ static void preloadData() css::linguistic2::LinguServiceManager::create(comphelper::getProcessComponentContext()); css::uno::Reference<linguistic2::XSpellChecker> xSpellChecker(xLngSvcMgr->getSpellChecker()); - std::cerr << "Preloading dictionaries: "; + std::cerr << "Preloading local dictionaries: "; css::uno::Reference<linguistic2::XSupportedLocales> xSpellLocales(xSpellChecker, css::uno::UNO_QUERY_THROW); uno::Sequence< css::lang::Locale > aLocales = xSpellLocales->getLocales(); for (auto &it : std::as_const(aLocales)) @@ -7956,7 +7969,7 @@ static void preloadData() css::uno::Reference<linguistic2::XThesaurus> xThesaurus(xLngSvcMgr->getThesaurus()); css::uno::Reference<linguistic2::XSupportedLocales> xThesLocales(xSpellChecker, css::uno::UNO_QUERY_THROW); aLocales = xThesLocales->getLocales(); - std::cerr << "Preloading thesauri: "; + std::cerr << "Preloading local thesauri: "; for (auto &it : std::as_const(aLocales)) { std::cerr << LanguageTag::convertToBcp47(it) << " "; commit 6abba8996ed9c126c2f6db4efa82baca5b26f74b Author: Caolán McNamara <[email protected]> AuthorDate: Mon Sep 16 13:20:28 2024 +0100 Commit: Andras Timar <[email protected]> CommitDate: Tue Sep 17 15:29:08 2024 +0200 move setLanguageToolConfig out of extern "C" zone no logic change here Change-Id: I29153a11e1b841fa078d29a6431cd5af1179672e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173450 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Miklos Vajna <[email protected]> diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 9ae5d7a93035..ae1dd3c8abae 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -811,6 +811,11 @@ static int lcl_getViewId(std::string_view payload) return 0; } +// Wonder global state ... +static uno::Reference<css::uno::XComponentContext> xContext; +static uno::Reference<css::lang::XMultiServiceFactory> xSFactory; +static uno::Reference<css::lang::XMultiComponentFactory> xFactory; + namespace { std::string extractCertificate(const std::string & certificate) @@ -1024,6 +1029,80 @@ void hideSidebar() SetLastExceptionMsg(u"No view shell or sidebar"_ustr); } +void setLanguageToolConfig() +{ + const char* pEnabled = ::getenv("LANGUAGETOOL_ENABLED"); + const char* pBaseUrlString = ::getenv("LANGUAGETOOL_BASEURL"); + + if (pEnabled && pBaseUrlString) + { + const char* pUsername = ::getenv("LANGUAGETOOL_USERNAME"); + const char* pApikey = ::getenv("LANGUAGETOOL_APIKEY"); + const char* pSSLVerification = ::getenv("LANGUAGETOOL_SSL_VERIFICATION"); + const char* pRestProtocol = ::getenv("LANGUAGETOOL_RESTPROTOCOL"); + + OUString aEnabled = OStringToOUString(pEnabled, RTL_TEXTENCODING_UTF8); + if (aEnabled != "true") + return; + OUString aBaseUrl = OStringToOUString(pBaseUrlString, RTL_TEXTENCODING_UTF8); + try + { + using LanguageToolCfg = officecfg::Office::Linguistic::GrammarChecking::LanguageTool; + auto batch(comphelper::ConfigurationChanges::create()); + + LanguageToolCfg::BaseURL::set(aBaseUrl, batch); + LanguageToolCfg::IsEnabled::set(true, batch); + if (pSSLVerification) + { + OUString aSSLVerification = OStringToOUString(pSSLVerification, RTL_TEXTENCODING_UTF8); + LanguageToolCfg::SSLCertVerify::set(aSSLVerification == "true", batch); + } + if (pRestProtocol) + { + OUString aRestProtocol = OStringToOUString(pRestProtocol, RTL_TEXTENCODING_UTF8); + LanguageToolCfg::RestProtocol::set(aRestProtocol, batch); + } + if (pUsername && pApikey) + { + OUString aUsername = OStringToOUString(pUsername, RTL_TEXTENCODING_UTF8); + OUString aApiKey = OStringToOUString(pApikey, RTL_TEXTENCODING_UTF8); + LanguageToolCfg::Username::set(aUsername, batch); + LanguageToolCfg::ApiKey::set(aApiKey, batch); + } + batch->commit(); + + css::uno::Reference<css::linguistic2::XLinguServiceManager2> xLangSrv = + css::linguistic2::LinguServiceManager::create(xContext); + if (xLangSrv.is()) + { + css::uno::Reference<css::linguistic2::XSpellChecker> xSpell = xLangSrv->getSpellChecker(); + if (xSpell.is()) + { + Sequence<OUString> aEmpty; + Sequence<css::lang::Locale> aLocales = xSpell->getLocales(); + + uno::Reference<linguistic2::XProofreader> xGC( + xContext->getServiceManager()->createInstanceWithContext(u"org.openoffice.lingu.LanguageToolGrammarChecker"_ustr, xContext), + uno::UNO_QUERY_THROW); + uno::Reference<linguistic2::XSupportedLocales> xSuppLoc(xGC, uno::UNO_QUERY_THROW); + + for (int itLocale = 0; itLocale < aLocales.getLength(); itLocale++) + { + // turn off spell checker if LanguageTool supports the locale already + if (xSuppLoc->hasLocale(aLocales[itLocale])) + xLangSrv->setConfiguredServices( + SN_SPELLCHECKER, aLocales[itLocale], aEmpty); + } + } + } + } + catch(uno::Exception const& rException) + { + SAL_WARN("lok", "Failed to set LanguageTool API settings: " << rException.Message); + } + } +} + } // end anonymous namespace // Could be anonymous in principle, but for the unit testing purposes, we @@ -2713,11 +2792,6 @@ void setFormatSpecificFilterData(std::u16string_view sFormat, comphelper::Sequen } // anonymous namespace -// Wonder global state ... -static uno::Reference<css::uno::XComponentContext> xContext; -static uno::Reference<css::lang::XMultiServiceFactory> xSFactory; -static uno::Reference<css::lang::XMultiComponentFactory> xFactory; - static LibreOfficeKitDocument* lo_documentLoad(LibreOfficeKit* pThis, const char* pURL) { return lo_documentLoadWithOptions(pThis, pURL, nullptr); @@ -7823,8 +7897,6 @@ static void preLoadShortCutAccelerators() batch->commit(); } -void setLanguageToolConfig(); - /// Used only by LibreOfficeKit when used by Online to pre-initialize static void preloadData() { @@ -8086,80 +8158,6 @@ void setDeeplConfig() } } -void setLanguageToolConfig() -{ - const char* pEnabled = ::getenv("LANGUAGETOOL_ENABLED"); - const char* pBaseUrlString = ::getenv("LANGUAGETOOL_BASEURL"); - - if (pEnabled && pBaseUrlString) - { - const char* pUsername = ::getenv("LANGUAGETOOL_USERNAME"); - const char* pApikey = ::getenv("LANGUAGETOOL_APIKEY"); - const char* pSSLVerification = ::getenv("LANGUAGETOOL_SSL_VERIFICATION"); - const char* pRestProtocol = ::getenv("LANGUAGETOOL_RESTPROTOCOL"); - - OUString aEnabled = OStringToOUString(pEnabled, RTL_TEXTENCODING_UTF8); - if (aEnabled != "true") - return; - OUString aBaseUrl = OStringToOUString(pBaseUrlString, RTL_TEXTENCODING_UTF8); - try - { - using LanguageToolCfg = officecfg::Office::Linguistic::GrammarChecking::LanguageTool; - auto batch(comphelper::ConfigurationChanges::create()); - - LanguageToolCfg::BaseURL::set(aBaseUrl, batch); - LanguageToolCfg::IsEnabled::set(true, batch); - if (pSSLVerification) - { - OUString aSSLVerification = OStringToOUString(pSSLVerification, RTL_TEXTENCODING_UTF8); - LanguageToolCfg::SSLCertVerify::set(aSSLVerification == "true", batch); - } - if (pRestProtocol) - { - OUString aRestProtocol = OStringToOUString(pRestProtocol, RTL_TEXTENCODING_UTF8); - LanguageToolCfg::RestProtocol::set(aRestProtocol, batch); - } - if (pUsername && pApikey) - { - OUString aUsername = OStringToOUString(pUsername, RTL_TEXTENCODING_UTF8); - OUString aApiKey = OStringToOUString(pApikey, RTL_TEXTENCODING_UTF8); - LanguageToolCfg::Username::set(aUsername, batch); - LanguageToolCfg::ApiKey::set(aApiKey, batch); - } - batch->commit(); - - css::uno::Reference<css::linguistic2::XLinguServiceManager2> xLangSrv = - css::linguistic2::LinguServiceManager::create(xContext); - if (xLangSrv.is()) - { - css::uno::Reference<css::linguistic2::XSpellChecker> xSpell = xLangSrv->getSpellChecker(); - if (xSpell.is()) - { - Sequence<OUString> aEmpty; - Sequence<css::lang::Locale> aLocales = xSpell->getLocales(); - - uno::Reference<linguistic2::XProofreader> xGC( - xContext->getServiceManager()->createInstanceWithContext(u"org.openoffice.lingu.LanguageToolGrammarChecker"_ustr, xContext), - uno::UNO_QUERY_THROW); - uno::Reference<linguistic2::XSupportedLocales> xSuppLoc(xGC, uno::UNO_QUERY_THROW); - - for (int itLocale = 0; itLocale < aLocales.getLength(); itLocale++) - { - // turn off spell checker if LanguageTool supports the locale already - if (xSuppLoc->hasLocale(aLocales[itLocale])) - xLangSrv->setConfiguredServices( - SN_SPELLCHECKER, aLocales[itLocale], aEmpty); - } - } - } - } - catch(uno::Exception const& rException) - { - SAL_WARN("lok", "Failed to set LanguageTool API settings: " << rException.Message); - } - } -} - } static int lo_initialize(LibreOfficeKit* pThis, const char* pAppPath, const char* pUserProfileUrl) commit 346bf6029c0c6870d35d5b70a9c6c01becd2b2ad Author: Jaume Pujantell <[email protected]> AuthorDate: Sun Sep 8 20:52:28 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Tue Sep 17 15:29:08 2024 +0200 sw: add new command to make a response comment root Adds the option to convert a reply comment into a new top comment while preserving the parent-child realtions of the other comments in the thread. Change-Id: I3cd5e5466fadc2226651d7c244b5139ec2d1f949 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173051 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Mike Kaganski <[email protected]> diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 37d9596839fe..9ae5d7a93035 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -3860,6 +3860,7 @@ static void doc_iniUnoCommands () u".uno:ReplyComment"_ustr, u".uno:ResolveComment"_ustr, u".uno:ResolveCommentThread"_ustr, + u".uno:PromoteComment"_ustr, u".uno:InsertRowsBefore"_ustr, u".uno:InsertRowsAfter"_ustr, u".uno:InsertColumnsBefore"_ustr, diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu index 6567f42c538e..30896cc0cdbc 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu @@ -6541,6 +6541,14 @@ bit 3 (0x8): #define UICOMMANDDESCRIPTION_PROPERTIES_TOGGLEBUTTON 8 <value>1</value> </prop> </node> + <node oor:name=".uno:PromoteComment" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Promote Comment To Root</value> + </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>1</value> + </prop> + </node> <node oor:name=".uno:CellVertTop" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Top</value> diff --git a/sfx2/source/control/dispatch.cxx b/sfx2/source/control/dispatch.cxx index 958f493f01a3..d08e02e2f452 100644 --- a/sfx2/source/control/dispatch.cxx +++ b/sfx2/source/control/dispatch.cxx @@ -1532,6 +1532,7 @@ bool SfxDispatcher::IsCommandAllowedInLokReadOnlyViewMode (OUString commandName) u".uno:DeleteComment"_ustr, u".uno:DeleteAnnotation"_ustr, u".uno:EditAnnotation"_ustr, + u".uno:PromoteComment"_ustr, }; if (std::find(std::begin(allowedList), std::end(allowedList), commandName) != std::end(allowedList)) diff --git a/sfx2/source/control/unoctitm.cxx b/sfx2/source/control/unoctitm.cxx index 5e48967fc6b8..720062c8b3cb 100644 --- a/sfx2/source/control/unoctitm.cxx +++ b/sfx2/source/control/unoctitm.cxx @@ -1179,6 +1179,7 @@ constexpr auto handlers = frozen::make_unordered_map<std::u16string_view, Payloa { u"DeleteAnnotation", EnabledPayload }, { u"ResolveAnnotation", EnabledPayload }, { u"ResolveAnnotationThread", EnabledPayload }, + { u"PromoteComment", EnabledPayload }, { u"InsertRowsBefore", EnabledPayload }, { u"InsertRowsAfter", EnabledPayload }, { u"InsertColumnsBefore", EnabledPayload }, diff --git a/sw/inc/AnnotationWin.hxx b/sw/inc/AnnotationWin.hxx index cbeaf7ceca44..aee382e51a82 100644 --- a/sw/inc/AnnotationWin.hxx +++ b/sw/inc/AnnotationWin.hxx @@ -206,6 +206,9 @@ class SAL_DLLPUBLIC_RTTI SwAnnotationWin final : public InterimItemWindow virtual FactoryFunction GetUITestFactory() const override; + bool IsRootNote() const; + void SetAsRoot(); + private: virtual void LoseFocus() override; diff --git a/sw/inc/PostItMgr.hxx b/sw/inc/PostItMgr.hxx index 5a877a6c8afe..535ae5f05165 100644 --- a/sw/inc/PostItMgr.hxx +++ b/sw/inc/PostItMgr.hxx @@ -207,6 +207,8 @@ class SAL_DLLPUBLIC_RTTI SwPostItMgr final : public SfxListener void DeleteCommentThread(sal_uInt32 nPostItId); void ToggleResolved(sal_uInt32 nPostItId); void ToggleResolvedForThread(sal_uInt32 nPostItId); + void PromoteToRoot(sal_uInt32 nPostItId); + void MoveSubthreadToRoot(const sw::annotation::SwAnnotationWin* pNewRoot); void ExecuteFormatAllDialog(SwView& rView); void FormatAll(const SfxItemSet &rNewAttr); diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h index acc812fb4dd3..e9796f028f6f 100644 --- a/sw/inc/cmdid.h +++ b/sw/inc/cmdid.h @@ -804,6 +804,7 @@ class SwUINumRuleItem; #define FN_RESOLVE_NOTE (FN_NOTES+9) #define FN_RESOLVE_NOTE_THREAD (FN_NOTES+10) #define FN_DELETE_COMMENT_THREAD (FN_NOTES+11) +#define FN_PROMOTE_COMMENT (FN_NOTES+12) // Region: Parameter #define FN_PARAM_MOVE_COUNT TypedWhichId<SfxInt32Item>(FN_PARAM+2) diff --git a/sw/sdi/_annotsh.sdi b/sw/sdi/_annotsh.sdi index 919dd0513aa5..0c26a55dd6d0 100644 --- a/sw/sdi/_annotsh.sdi +++ b/sw/sdi/_annotsh.sdi @@ -78,6 +78,12 @@ interface _Annotation StateMethod = GetNoteState ; ] + FN_PROMOTE_COMMENT + [ + ExecMethod = NoteExec ; + StateMethod = GetNoteState ; + ] + FN_POSTIT [ ExecMethod = NoteExec ; diff --git a/sw/sdi/_textsh.sdi b/sw/sdi/_textsh.sdi index a562847648d2..8c9aef9be2a1 100644 --- a/sw/sdi/_textsh.sdi +++ b/sw/sdi/_textsh.sdi @@ -1110,6 +1110,11 @@ interface BaseText ExecMethod = ExecField ; StateMethod = StateField; ] + FN_PROMOTE_COMMENT + [ + ExecMethod = ExecField ; + StateMethod = StateField; + ] FN_REDLINE_COMMENT // status(play) [ ExecMethod = ExecField ; diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi index 8679f7cb129d..77ef4f2e3332 100644 --- a/sw/sdi/swriter.sdi +++ b/sw/sdi/swriter.sdi @@ -7869,6 +7869,23 @@ SfxStringItem HideAuthor FN_HIDE_NOTE_AUTHOR ( SfxStringItem Author FN_HIDE_NOTE GroupId = SfxGroupId::Edit; ] +SfxVoidItem PromoteComment FN_PROMOTE_COMMENT +(SvxPostItIdItem Id SID_ATTR_POSTIT_ID) +[ + AutoUpdate = FALSE, + FastCall = FALSE, + ReadOnlyDoc = FALSE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + + AccelConfig = TRUE, + MenuConfig = TRUE, + ToolBoxConfig = TRUE, + GroupId = SfxGroupId::Edit; +] + SvxViewLayoutItem ViewLayout SID_ATTR_VIEWLAYOUT [ AutoUpdate = FALSE, diff --git a/sw/source/uibase/docvw/AnnotationMenuButton.cxx b/sw/source/uibase/docvw/AnnotationMenuButton.cxx index 5e42d15c879e..ac8dd0c8e031 100644 --- a/sw/source/uibase/docvw/AnnotationMenuButton.cxx +++ b/sw/source/uibase/docvw/AnnotationMenuButton.cxx @@ -55,6 +55,8 @@ IMPL_LINK(SwAnnotationWin, SelectHdl, const OUString&, rIdent, void) ExecuteCommand(FN_DELETE_ALL_NOTES); else if (rIdent == "formatall") ExecuteCommand(FN_FORMAT_ALL_NOTES); + else if (rIdent == "promote") + ExecuteCommand(FN_PROMOTE_COMMENT); if (bSwitchedFocus) UnsetActiveSidebarWin(); @@ -76,6 +78,7 @@ IMPL_LINK_NOARG(SwAnnotationWin, ToggleHdl, weld::Toggleable&, void) mxMenuButton->set_item_visible("resolvethread", false); mxMenuButton->set_item_visible("unresolvethread", false); mxMenuButton->set_item_visible("delete", false ); + mxMenuButton->set_item_visible("promote", false); } else { @@ -86,6 +89,7 @@ IMPL_LINK_NOARG(SwAnnotationWin, ToggleHdl, weld::Toggleable&, void) mxMenuButton->set_item_visible("resolvethread", !IsThreadResolved()); mxMenuButton->set_item_visible("unresolvethread", IsThreadResolved()); mxMenuButton->set_item_visible("delete", !IsReadOnlyOrProtected()); + mxMenuButton->set_item_visible("promote", !IsReadOnlyOrProtected() && !IsRootNote()); } mxMenuButton->set_item_visible("deletethread", !bReadOnly); diff --git a/sw/source/uibase/docvw/AnnotationWin.cxx b/sw/source/uibase/docvw/AnnotationWin.cxx index 426c097e9e58..75569fcd5cf3 100644 --- a/sw/source/uibase/docvw/AnnotationWin.cxx +++ b/sw/source/uibase/docvw/AnnotationWin.cxx @@ -307,6 +307,24 @@ bool SwAnnotationWin::IsThreadResolved() } } +bool SwAnnotationWin::IsRootNote() const +{ + return static_cast<SwPostItField*>(mpFormatField->GetField())->GetParentPostItId() == 0; +} + +void SwAnnotationWin::SetAsRoot() +{ + if (!IsRootNote()) + { + SwPostItField* pPostIt = static_cast<SwPostItField*>(mpFormatField->GetField()); + pPostIt->SetParentId(0); + pPostIt->SetParentPostItId(0); + pPostIt->SetParentName(""); + mrMgr.MoveSubthreadToRoot(this); + mpFormatField->Broadcast(SwFormatFieldHint(nullptr, SwFormatFieldHintWhich::CHANGED)); + } +} + void SwAnnotationWin::UpdateData() { if ( mpOutliner->IsModified() || mbResolvedStateUpdated ) diff --git a/sw/source/uibase/docvw/AnnotationWin2.cxx b/sw/source/uibase/docvw/AnnotationWin2.cxx index 73c035abdaf7..e1feb6bda484 100644 --- a/sw/source/uibase/docvw/AnnotationWin2.cxx +++ b/sw/source/uibase/docvw/AnnotationWin2.cxx @@ -1072,10 +1072,10 @@ void SwAnnotationWin::ExecuteCommand(sal_uInt16 nSlot) { // Get newly created SwPostItField and set its paraIdParent auto pPostItField = mrMgr.GetLatestPostItField(); - pPostItField->SetParentId(GetTopReplyNote()->GetParaId()); - pPostItField->SetParentPostItId(GetTopReplyNote()->GetPostItField()->GetPostItId()); + pPostItField->SetParentId(GetParaId()); + pPostItField->SetParentPostItId(GetPostItField()->GetPostItId()); this->GeneratePostItName(); - pPostItField->SetParentName(GetTopReplyNote()->GetPostItField()->GetName()); + pPostItField->SetParentName(GetPostItField()->GetName()); // In this case, force generating the associated window // synchronously so we can bundle its use of the registered @@ -1126,6 +1126,12 @@ void SwAnnotationWin::ExecuteCommand(sal_uInt16 nSlot) mrView.GetViewFrame().GetBindings().Execute( nSlot, aItems, SfxCallMode::ASYNCHRON ); } break; + case FN_PROMOTE_COMMENT: + SetAsRoot(); + DoResize(); + Invalidate(); + mrMgr.LayoutPostIts(); + break; default: mrView.GetViewFrame().GetBindings().Execute( nSlot ); break; diff --git a/sw/source/uibase/docvw/PostItMgr.cxx b/sw/source/uibase/docvw/PostItMgr.cxx index f712188bcba2..bc4df5ecb409 100644 --- a/sw/source/uibase/docvw/PostItMgr.cxx +++ b/sw/source/uibase/docvw/PostItMgr.cxx @@ -1713,6 +1713,62 @@ void SwPostItMgr::Delete() LayoutPostIts(); } +void SwPostItMgr::PromoteToRoot(sal_uInt32 nPostItId) +{ + mpWrtShell->StartAllAction(); + + SwRewriter aRewriter; + aRewriter.AddRule(UndoArg1, SwResId(STR_CONTENT_TYPE_SINGLE_POSTIT)); + + // We have no undo ID at the moment. + + IsPostitFieldWithPostitId aFilter(nPostItId); + FieldDocWatchingStack aStack(mvPostItFields, *mpView->GetDocShell(), aFilter); + const SwFormatField* pField = aStack.pop(); + // pField now contains our AnnotationWin object + if (pField) + { + SwAnnotationWin* pWin = GetSidebarWin(pField); + pWin->SetAsRoot(); + } + PrepareView(); + mpWrtShell->EndAllAction(); + mbLayout = true; + CalcRects(); + LayoutPostIts(); +} + +void SwPostItMgr::MoveSubthreadToRoot(const sw::annotation::SwAnnotationWin* pNewRoot) +{ + std::vector<std::unique_ptr<SwSidebarItem>>::iterator first, middle, last; + first = std::find_if(mvPostItFields.begin(), mvPostItFields.end(), + [&pNewRoot](const std::unique_ptr<SwSidebarItem>& pField) { + return pField->mpPostIt == pNewRoot; + }); + if (first == mvPostItFields.end()) + return; + std::set<int> aPostItIds; + aPostItIds.insert(pNewRoot->GetPostItField()->GetPostItId()); + middle = first + 1; + while (middle != mvPostItFields.end() + && aPostItIds.contains((*middle)->mpPostIt->GetPostItField()->GetParentPostItId())) + { + aPostItIds.insert((*middle)->mpPostIt->GetPostItField()->GetPostItId()); + ++middle; + } + if (middle == mvPostItFields.end()) + return; + last = middle; + while (last != mvPostItFields.end() + && (*last)->mpPostIt->GetPostItField()->GetParentPostItId() != 0) + ++last; + if (last == middle) + return; + std::rotate(first, middle, last); + CalcRects(); + LayoutPostIts(); +} + void SwPostItMgr::ExecuteFormatAllDialog(SwView& rView) { if (mvPostItFields.empty()) diff --git a/sw/source/uibase/shells/annotsh.cxx b/sw/source/uibase/shells/annotsh.cxx index 5c9ed82b4114..4d87aacd451e 100644 --- a/sw/source/uibase/shells/annotsh.cxx +++ b/sw/source/uibase/shells/annotsh.cxx @@ -1114,6 +1114,7 @@ void SwAnnotationShell::NoteExec(SfxRequest const &rReq) case FN_DELETE_COMMENT_THREAD: case FN_RESOLVE_NOTE: case FN_RESOLVE_NOTE_THREAD: + case FN_PROMOTE_COMMENT: if ( pPostItMgr->HasActiveSidebarWin() ) pPostItMgr->GetActiveSidebarWin()->ExecuteCommand(nSlot); break; @@ -1240,6 +1241,15 @@ void SwAnnotationShell::GetNoteState(SfxItemSet &rSet) } break; } + case FN_PROMOTE_COMMENT: + { + if (!pPostItMgr || !pPostItMgr->HasActiveAnnotationWin() + || pPostItMgr->GetActiveSidebarWin()->IsRootNote()) + { + rSet.DisableItem(nWhich); + } + break; + } default: rSet.InvalidateItem( nWhich ); break; diff --git a/sw/source/uibase/shells/textfld.cxx b/sw/source/uibase/shells/textfld.cxx index 20f21bb92355..10f6f278f4dc 100644 --- a/sw/source/uibase/shells/textfld.cxx +++ b/sw/source/uibase/shells/textfld.cxx @@ -506,18 +506,6 @@ void SwTextShell::ExecField(SfxRequest &rReq) sText = pTextItem->GetValue(); pMgr->RegisterAnswerText(sText); pWin->ExecuteCommand(nSlot); - - SwPostItField* pLatestPostItField = pMgr->GetLatestPostItField(); - if (pLatestPostItField) - { - // Set the parent postit id of the reply. - pLatestPostItField->SetParentPostItId(pIdItem->GetValue().toUInt32()); - - // If name of the replied comment is empty, we need to set a name in order to connect them in the xml file. - pWin->GeneratePostItName(); // Generates a name if the current name is empty. - - pLatestPostItField->SetParentName(pWin->GetPostItField()->GetName()); - } } } } @@ -549,6 +537,15 @@ void SwTextShell::ExecField(SfxRequest &rReq) } } break; + case FN_PROMOTE_COMMENT: + { + const SvxPostItIdItem* pIdItem = rReq.GetArg<SvxPostItIdItem>(SID_ATTR_POSTIT_ID); + if (pIdItem && !pIdItem->GetValue().isEmpty() && GetView().GetPostItMgr()) + { + GetView().GetPostItMgr()->PromoteToRoot(pIdItem->GetValue().toUInt32()); + } + break; + } case FN_REDLINE_COMMENT: { /* this code can be used once we want redline comments in the margin, all other stuff can diff --git a/sw/uiconfig/sglobal/menubar/menubar.xml b/sw/uiconfig/sglobal/menubar/menubar.xml index d0b9a1c4c1b0..b9968638edd1 100644 --- a/sw/uiconfig/sglobal/menubar/menubar.xml +++ b/sw/uiconfig/sglobal/menubar/menubar.xml @@ -146,6 +146,7 @@ <menu:menuitem menu:id=".uno:ReplyComment" menu:style="text"/> <menu:menuitem menu:id=".uno:ResolveComment" menu:style="text"/> <menu:menuitem menu:id=".uno:ResolveCommentThread" menu:style="text"/> + <menu:menuitem menu:id=".uno:PromoteComment" menu:syle="text"/> <menu:menuitem menu:id=".uno:DeleteComment" menu:style="text"/> <menu:menuitem menu:id=".uno:DeleteCommentThread" menu:style="text"/> <menu:menuitem menu:id=".uno:DeleteAuthor" menu:style="text"/> diff --git a/sw/uiconfig/sglobal/popupmenu/annotation.xml b/sw/uiconfig/sglobal/popupmenu/annotation.xml index 42c89cd7c8bc..91da8b30cbfc 100644 --- a/sw/uiconfig/sglobal/popupmenu/annotation.xml +++ b/sw/uiconfig/sglobal/popupmenu/annotation.xml @@ -21,6 +21,7 @@ <menu:menuitem menu:id=".uno:ReplyComment"/> <menu:menuitem menu:id=".uno:ResolveComment"/> <menu:menuitem menu:id=".uno:ResolveCommentThread"/> + <menu:menuitem menu:id=".uno:PromoteComment"/> <menu:menuseparator/> <menu:menuitem menu:id=".uno:DeleteComment"/> <menu:menuitem menu:id=".uno:DeleteCommentThread"/> diff --git a/sw/uiconfig/swriter/menubar/menubar.xml b/sw/uiconfig/swriter/menubar/menubar.xml index 281b77afe16e..a61844f3699a 100644 --- a/sw/uiconfig/swriter/menubar/menubar.xml +++ b/sw/uiconfig/swriter/menubar/menubar.xml @@ -151,6 +151,7 @@ <menu:menuitem menu:id=".uno:ReplyComment" menu:style="text"/> <menu:menuitem menu:id=".uno:ResolveComment" menu:style="text"/> <menu:menuitem menu:id=".uno:ResolveCommentThread" menu:style="text"/> + <menu:menuitem menu:id=".uno:PromoteComment" menu:style="text"/> <menu:menuitem menu:id=".uno:DeleteComment" menu:style="text"/> <menu:menuitem menu:id=".uno:DeleteCommentThread" menu:style="text"/> <menu:menuitem menu:id=".uno:DeleteAuthor" menu:style="text"/> diff --git a/sw/uiconfig/swriter/popupmenu/annotation.xml b/sw/uiconfig/swriter/popupmenu/annotation.xml index acdc6551ea97..bda8f346e374 100644 --- a/sw/uiconfig/swriter/popupmenu/annotation.xml +++ b/sw/uiconfig/swriter/popupmenu/annotation.xml @@ -22,6 +22,7 @@ <menu:menuseparator/> <menu:menuitem menu:id=".uno:ResolveComment"/> <menu:menuitem menu:id=".uno:ResolveCommentThread"/> + <menu:menuitem menu:id=".uno:PromoteComment"/> <menu:menuitem menu:id=".uno:DeleteComment"/> <menu:menuitem menu:id=".uno:DeleteCommentThread"/> <menu:menuitem menu:id=".uno:DeleteAuthor"/> diff --git a/sw/uiconfig/swriter/ui/annotation.ui b/sw/uiconfig/swriter/ui/annotation.ui index fc0e4c39a1a2..31b3c90b8aed 100644 --- a/sw/uiconfig/swriter/ui/annotation.ui +++ b/sw/uiconfig/swriter/ui/annotation.ui @@ -57,6 +57,14 @@ <property name="use-underline">True</property> </object> </child> + <child> + <object class="GtkMenuItem" id="promote"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="annotationmenu|promote">Promote Comment</property> + <property name="use-underline">True</property> + </object> + </child> <child> <object class="GtkMenuItem" id="delete"> <property name="visible">True</property> diff --git a/sw/uiconfig/swriter/ui/notebookbar_groupedbar_full.ui b/sw/uiconfig/swriter/ui/notebookbar_groupedbar_full.ui index 430b016a4e5a..b642cccf6b71 100644 --- a/sw/uiconfig/swriter/ui/notebookbar_groupedbar_full.ui +++ b/sw/uiconfig/swriter/ui/notebookbar_groupedbar_full.ui @@ -343,6 +343,13 @@ <property name="action_name">.uno:ResolveCommentThread</property> </object> </child> + <child> + <object class="GtkMenuItem" id="MenuComments-PromoteComment"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="action_name">.uno:PromoteComment</property> + </object> + </child> <child> <object class="GtkMenuItem" id="MenuComments-DeleteAuthor"> <property name="visible">True</property> commit c7cbd945c7f3f6faae8cd7ed5bdc07c077160a81 Author: Xisco Fauli <[email protected]> AuthorDate: Wed Sep 11 11:04:56 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Tue Sep 17 15:29:08 2024 +0200 curl: upgrade to 8.10.0 Downloaded from https://curl.se/download/curl-8.10.0.tar.xz Change-Id: I1eb9506a73162ce2e2adf1fe1e02267c34bc78ac Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173194 Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> (cherry picked from commit c95229bf8e3bd643b8529046f0754e2de4c6625b) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173173 Reviewed-by: Taichi Haradaguchi <[email protected]> diff --git a/download.lst b/download.lst index 9e7034b5eb25..c21eaa4bd7ee 100644 --- a/download.lst +++ b/download.lst @@ -80,8 +80,8 @@ CPPUNIT_TARBALL := cppunit-1.15.1.tar.gz # three static lines # so that git cherry-pick # will not run into conflicts -CURL_SHA256SUM := f292f6cc051d5bbabf725ef85d432dfeacc8711dd717ea97612ae590643801e5 -CURL_TARBALL := curl-8.9.1.tar.xz +CURL_SHA256SUM := e6b142f0e85e954759d37e26a3627e2278137595be80e3a860c4353e4335e5a0 +CURL_TARBALL := curl-8.10.0.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/external/curl/zlib.patch.0 b/external/curl/zlib.patch.0 index ff3ed07b4465..83993fe8a56f 100644 --- a/external/curl/zlib.patch.0 +++ b/external/curl/zlib.patch.0 @@ -8,18 +8,18 @@ # Check whether --with-zlib was given. if test ${with_zlib+y} -@@ -23045,6 +23044,7 @@ +@@ -23609,12 +23609,28 @@ - if test "$OPT_ZLIB" = "no" ; then -+ ZLIB_LIBS="" - { printf "%s " "$as_me:${as_lineno-$LINENO}: WARNING: zlib disabled" >&5 + if test "$OPT_ZLIB" = "no"; then ++ ZLIB_LIBS="" + { printf "%s " "$as_me:${as_lineno-$LINENO}: WARNING: zlib disabled" >&5 printf "%s " "$as_me: WARNING: zlib disabled" >&2;} else -@@ -23052,6 +23052,21 @@ + if test "$OPT_ZLIB" = "yes"; then OPT_ZLIB="" fi - ++ + if test -n "$ZLIB_CFLAGS$ZLIB_LIBS"; then + CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS" + LIBS="$ZLIB_LIBS $LIBS" @@ -34,10 +34,9 @@ + AMFIXLIB="1" + else + ZLIB_LIBS="" -+ - if test -z "$OPT_ZLIB" ; then - if test -n "$PKG_CONFIG"; then + if test -z "$OPT_ZLIB"; then + @@ -23903,6 +23903,7 @@ LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE zlib" curl_zlib_msg="enabled" @@ -48,21 +47,22 @@ if test x"$AMFIXLIB" = x1; then --- configure.ac +++ configure.ac -@@ -1243,19 +1243,30 @@ +@@ -1302,19 +1302,31 @@ clean_CPPFLAGS=$CPPFLAGS clean_LDFLAGS=$LDFLAGS clean_LIBS=$LIBS -ZLIB_LIBS="" ++ AC_ARG_WITH(zlib, AS_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH]) AS_HELP_STRING([--without-zlib],[disable use of zlib]), - [OPT_ZLIB="$withval"]) + [OPT_ZLIB="$withval"]) - if test "$OPT_ZLIB" = "no" ; then -+ ZLIB_LIBS="" - AC_MSG_WARN([zlib disabled]) + if test "$OPT_ZLIB" = "no"; then ++ ZLIB_LIBS="" + AC_MSG_WARN([zlib disabled]) else - if test "$OPT_ZLIB" = "yes" ; then + if test "$OPT_ZLIB" = "yes"; then OPT_ZLIB="" fi @@ -77,7 +77,7 @@ + else + ZLIB_LIBS="" + - if test -z "$OPT_ZLIB" ; then + if test -z "$OPT_ZLIB"; then CURL_CHECK_PKGCONFIG(zlib) @@ -1395,6 +1395,7 @@ commit 3a1496fac58394ee541022addcc005c4f0b6d200 Author: Michael Stahl <[email protected]> AuthorDate: Tue Sep 10 10:30:00 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Tue Sep 17 15:29:08 2024 +0200 expat: upgrade to release 2.6.3 Fixes CVE-2024-45490 CVE-2024-45491 CVE-2024-45492 Change-Id: I17f7d9a5c540e7d2005515f1f4fd79e0a5c631ca Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173097 Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> diff --git a/download.lst b/download.lst index bc8b90317137..9e7034b5eb25 100644 --- a/download.lst +++ b/download.lst @@ -111,8 +111,8 @@ ETONYEK_TARBALL := libetonyek-0.1.$(ETONYEK_VERSION_MICRO).tar.xz # three static lines # so that git cherry-pick # will not run into conflicts -EXPAT_SHA256SUM := ee14b4c5d8908b1bec37ad937607eab183d4d9806a08adee472c3c3121d27364 -EXPAT_TARBALL := expat-2.6.2.tar.xz +EXPAT_SHA256SUM := 274db254a6979bde5aad404763a704956940e465843f2a9bd9ed7af22e2c0efc +EXPAT_TARBALL := expat-2.6.3.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts commit 6a03dd097ea4918a9da8d28a3981ef4d47f4d5d4 Author: Xisco Fauli <[email protected]> AuthorDate: Sat Sep 7 00:42:57 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Tue Sep 17 15:29:08 2024 +0200 Python: upgrade to 3.8.20 Downloaded from https://www.python.org/ftp/python/3.8.20/Python-3.8.20.tar.xz Change-Id: I142d52236bcd4011359889ce6e64898ca08999c7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172983 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Jenkins diff --git a/configure.ac b/configure.ac index d9a1f2335b40..ad8163a248a1 100644 --- a/configure.ac +++ b/configure.ac @@ -10115,7 +10115,7 @@ if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_pyt SYSTEM_PYTHON= PYTHON_VERSION_MAJOR=3 PYTHON_VERSION_MINOR=8 - PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.19 + PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.20 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst]) fi diff --git a/download.lst b/download.lst index d75bb3bc6308..bc8b90317137 100644 --- a/download.lst +++ b/download.lst @@ -658,8 +658,8 @@ POSTGRESQL_TARBALL := postgresql-13.16.tar.bz2 # three static lines # so that git cherry-pick # will not run into conflicts -PYTHON_SHA256SUM := d2807ac69f69b84fd46a0b93bbd02a4fa48d3e70f4b2835ff0f72a2885040076 -PYTHON_TARBALL := Python-3.8.19.tar.xz +PYTHON_SHA256SUM := 6fb89a7124201c61125c0ab4cf7f6894df339a40c02833bfd28ab4d7691fafb4 +PYTHON_TARBALL := Python-3.8.20.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts commit 331a49901686541921faaf441ecb77403428a8f5 Author: Xisco Fauli <[email protected]> AuthorDate: Wed Jul 31 11:44:49 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Tue Sep 17 15:29:07 2024 +0200 curl: upgrade to 8.9.1 Downloaded from https://curl.se/download/curl-8.9.1.tar.xz Change-Id: I7a8ddd798c41ee6c9163b771b6c57f100fdc8af0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171292 Tested-by: Jenkins Reviewed-by: Taichi Haradaguchi <[email protected]> Signed-off-by: Xisco Fauli <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172834 Reviewed-by: Christian Lohmaier <[email protected]> Tested-by: Christian Lohmaier <[email protected]> diff --git a/download.lst b/download.lst index eb959b808bdf..d75bb3bc6308 100644 --- a/download.lst +++ b/download.lst @@ -80,8 +80,8 @@ CPPUNIT_TARBALL := cppunit-1.15.1.tar.gz # three static lines # so that git cherry-pick # will not run into conflicts -CURL_SHA256SUM := ff09b2791ca56d25fd5c3f3a4927dce7c8a9dc4182200c487ca889fba1fdd412 -CURL_TARBALL := curl-8.9.0.tar.xz +CURL_SHA256SUM := f292f6cc051d5bbabf725ef85d432dfeacc8711dd717ea97612ae590643801e5 +CURL_TARBALL := curl-8.9.1.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts commit 249db0db2a7ecf96976ddfccd1bcfb4de38d58b9 Author: Xisco Fauli <[email protected]> AuthorDate: Wed Jul 24 12:43:09 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Tue Sep 17 15:29:07 2024 +0200 curl: upgrade to 8.9.0 Downloaded from https://curl.se/download/curl-8.9.0.tar.xz Change-Id: Id8198dcc73e1679e8f672459b19d84606ae3e762 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170934 Reviewed-by: Xisco Fauli <[email protected]> Tested-by: Jenkins (cherry picked from commit 282da64a8fbcc71b59479bf13820a0b93c5f5889) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170945 Reviewed-by: Christian Lohmaier <[email protected]> Signed-off-by: Xisco Fauli <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172833 Tested-by: Christian Lohmaier <[email protected]> diff --git a/download.lst b/download.lst index d81f0966a02b..eb959b808bdf 100644 --- a/download.lst +++ b/download.lst @@ -80,8 +80,8 @@ CPPUNIT_TARBALL := cppunit-1.15.1.tar.gz # three static lines # so that git cherry-pick # will not run into conflicts -CURL_SHA256SUM := 0f58bb95fc330c8a46eeb3df5701b0d90c9d9bfcc42bd1cd08791d12551d4400 -CURL_TARBALL := curl-8.8.0.tar.xz +CURL_SHA256SUM := ff09b2791ca56d25fd5c3f3a4927dce7c8a9dc4182200c487ca889fba1fdd412 +CURL_TARBALL := curl-8.9.0.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/external/curl/configurable-z-option.patch.0 b/external/curl/configurable-z-option.patch.0 index 84516ad21917..5be2445e28c1 100644 --- a/external/curl/configurable-z-option.patch.0 +++ b/external/curl/configurable-z-option.patch.0 @@ -6,7 +6,7 @@ CC_NODEBUG = $(CC) /O2 /DNDEBUG -CC_DEBUG = $(CC) /Od /Gm /Zi /D_DEBUG /GZ +CC_DEBUG = $(CC) /Od /Gm $(DEBUG_FLAGS_VALUE) /D_DEBUG /GZ - CFLAGS = /I. /I../lib /I../include /nologo /W4 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL + CFLAGS = /I. /I../lib /I../include /nologo /W4 /GX /YX /FD /c /DBUILDING_LIBCURL !ELSE CC_NODEBUG = $(CC) /O2 /DNDEBUG @@ -64,7 +64,7 @@ diff --git a/external/curl/curl-msvc.patch.1 b/external/curl/curl-msvc.patch.1 index 54ad026ec8c7..2295b1b53ecf 100644 --- a/external/curl/curl-msvc.patch.1 +++ b/external/curl/curl-msvc.patch.1 @@ -6,22 +6,22 @@ MSVC: using SOLARINC !ELSE CC_NODEBUG = $(CC) /O2 /DNDEBUG CC_DEBUG = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd --CFLAGS = /I. /I ../lib /I../include /nologo /W4 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL -+CFLAGS = /I. /I ../lib /I../include /nologo /W4 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL $(SOLARINC) +-CFLAGS = /I. /I ../lib /I../include /nologo /W4 /EHsc /FD /c /DBUILDING_LIBCURL ++CFLAGS = /I. /I ../lib /I../include /nologo /W4 /EHsc /FD /c /DBUILDING_LIBCURL $(SOLARINC) !ENDIF LFLAGS = /nologo /machine:$(MACHINE) -@@ -426,11 +426,11 @@ +@@ -428,11 +428,11 @@ # CURL_XX macros are for the curl.exe command !IF "$(DEBUG)"=="yes" --RC_FLAGS = /dDEBUGBUILD=1 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc -+RC_FLAGS = $(SOLARINC) /dDEBUGBUILD=1 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc +-RC_FLAGS = /d_DEBUG /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc ++RC_FLAGS = $(SOLARINC) /d_DEBUG /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc CURL_CC = $(CC_DEBUG) $(RTLIB_DEBUG) - CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /dDEBUGBUILD=1 /Fo $@ $(CURL_SRC_DIR)+ CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /d_DEBUG /Fo $@ $(CURL_SRC_DIR) !ELSE --RC_FLAGS = /dDEBUGBUILD=0 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc -+RC_FLAGS = $(SOLARINC) /dDEBUGBUILD=0 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc +-RC_FLAGS = /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc ++RC_FLAGS = $(SOLARINC) /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc CURL_CC = $(CC_NODEBUG) $(RTLIB) - CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /dDEBUGBUILD=0 /Fo $@ $(CURL_SRC_DIR)+ CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /Fo $@ $(CURL_SRC_DIR) !ENDIF diff --git a/external/curl/zlib.patch.0 b/external/curl/zlib.patch.0 index b4442ba262d1..ff3ed07b4465 100644 --- a/external/curl/zlib.patch.0 +++ b/external/curl/zlib.patch.0 @@ -38,8 +38,8 @@ if test -z "$OPT_ZLIB" ; then if test -n "$PKG_CONFIG"; then -@@ -23344,6 +23359,7 @@ - printf "%s " "$as_me: found both libz and libz.h header" >&6;} +@@ -23903,6 +23903,7 @@ + LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE zlib" curl_zlib_msg="enabled" fi + fi @@ -80,8 +80,8 @@ if test -z "$OPT_ZLIB" ; then CURL_CHECK_PKGCONFIG(zlib) -@@ -1336,6 +1347,7 @@ - AC_MSG_NOTICE([found both libz and libz.h header]) +@@ -1395,6 +1395,7 @@ + LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE zlib" curl_zlib_msg="enabled" fi + fi commit 8988891b35eba68bf1dd3ab7ef7d2481a724bc3c Author: Xisco Fauli <[email protected]> AuthorDate: Tue Sep 3 17:01:28 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Tue Sep 17 15:29:07 2024 +0200 openssl: upgrade to 3.0.15 Downloaded from https://github.com/openssl/openssl/releases/download/openssl-3.0.15/openssl-3.0.15.tar.gz Change-Id: Ic1598fe8fafe610c7a3b409c5811bcc52658b130 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172830 Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> (cherry picked from commit e21e07f24bfdbe802e3ed8e611a135ab2ad2fe4c) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172811 Reviewed-by: Michael Stahl <[email protected]> diff --git a/download.lst b/download.lst index 1f01152a4ba8..d81f0966a02b 100644 --- a/download.lst +++ b/download.lst @@ -611,8 +611,8 @@ OPENLDAP_TARBALL := openldap-2.6.7.tgz # three static lines # so that git cherry-pick # will not run into conflicts -OPENSSL_SHA256SUM := eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca -OPENSSL_TARBALL := openssl-3.0.14.tar.gz +OPENSSL_SHA256SUM := 23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533 +OPENSSL_TARBALL := openssl-3.0.15.tar.gz # three static lines # so that git cherry-pick # will not run into conflicts commit 99e9c1e8532a4670ce5d92730e5e12e05f983a28 Author: Xisco Fauli <[email protected]> AuthorDate: Wed May 22 11:46:17 2024 +0200 Commit: Andras Timar <[email protected]> CommitDate: Tue Sep 17 15:29:07 2024 +0200 curl: Upgrade to 8.8.0 Downloaded from https://curl.se/download/curl-8.8.0.tar.xz Change-Id: Ib6ecbdb774f4d2643d8e848d8826704a51884eac Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167929 Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> Signed-off-by: Xisco Fauli <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172832 Reviewed-by: Taichi Haradaguchi <[email protected]> diff --git a/download.lst b/download.lst index fa9a7419cdf2..1f01152a4ba8 100644 --- a/download.lst +++ b/download.lst @@ -80,8 +80,8 @@ CPPUNIT_TARBALL := cppunit-1.15.1.tar.gz # three static lines # so that git cherry-pick # will not run into conflicts -CURL_SHA256SUM := 6fea2aac6a4610fbd0400afb0bcddbe7258a64c63f1f68e5855ebc0c659710cd -CURL_TARBALL := curl-8.7.1.tar.xz +CURL_SHA256SUM := 0f58bb95fc330c8a46eeb3df5701b0d90c9d9bfcc42bd1cd08791d12551d4400 +CURL_TARBALL := curl-8.8.0.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/external/curl/curl-msvc-disable-protocols.patch.1 b/external/curl/curl-msvc-disable-protocols.patch.1 index 905a2d6a7ac3..1c74fa63381b 100644 --- a/external/curl/curl-msvc-disable-protocols.patch.1 +++ b/external/curl/curl-msvc-disable-protocols.patch.1 @@ -2,9 +2,9 @@ disable protocols nobody needs in MSVC build --- curl/lib/config-win32.h.orig 2017-08-09 16:43:29.464000000 +0200 +++ curl/lib/config-win32.h 2017-08-09 16:47:38.549200000 +0200 -@@ -654,4 +654,20 @@ - # define ENABLE_IPV6 1 - #endif +@@ -509,4 +509,20 @@ + /* If you want to build curl with the built-in manual */ + #define USE_MANUAL 1 +#define CURL_DISABLE_DICT 1 +#define CURL_DISABLE_FILE 1 commit 6aef7b85ac0594ff83f3dd0c6b4e8eedbdd9d04b Author: Caolán McNamara <[email protected]> AuthorDate: Tue Sep 10 09:31:43 2024 +0100 Commit: Andras Timar <[email protected]> CommitDate: Tue Sep 17 15:29:06 2024 +0200 Resolves: tdf#162455 svg->curve causes text in objects to disappear Rather than assuming there is a uniform unchanging MapMode scaling, follow the same pattern as SVGWriter and map positions/sizes back relative to the original MapMode. Examples of #i119125#, tdf#162455 and tdf#160625 work Change-Id: I8229cebee6173fa4905828afb3b973c80ede3315 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173318 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Miklos Vajna <[email protected]> diff --git a/sd/qa/unit/data/tdf162455.svg b/sd/qa/unit/data/tdf162455.svg new file mode 100644 index 000000000000..ba50863864d0 --- /dev/null +++ b/sd/qa/unit/data/tdf162455.svg @@ -0,0 +1,2115 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- +Génération automatique de graphiques SVG interactifs +(c) Insee 2012, 2016 = BH : [email protected] +fonds de carte, concepts = CY : [email protected] + cartographie = ADS : [email protected] +[4G 23/11/2016] + onload="evt => {console.log('onload', evt) init('{$graph_id}',evt)}" + --> + +<svg + id="G_G0000101001" + aria-label="" + role="img" + viewBox="0 0 630 550" + width="100%" + onload="console.log('dfjdsvldvlnvds')" + xml:space="default" + preserveAspectRatio="xMinYMin meet" + version="1.1" + sodipodi:docname="teste03.svg" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview319" + pagecolor="#505050" + bordercolor="#eeeeee" + borderopacity="1" + inkscape:showpageshadow="0" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#505050" + showgrid="false" + inkscape:zoom="2.4273047" + inkscape:cx="363.77798" + inkscape:cy="309.80865" + inkscape:window-width="1920" + inkscape:window-height="2123" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="G_G0000101001_graphique" /> + <script + type="text/javascript" + id="script2"> +{ + + +var G_G0000101001_graph_l = 630 ; +var G_G0000101001_help_nblig=3; +var G_G0000101001_help_fontsize=12; +var G_G0000101001_help_last=0; +var G_G0000101001_keep_title=1; +var G_G0000101001_prefixegeo="france_regions"; +var G_G0000101001_lib_colonne_brut=["","Emploi salarié total - Pays de la Loire","Emploi salarié total - France hors Mayotte","Emploi salarié privé - Pays de la Loire","Emploi salarié privé - France hors Mayotte"] +var G_G0000101001_graph_data=[ ["","Emploi salarié total - Pays de la Loire","Emploi salarié total - France hors Mayotte","Emploi salarié privé - Pays de la Loire","Emploi salarié privé - France hors Mayotte"],["4ᵉ trim. 2017","100,0","100,0","100,0","100,0"],["1ᵉ trim. 2018","100,3","100,2","100,3","100,3"],["2ᵉ trim. 2018","100,4","100,2","100,6","100,4"],["3ᵉ trim. 2018","100,6","100,3","100,9","100,6"],["4ᵉ trim. 2018","101,0","100,6","101,3","100,9"], +["1ᵉ trim. 2019","101,7","101,3","102,1","101,7"],["2ᵉ trim. 2019","101,9","101,4","102,2","101,9"],["3ᵉ trim. 2019","102,1","101,6","102,5","102,2"],["4ᵉ trim. 2019","102,7","102,0","103,2","102,6"],["1ᵉ trim. 2020","100,7","100,3","100,6","100,3"], +["2ᵉ trim. 2020","100,6","99,7","100,7","99,9"],["3ᵉ trim. 2020","102,6","101,7","102,9","102,1"],["4ᵉ trim. 2020","102,9","101,8","103,3","102,1"],["1ᵉ trim. 2021","103,8","102,6","104,5","103,2"],["2ᵉ trim. 2021","104,9","103,6","105,7","104,5"], +["3ᵉ trim. 2021","105,7","104,5","106,7","105,4"],["4ᵉ trim. 2021","106,5","105,0","107,6","106,2"],["1ᵉ trim. 2022","106,9","105,3","108,1","106,6"],["2ᵉ trim. 2022","107,3","105,8","108,5","107,2"],["3ᵉ trim. 2022","107,7","106,2","109,1","107,7"], +["4ᵉ trim. 2022","108,2","106,5","109,6","108,2"],["1ᵉ trim. 2023","108,6","106,7","109,9","108,3"],["2ᵉ trim. 2023","108,9","106,9","110,2","108,5"],["3ᵉ trim. 2023","109,0","107,1","110,4","108,7"],["4ᵉ trim. 2023","109,2","107,1","110,4","108,6"], +["1ᵉ trim. 2024","109,5","107,4","110,7","109,0"] +]; +} + </script> + <defs + id="defs7"> + <clipPath + id="G_G0000101001_clipRectGraph"> + <rect + x="10" + y="95" + width="610" + height="445" + id="rect4" /> + </clipPath> + </defs> + <style + type="text/css" + id="style9"> + /* Styles statiques par défaut extraits d'un fichier XML */ + +svg {max-width: 656px;} +text {stroke:none} +.G_G0000101001_sens-line {stroke:gray;stroke-width:5;opacity:0} +.G_G0000101001_gridline { stroke:gray; stroke-width :0.5; } +.G_G0000101001_gridlinelog { stroke:silver; stroke-width :0.5; } +#G_G0000101001_axes { stroke:navy; stroke-width:1 } +#G_G0000101001_axes-titres {fill:black} +#G_G0000101001_axex-titre2 {text-anchor:start} +#G_G0000101001_axex-titre {text-anchor:end} +#G_G0000101001_axey-titre-pyramide {text-anchor:middle} +#G_G0000101001_sources {font-style:italic} +#G_G0000101001_extra_elements {pointer-events:none} +#G_G0000101001_help-lib1b {text-anchor:end} +#G_G0000101001_help-lib2b {text-anchor:end} +@media print {use[class*="marque"],path[class*="surface"],rect[class*="surface"] {opacity:1 !important}} +@media print {path[class*="pie-slice"] {stroke:white;stroke-width:1.5}} + + /* Styles multiples pour les lignes, surfaces, marques à partir des paramètres (couleurs, traits, largeurs, tailles, marques ...) + générés par la transformation */ + +.G_G0000101001_courbe1 { stroke-opacity:1; fill:none; stroke:#0AA4B0; stroke-width:2; stroke-dasharray: ; } +.G_G0000101001_courbe2 { stroke-opacity:1; fill:none; stroke:#0F417A; stroke-width:2; stroke-dasharray: ; } +.G_G0000101001_courbe3 { stroke-opacity:1; fill:none; stroke:#0AA4B0; stroke-width:2; stroke-dasharray:4 2; } +.G_G0000101001_courbe4 { stroke-opacity:1; fill:none; stroke:#0F417A; stroke-width:2; stroke-dasharray:4 2; } + +#G_G0000101001_axes-titres { fill:black; font-size:13px; } +#G_G0000101001_axey-titre1 { fill:black; text-anchor:start; } +#G_G0000101001_ticks { font-size:10px; } +#G_G0000101001_ticks-axe1 { fill:black; text-anchor:end; } +.G_G0000101001_tick-label { text-anchor:end; font-size:10px; } +.G_G0000101001_tick-bar { text-anchor:end; font-size:10px; } + +#G_G0000101001_graphique { font-family:"Open Sans",Verdana, "Bitstream Vera Sans", sans-serif; stroke-linejoin:round; stroke-linecap:butt; } +#G_G0000101001_cadre { stroke-width:0.7; fill:none; stroke:white; } +#G_G0000101001_titre { font-weight:bolder; font-size:12px; fill:black; text-anchor:start; } +#G_G0000101001_soustitre { font-size:12px; text-anchor:start; } +#G_G0000101001_legende { stroke-width:1; text-anchor:start; font-size:12px; } +#G_G0000101001_unite { font-size:13px; text-anchor:start; } +#G_G0000101001_notes-sources { text-anchor:start; fill:black; font-size:11px; } +#G_G0000101001_help-bubble { fill:#FFE070; stroke:gray; stroke-width:0.5; stroke-opacity:0.8; fill-opacity:0.8; } +#G_G0000101001_help { pointer-events:none; font-size:12px; } + +#G_G0000101001_legende>g>g:hover {cursor:pointer; font-weight:bold}</style> + <g + id="G_G0000101001_graphique" + aria-hidden="true"> + <text + id="G_G0000101001_debug" + x="100" + y="590" /> + <rect + id="G_G0000101001_cadre" + x="1" + y="1" + width="628" + height="548" /> + <g + id="G_G0000101001_notes-sources" + transform="translate(15,549)"> + <!--Notes--> + <g + id="G_G0000101001_notes" /> + <!--Sources--> + <g + id="G_G0000101001_sources" + transform="translate(0,0)" /> + </g> + <!--Ticks--> + <g + id="G_G0000101001_ticks"> + <!--Axe principal--> + <g + id="G_G0000101001_ticks-axe1"> + <!--ticks à partir de l'axe et au-dessus--> + <g + id="G_G0000101001_tick-axe1-1" + transform="translate(41,394)"> + <line + id="G_G0000101001_tick-axe1-1-line" + x2="559" + class="G_G0000101001_gridline" /> + <text + id="G_G0000101001_tick-axe1-1-text" + x="-5" + y="3">100</text> + </g> + <g + id="G_G0000101001_tick-axe1-2" + transform="translate(41,349)"> + <line + id="G_G0000101001_tick-axe1-2-line" + x2="559" + class="G_G0000101001_gridline" /> + <text + id="G_G0000101001_tick-axe1-2-text" + x="-5" + y="3">102</text> + </g> + <g + id="G_G0000101001_tick-axe1-3" + transform="translate(41,304)"> + <line + id="G_G0000101001_tick-axe1-3-line" + x2="559" + class="G_G0000101001_gridline" /> + <text + id="G_G0000101001_tick-axe1-3-text" + x="-5" + y="3">104</text> + </g> + <g + id="G_G0000101001_tick-axe1-4" + transform="translate(41,260)"> + <line + id="G_G0000101001_tick-axe1-4-line" + x2="559" + class="G_G0000101001_gridline" /> + <text + id="G_G0000101001_tick-axe1-4-text" + x="-5" + y="3">106</text> + </g> + <g + id="G_G0000101001_tick-axe1-5" + transform="translate(41,215)"> + <line + id="G_G0000101001_tick-axe1-5-line" + x2="559" + class="G_G0000101001_gridline" /> + <text + id="G_G0000101001_tick-axe1-5-text" + x="-5" + y="3">108</text> + </g> + <g + id="G_G0000101001_tick-axe1-6" + transform="translate(41,170)"> + <line + id="G_G0000101001_tick-axe1-6-line" + x2="559" + class="G_G0000101001_gridline" /> + <text + id="G_G0000101001_tick-axe1-6-text" + x="-5" + y="3">110</text> + </g> + <g + id="G_G0000101001_tick-axe1-7" + transform="translate(41,125)"> + <line + id="G_G0000101001_tick-axe1-7-line" + x2="559" + class="G_G0000101001_gridline" /> + <text + id="G_G0000101001_tick-axe1-7-text" + x="-5" + y="3">112</text> + </g> + <!--ticks en-dessous de l'axe--> + <g + id="G_G0000101001_tick-axe1-8" + transform="translate(41,439)"> + <line + id="G_G0000101001_tick-axe1-8-line" + x2="559" + class="G_G0000101001_gridline" /> + <text + id="G_G0000101001_tick-axe1-8-text" + x="-5" + y="3">98</text> + </g> + </g> + </g> + <g + id="G_G0000101001_axes-titres"> + <!--Titres axe vertical--> + <text + id="G_G0000101001_axey-titre1" + x="12" + y="111">Even more tests</text> + </g> + <!--Axes--> + <g + id="G_G0000101001_axes" + style=";stroke:navy; stroke-width :1; "> + <line + id="G_G0000101001_axe-x" + x1="46" + y1="394" + x2="605" + y2="394" /> + <line + id="G_G0000101001_axe-y1" + x1="46" + y1="439" + x2="46" + y2="115" /> + </g> + <!--Séries--> + <g + id="G_G0000101001_graph"> + <!--Repères axe X periodex=4--> + <g + id="G_G0000101001_courbes-ticks" + class="G_G0000101001_tick-label"> + <line + id="G_G0000101001_courbes-tick-1" + x1="46" + x2="46" + y1="444" + y2="120" + class="G_G0000101001_gridline" /> + <g + id="G_G0000101001_courbes-tick-1-text" + transform="translate(46,454) rotate(-45)"> + <text + id="G_G0000101001_courbes-tick-1-text-1">4ᵉ trim.0000</text> + </g> + <line + id="G_G0000101001_courbes-tick-5" + x1="135" + x2="135" + y1="444" + y2="120" + class="G_G0000101001_gridline" /> + <g + id="G_G0000101001_courbes-tick-5-text" + transform="translate(135,454) rotate(-45)"> + <text + id="G_G0000101001_courbes-tick-5-text-1">4ᵉ trim.0000</text> + </g> + <line + id="G_G0000101001_courbes-tick-9" + x1="223" + x2="223" + y1="444" + y2="120" + class="G_G0000101001_gridline" /> + <g + id="G_G0000101001_courbes-tick-9-text" + transform="translate(223,454) rotate(-45)"> + <text + id="G_G0000101001_courbes-tick-9-text-1">4ᵉ trim.0000</text> + </g> + <line + id="G_G0000101001_courbes-tick-13" + x1="312" + x2="312" + y1="444" + y2="120" + class="G_G0000101001_gridline" /> + <g + id="G_G0000101001_courbes-tick-13-text" + transform="translate(312,454) rotate(-45)"> + <text + id="G_G0000101001_courbes-tick-13-text-1">4ᵉ trim.0000</text> + </g> + <line + id="G_G0000101001_courbes-tick-17" + x1="401" + x2="401" + y1="444" + y2="120" + class="G_G0000101001_gridline" /> + <g + id="G_G0000101001_courbes-tick-17-text" + transform="translate(401,454) rotate(-45)"> + <text + id="G_G0000101001_courbes-tick-17-text-1">4ᵉ trim.0000</text> + </g> + <line + id="G_G0000101001_courbes-tick-21" + x1="489" + x2="489" + y1="444" + y2="120" + class="G_G0000101001_gridline" /> + <g + id="G_G0000101001_courbes-tick-21-text" + transform="translate(489,454) rotate(-45)"> + <text + id="G_G0000101001_courbes-tick-21-text-1">4ᵉ trim.0000</text> + </g> + <line + id="G_G0000101001_courbes-tick-26" + x1="600" + x2="600" + y1="444" + y2="120" + class="G_G0000101001_gridline" /> + <g + id="G_G0000101001_courbes-tick-26-text" + transform="translate(600,454) rotate(-45)"> + <text + id="G_G0000101001_courbes-tick-26-text-1">1ᵉ trim.0000</text> + </g> + </g> + <g + id="G_G0000101001_courbes"> + <!--Courbe colonne numéro 1--> + <path + id="G_G0000101001_courbe-C1" + d="M 46,394 L 68,387 L 90,385 L 112,381 L 135,372 L 157,356 L 179,352 L 201,347 L 223,334 L 245,378 L 268,381 L 290,336 L 312,329 L 334,309 L 356,284 L 378,266 L 401,248 L 423,239 L 445,230 L 467,221 L 489,210 L 511,201 L 534,195 L 556,192 L 578,188 L 600,181 " + class="G_G0000101001_courbe1" /> + <!--Courbe colonne numéro 2--> + <path + id="G_G0000101001_courbe-C2" + d="M 46,394 L 68,390 L 90,390 L 112,387 L 135,381 L 157,365 L 179,363 L 201,358 L 223,349 L 245,387 L 268,401 L 290,356 L 312,354 L 334,336 L 356,313 L 378,293 L 401,282 L 423,275 L 445,264 L 467,255 L 489,248 L 511,244 L 534,239 L 556,235 L 578,235 L 600,228 " + class="G_G0000101001_courbe2" /> + <!--Courbe colonne numéro 3--> + <path + id="G_G0000101001_courbe-C3" + d="M 46,394 L 68,387 L 90,381 L 112,374 L 135,365 L 157,347 L 179,345 L 201,338 L 223,322 L 245,381 L 268,378 L 290,329 L 312,320 L 334,293 L 356,266 L 378,244 L 401,224 L 423,212 L 445,204 L 467,190 L 489,179 L 511,172 L 534,165 L 556,161 L 578,161 L 600,154 " + class="G_G0000101001_courbe3" /> + <!--Courbe colonne numéro 4--> + <path + id="G_G0000101001_courbe-C4" + d="M 46,394 L 68,387 L 90,385 L 112,381 L 135,374 L 157,356 L 179,352 L 201,345 L 223,336 L 245,387 L 268,396 L 290,347 L 312,347 L 334,322 L 356,293 L 378,273 L 401,255 L 423,246 L 445,233 L 467,221 L 489,210 L 511,208 L 534,204 L 556,199 L 578,201 L 600,192 " + class="G_G0000101001_courbe4" /> + </g> + <g + id="G_G0000101001_courbes-lignes" + class="G_G0000101001_sens-line"> + <!--Segments colonne numéro 1--> + <line + id="G_G0000101001_courbes-ligne-C1-L2" + x1="46" + y1="394" + x2="68" + y2="387" + onmouseout="hide_help_line('G_G0000101001',2,1)" + onmousemove="show_help_line('G_G0000101001',2,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L3" + x1="68" + y1="387" + x2="90" + y2="385" + onmouseout="hide_help_line('G_G0000101001',3,1)" + onmousemove="show_help_line('G_G0000101001',3,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L4" + x1="90" + y1="385" + x2="112" + y2="381" + onmouseout="hide_help_line('G_G0000101001',4,1)" + onmousemove="show_help_line('G_G0000101001',4,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L5" + x1="112" + y1="381" + x2="135" + y2="372" + onmouseout="hide_help_line('G_G0000101001',5,1)" + onmousemove="show_help_line('G_G0000101001',5,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L6" + x1="135" + y1="372" + x2="157" + y2="356" + onmouseout="hide_help_line('G_G0000101001',6,1)" + onmousemove="show_help_line('G_G0000101001',6,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L7" + x1="157" + y1="356" + x2="179" + y2="352" + onmouseout="hide_help_line('G_G0000101001',7,1)" + onmousemove="show_help_line('G_G0000101001',7,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L8" + x1="179" + y1="352" + x2="201" + y2="347" + onmouseout="hide_help_line('G_G0000101001',8,1)" + onmousemove="show_help_line('G_G0000101001',8,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L9" + x1="201" + y1="347" + x2="223" + y2="334" + onmouseout="hide_help_line('G_G0000101001',9,1)" + onmousemove="show_help_line('G_G0000101001',9,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L10" + x1="223" + y1="334" + x2="245" + y2="378" + onmouseout="hide_help_line('G_G0000101001',10,1)" + onmousemove="show_help_line('G_G0000101001',10,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L11" + x1="245" + y1="378" + x2="268" + y2="381" + onmouseout="hide_help_line('G_G0000101001',11,1)" + onmousemove="show_help_line('G_G0000101001',11,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L12" + x1="268" + y1="381" + x2="290" + y2="336" + onmouseout="hide_help_line('G_G0000101001',12,1)" + onmousemove="show_help_line('G_G0000101001',12,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L13" + x1="290" + y1="336" + x2="312" + y2="329" + onmouseout="hide_help_line('G_G0000101001',13,1)" + onmousemove="show_help_line('G_G0000101001',13,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L14" + x1="312" + y1="329" + x2="334" + y2="309" + onmouseout="hide_help_line('G_G0000101001',14,1)" + onmousemove="show_help_line('G_G0000101001',14,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L15" + x1="334" + y1="309" + x2="356" + y2="284" + onmouseout="hide_help_line('G_G0000101001',15,1)" + onmousemove="show_help_line('G_G0000101001',15,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L16" + x1="356" + y1="284" + x2="378" + y2="266" + onmouseout="hide_help_line('G_G0000101001',16,1)" + onmousemove="show_help_line('G_G0000101001',16,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L17" + x1="378" + y1="266" + x2="401" + y2="248" + onmouseout="hide_help_line('G_G0000101001',17,1)" + onmousemove="show_help_line('G_G0000101001',17,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L18" + x1="401" + y1="248" + x2="423" + y2="239" + onmouseout="hide_help_line('G_G0000101001',18,1)" + onmousemove="show_help_line('G_G0000101001',18,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L19" + x1="423" + y1="239" + x2="445" + y2="230" + onmouseout="hide_help_line('G_G0000101001',19,1)" + onmousemove="show_help_line('G_G0000101001',19,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L20" + x1="445" + y1="230" + x2="467" + y2="221" + onmouseout="hide_help_line('G_G0000101001',20,1)" + onmousemove="show_help_line('G_G0000101001',20,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L21" + x1="467" + y1="221" + x2="489" + y2="210" + onmouseout="hide_help_line('G_G0000101001',21,1)" + onmousemove="show_help_line('G_G0000101001',21,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L22" + x1="489" + y1="210" + x2="511" + y2="201" + onmouseout="hide_help_line('G_G0000101001',22,1)" + onmousemove="show_help_line('G_G0000101001',22,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L23" + x1="511" + y1="201" + x2="534" + y2="195" + onmouseout="hide_help_line('G_G0000101001',23,1)" + onmousemove="show_help_line('G_G0000101001',23,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L24" + x1="534" + y1="195" + x2="556" + y2="192" + onmouseout="hide_help_line('G_G0000101001',24,1)" + onmousemove="show_help_line('G_G0000101001',24,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L25" + x1="556" + y1="192" + x2="578" + y2="188" + onmouseout="hide_help_line('G_G0000101001',25,1)" + onmousemove="show_help_line('G_G0000101001',25,1)" /> + <line + id="G_G0000101001_courbes-ligne-C1-L26" + x1="578" + y1="188" + x2="600" + y2="181" + onmouseout="hide_help_line('G_G0000101001',26,1)" + onmousemove="show_help_line('G_G0000101001',26,1)" /> + <!--Segments colonne numéro 2--> + <line + id="G_G0000101001_courbes-ligne-C2-L2" + x1="46" + y1="394" + x2="68" + y2="390" + onmouseout="hide_help_line('G_G0000101001',2,2)" + onmousemove="show_help_line('G_G0000101001',2,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L3" + x1="68" + y1="390" + x2="90" + y2="390" + onmouseout="hide_help_line('G_G0000101001',3,2)" + onmousemove="show_help_line('G_G0000101001',3,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L4" + x1="90" + y1="390" + x2="112" + y2="387" + onmouseout="hide_help_line('G_G0000101001',4,2)" + onmousemove="show_help_line('G_G0000101001',4,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L5" + x1="112" + y1="387" + x2="135" + y2="381" + onmouseout="hide_help_line('G_G0000101001',5,2)" + onmousemove="show_help_line('G_G0000101001',5,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L6" + x1="135" + y1="381" + x2="157" + y2="365" + onmouseout="hide_help_line('G_G0000101001',6,2)" + onmousemove="show_help_line('G_G0000101001',6,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L7" + x1="157" + y1="365" + x2="179" + y2="363" + onmouseout="hide_help_line('G_G0000101001',7,2)" + onmousemove="show_help_line('G_G0000101001',7,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L8" + x1="179" + y1="363" + x2="201" + y2="358" + onmouseout="hide_help_line('G_G0000101001',8,2)" + onmousemove="show_help_line('G_G0000101001',8,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L9" + x1="201" + y1="358" + x2="223" + y2="349" + onmouseout="hide_help_line('G_G0000101001',9,2)" + onmousemove="show_help_line('G_G0000101001',9,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L10" + x1="223" + y1="349" + x2="245" + y2="387" + onmouseout="hide_help_line('G_G0000101001',10,2)" + onmousemove="show_help_line('G_G0000101001',10,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L11" + x1="245" + y1="387" + x2="268" + y2="401" + onmouseout="hide_help_line('G_G0000101001',11,2)" + onmousemove="show_help_line('G_G0000101001',11,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L12" + x1="268" + y1="401" + x2="290" + y2="356" + onmouseout="hide_help_line('G_G0000101001',12,2)" + onmousemove="show_help_line('G_G0000101001',12,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L13" + x1="290" + y1="356" + x2="312" + y2="354" + onmouseout="hide_help_line('G_G0000101001',13,2)" + onmousemove="show_help_line('G_G0000101001',13,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L14" + x1="312" + y1="354" + x2="334" + y2="336" + onmouseout="hide_help_line('G_G0000101001',14,2)" + onmousemove="show_help_line('G_G0000101001',14,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L15" + x1="334" + y1="336" + x2="356" + y2="313" + onmouseout="hide_help_line('G_G0000101001',15,2)" + onmousemove="show_help_line('G_G0000101001',15,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L16" + x1="356" + y1="313" + x2="378" + y2="293" + onmouseout="hide_help_line('G_G0000101001',16,2)" + onmousemove="show_help_line('G_G0000101001',16,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L17" + x1="378" + y1="293" + x2="401" + y2="282" + onmouseout="hide_help_line('G_G0000101001',17,2)" + onmousemove="show_help_line('G_G0000101001',17,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L18" + x1="401" + y1="282" + x2="423" + y2="275" + onmouseout="hide_help_line('G_G0000101001',18,2)" + onmousemove="show_help_line('G_G0000101001',18,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L19" + x1="423" + y1="275" + x2="445" + y2="264" + onmouseout="hide_help_line('G_G0000101001',19,2)" + onmousemove="show_help_line('G_G0000101001',19,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L20" + x1="445" + y1="264" + x2="467" + y2="255" + onmouseout="hide_help_line('G_G0000101001',20,2)" + onmousemove="show_help_line('G_G0000101001',20,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L21" + x1="467" + y1="255" + x2="489" + y2="248" + onmouseout="hide_help_line('G_G0000101001',21,2)" + onmousemove="show_help_line('G_G0000101001',21,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L22" + x1="489" + y1="248" + x2="511" + y2="244" + onmouseout="hide_help_line('G_G0000101001',22,2)" + onmousemove="show_help_line('G_G0000101001',22,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L23" + x1="511" + y1="244" + x2="534" + y2="239" + onmouseout="hide_help_line('G_G0000101001',23,2)" + onmousemove="show_help_line('G_G0000101001',23,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L24" + x1="534" + y1="239" + x2="556" + y2="235" + onmouseout="hide_help_line('G_G0000101001',24,2)" + onmousemove="show_help_line('G_G0000101001',24,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L25" + x1="556" + y1="235" + x2="578" + y2="235" + onmouseout="hide_help_line('G_G0000101001',25,2)" + onmousemove="show_help_line('G_G0000101001',25,2)" /> + <line + id="G_G0000101001_courbes-ligne-C2-L26" + x1="578" + y1="235" + x2="600" + y2="228" + onmouseout="hide_help_line('G_G0000101001',26,2)" + onmousemove="show_help_line('G_G0000101001',26,2)" /> + <!--Segments colonne numéro 3--> + <line + id="G_G0000101001_courbes-ligne-C3-L2" + x1="46" + y1="394" + x2="68" + y2="387" + onmouseout="hide_help_line('G_G0000101001',2,3)" + onmousemove="show_help_line('G_G0000101001',2,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L3" + x1="68" + y1="387" + x2="90" + y2="381" + onmouseout="hide_help_line('G_G0000101001',3,3)" + onmousemove="show_help_line('G_G0000101001',3,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L4" + x1="90" + y1="381" + x2="112" + y2="374" + onmouseout="hide_help_line('G_G0000101001',4,3)" + onmousemove="show_help_line('G_G0000101001',4,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L5" + x1="112" + y1="374" + x2="135" + y2="365" + onmouseout="hide_help_line('G_G0000101001',5,3)" + onmousemove="show_help_line('G_G0000101001',5,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L6" + x1="135" + y1="365" + x2="157" + y2="347" + onmouseout="hide_help_line('G_G0000101001',6,3)" + onmousemove="show_help_line('G_G0000101001',6,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L7" + x1="157" + y1="347" + x2="179" + y2="345" + onmouseout="hide_help_line('G_G0000101001',7,3)" + onmousemove="show_help_line('G_G0000101001',7,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L8" + x1="179" + y1="345" + x2="201" + y2="338" + onmouseout="hide_help_line('G_G0000101001',8,3)" + onmousemove="show_help_line('G_G0000101001',8,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L9" + x1="201" + y1="338" + x2="223" + y2="322" + onmouseout="hide_help_line('G_G0000101001',9,3)" + onmousemove="show_help_line('G_G0000101001',9,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L10" + x1="223" + y1="322" + x2="245" + y2="381" + onmouseout="hide_help_line('G_G0000101001',10,3)" + onmousemove="show_help_line('G_G0000101001',10,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L11" + x1="245" + y1="381" + x2="268" + y2="378" + onmouseout="hide_help_line('G_G0000101001',11,3)" + onmousemove="show_help_line('G_G0000101001',11,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L12" + x1="268" + y1="378" + x2="290" + y2="329" + onmouseout="hide_help_line('G_G0000101001',12,3)" + onmousemove="show_help_line('G_G0000101001',12,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L13" + x1="290" + y1="329" + x2="312" + y2="320" + onmouseout="hide_help_line('G_G0000101001',13,3)" + onmousemove="show_help_line('G_G0000101001',13,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L14" + x1="312" + y1="320" + x2="334" + y2="293" + onmouseout="hide_help_line('G_G0000101001',14,3)" + onmousemove="show_help_line('G_G0000101001',14,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L15" + x1="334" + y1="293" + x2="356" + y2="266" + onmouseout="hide_help_line('G_G0000101001',15,3)" + onmousemove="show_help_line('G_G0000101001',15,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L16" + x1="356" + y1="266" + x2="378" + y2="244" + onmouseout="hide_help_line('G_G0000101001',16,3)" + onmousemove="show_help_line('G_G0000101001',16,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L17" + x1="378" + y1="244" + x2="401" + y2="224" + onmouseout="hide_help_line('G_G0000101001',17,3)" + onmousemove="show_help_line('G_G0000101001',17,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L18" + x1="401" + y1="224" + x2="423" + y2="212" + onmouseout="hide_help_line('G_G0000101001',18,3)" + onmousemove="show_help_line('G_G0000101001',18,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L19" + x1="423" + y1="212" + x2="445" + y2="204" + onmouseout="hide_help_line('G_G0000101001',19,3)" + onmousemove="show_help_line('G_G0000101001',19,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L20" + x1="445" + y1="204" + x2="467" + y2="190" + onmouseout="hide_help_line('G_G0000101001',20,3)" + onmousemove="show_help_line('G_G0000101001',20,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L21" + x1="467" + y1="190" + x2="489" + y2="179" + onmouseout="hide_help_line('G_G0000101001',21,3)" + onmousemove="show_help_line('G_G0000101001',21,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L22" + x1="489" + y1="179" + x2="511" + y2="172" + onmouseout="hide_help_line('G_G0000101001',22,3)" + onmousemove="show_help_line('G_G0000101001',22,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L23" + x1="511" + y1="172" + x2="534" + y2="165" + onmouseout="hide_help_line('G_G0000101001',23,3)" + onmousemove="show_help_line('G_G0000101001',23,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L24" + x1="534" + y1="165" + x2="556" + y2="161" + onmouseout="hide_help_line('G_G0000101001',24,3)" + onmousemove="show_help_line('G_G0000101001',24,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L25" + x1="556" + y1="161" + x2="578" + y2="161" + onmouseout="hide_help_line('G_G0000101001',25,3)" + onmousemove="show_help_line('G_G0000101001',25,3)" /> + <line + id="G_G0000101001_courbes-ligne-C3-L26" + x1="578" + y1="161" + x2="600" + y2="154" + onmouseout="hide_help_line('G_G0000101001',26,3)" + onmousemove="show_help_line('G_G0000101001',26,3)" /> + <!--Segments colonne numéro 4--> + <line + id="G_G0000101001_courbes-ligne-C4-L2" + x1="46" + y1="394" + x2="68" + y2="387" + onmouseout="hide_help_line('G_G0000101001',2,4)" + onmousemove="show_help_line('G_G0000101001',2,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L3" + x1="68" + y1="387" + x2="90" + y2="385" + onmouseout="hide_help_line('G_G0000101001',3,4)" + onmousemove="show_help_line('G_G0000101001',3,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L4" + x1="90" + y1="385" + x2="112" + y2="381" + onmouseout="hide_help_line('G_G0000101001',4,4)" + onmousemove="show_help_line('G_G0000101001',4,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L5" + x1="112" + y1="381" + x2="135" + y2="374" + onmouseout="hide_help_line('G_G0000101001',5,4)" + onmousemove="show_help_line('G_G0000101001',5,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L6" + x1="135" + y1="374" + x2="157" + y2="356" + onmouseout="hide_help_line('G_G0000101001',6,4)" + onmousemove="show_help_line('G_G0000101001',6,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L7" + x1="157" + y1="356" + x2="179" + y2="352" + onmouseout="hide_help_line('G_G0000101001',7,4)" + onmousemove="show_help_line('G_G0000101001',7,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L8" + x1="179" + y1="352" + x2="201" + y2="345" + onmouseout="hide_help_line('G_G0000101001',8,4)" + onmousemove="show_help_line('G_G0000101001',8,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L9" + x1="201" + y1="345" + x2="223" + y2="336" + onmouseout="hide_help_line('G_G0000101001',9,4)" + onmousemove="show_help_line('G_G0000101001',9,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L10" + x1="223" + y1="336" + x2="245" + y2="387" + onmouseout="hide_help_line('G_G0000101001',10,4)" + onmousemove="show_help_line('G_G0000101001',10,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L11" + x1="245" + y1="387" + x2="268" + y2="396" + onmouseout="hide_help_line('G_G0000101001',11,4)" + onmousemove="show_help_line('G_G0000101001',11,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L12" + x1="268" + y1="396" + x2="290" + y2="347" + onmouseout="hide_help_line('G_G0000101001',12,4)" + onmousemove="show_help_line('G_G0000101001',12,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L13" + x1="290" + y1="347" + x2="312" + y2="347" + onmouseout="hide_help_line('G_G0000101001',13,4)" + onmousemove="show_help_line('G_G0000101001',13,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L14" + x1="312" + y1="347" + x2="334" + y2="322" + onmouseout="hide_help_line('G_G0000101001',14,4)" + onmousemove="show_help_line('G_G0000101001',14,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L15" + x1="334" + y1="322" + x2="356" + y2="293" + onmouseout="hide_help_line('G_G0000101001',15,4)" + onmousemove="show_help_line('G_G0000101001',15,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L16" + x1="356" + y1="293" + x2="378" + y2="273" + onmouseout="hide_help_line('G_G0000101001',16,4)" + onmousemove="show_help_line('G_G0000101001',16,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L17" + x1="378" + y1="273" + x2="401" + y2="255" + onmouseout="hide_help_line('G_G0000101001',17,4)" + onmousemove="show_help_line('G_G0000101001',17,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L18" + x1="401" + y1="255" + x2="423" + y2="246" + onmouseout="hide_help_line('G_G0000101001',18,4)" + onmousemove="show_help_line('G_G0000101001',18,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L19" + x1="423" + y1="246" + x2="445" + y2="233" + onmouseout="hide_help_line('G_G0000101001',19,4)" + onmousemove="show_help_line('G_G0000101001',19,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L20" + x1="445" + y1="233" + x2="467" + y2="221" + onmouseout="hide_help_line('G_G0000101001',20,4)" + onmousemove="show_help_line('G_G0000101001',20,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L21" + x1="467" + y1="221" + x2="489" + y2="210" + onmouseout="hide_help_line('G_G0000101001',21,4)" + onmousemove="show_help_line('G_G0000101001',21,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L22" + x1="489" + y1="210" + x2="511" + y2="208" + onmouseout="hide_help_line('G_G0000101001',22,4)" + onmousemove="show_help_line('G_G0000101001',22,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L23" + x1="511" + y1="208" + x2="534" + y2="204" + onmouseout="hide_help_line('G_G0000101001',23,4)" + onmousemove="show_help_line('G_G0000101001',23,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L24" + x1="534" + y1="204" + x2="556" + y2="199" + onmouseout="hide_help_line('G_G0000101001',24,4)" + onmousemove="show_help_line('G_G0000101001',24,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L25" + x1="556" + y1="199" + x2="578" + y2="201" + onmouseout="hide_help_line('G_G0000101001',25,4)" + onmousemove="show_help_line('G_G0000101001',25,4)" /> + <line + id="G_G0000101001_courbes-ligne-C4-L26" + x1="578" + y1="201" + x2="600" + y2="192" + onmouseout="hide_help_line('G_G0000101001',26,4)" + onmousemove="show_help_line('G_G0000101001',26,4)" /> + </g> + <g -e ... etc. - the rest is truncated
