vcl/inc/jsdialog/jsdialogbuilder.hxx | 2 ++ vcl/jsdialog/jsdialogbuilder.cxx | 12 ++++++++++++ 2 files changed, 14 insertions(+)
New commits: commit 516087c8d4380ef7ea0d9d9d3f60ca71ed7bfd87 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Sat Mar 4 15:14:49 2023 +0100 Commit: Szymon Kłos <szymon.k...@collabora.com> CommitDate: Tue Mar 7 09:12:05 2023 +0000 jsdialog: send full update when showing BuilderPage BuilderPage when created welds only container. Detect that case when full update wasn't sent in weld_dialog or weld_assistant so we show new tab pages. Fixes problem in Characters -> Higlight -> Color Change-Id: Iab38493a12feb4fc5e8b258125987856485275a4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148246 Tested-by: Szymon Kłos <szymon.k...@collabora.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index b7b0e941f2e0..f9dea1a3987d 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -221,6 +221,8 @@ class JSInstanceBuilder final : public SalInstanceBuilder, public JSDialogSender std::string m_sTypeOfJSON; bool m_bHasTopLevelDialog; bool m_bIsNotebookbar; + /// used to detect when we have to send Full Update in container handler + bool m_bSentInitialUpdate; /// When LOKNotifier is set by jsdialogs code we need to release it VclPtr<vcl::Window> m_aWindowToRelease; diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index cc1ca91262c8..db2481897fa3 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -509,6 +509,7 @@ JSInstanceBuilder::JSInstanceBuilder(weld::Widget* pParent, const OUString& rUIR , m_sTypeOfJSON("dialog") , m_bHasTopLevelDialog(false) , m_bIsNotebookbar(false) + , m_bSentInitialUpdate(false) , m_aWindowToRelease(nullptr) { // when it is a popup we initialize sender in weld_popover @@ -541,6 +542,7 @@ JSInstanceBuilder::JSInstanceBuilder(weld::Widget* pParent, const OUString& rUIR , m_sTypeOfJSON("sidebar") , m_bHasTopLevelDialog(false) , m_bIsNotebookbar(false) + , m_bSentInitialUpdate(false) , m_aWindowToRelease(nullptr) { vcl::Window* pRoot = m_xBuilder->get_widget_root(); @@ -583,6 +585,7 @@ JSInstanceBuilder::JSInstanceBuilder(vcl::Window* pParent, const OUString& rUIRo , m_sTypeOfJSON("notebookbar") , m_bHasTopLevelDialog(false) , m_bIsNotebookbar(false) + , m_bSentInitialUpdate(false) , m_aWindowToRelease(nullptr) { vcl::Window* pRoot = m_xBuilder->get_widget_root(); @@ -612,6 +615,7 @@ JSInstanceBuilder::JSInstanceBuilder(vcl::Window* pParent, const OUString& rUIRo , m_sTypeOfJSON("formulabar") , m_bHasTopLevelDialog(false) , m_bIsNotebookbar(false) + , m_bSentInitialUpdate(false) , m_aWindowToRelease(nullptr) { vcl::Window* pRoot = m_xBuilder->get_widget_root(); @@ -839,6 +843,7 @@ std::unique_ptr<weld::Dialog> JSInstanceBuilder::weld_dialog(const OString& id) initializeSender(GetNotifierWindow(), GetContentWindow(), GetTypeOfJSON()); sendFullUpdate(); + m_bSentInitialUpdate = true; } return pRet; @@ -867,6 +872,7 @@ std::unique_ptr<weld::Assistant> JSInstanceBuilder::weld_assistant(const OString initializeSender(GetNotifierWindow(), GetContentWindow(), GetTypeOfJSON()); sendFullUpdate(); + m_bSentInitialUpdate = true; } return pRet; @@ -908,6 +914,12 @@ std::unique_ptr<weld::Container> JSInstanceBuilder::weld_container(const OString if (pWeldWidget) RememberWidget(id, pWeldWidget.get()); + if (!m_bSentInitialUpdate) + { + m_bSentInitialUpdate = true; + sendFullUpdate(); + } + return pWeldWidget; }