From 457649d02f23446ed2d28433a5aedecf6a49aed7 Mon Sep 17 00:00:00 2001 From: Szymon Kłos Date: Wed, 12 May 2021 09:18:25 +0200 Subject: jsdialog: sidebar: send sidebar Panels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ia5a936c44e5d83fd4626098bcc027b0382523231 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116098 Tested-by: Jenkins CollaboraOffice Reviewed-by: Szymon Kłos Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119511 Tested-by: Jenkins --- vcl/jsdialog/enabled.cxx | 44 +++++++++++++++++++++++++++++++++++++ vcl/jsdialog/jsdialogbuilder.cxx | 47 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) (limited to 'vcl/jsdialog') diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx index 928b205d4020..7160b8bcc38d 100644 --- a/vcl/jsdialog/enabled.cxx +++ b/vcl/jsdialog/enabled.cxx @@ -58,6 +58,50 @@ bool isBuilderEnabled(std::u16string_view rUIFile, bool bMobile) return false; } +bool isBuilderEnabledForSidebar(std::u16string_view rUIFile) +{ + if (rUIFile == u"sfx/ui/panel.ui" || rUIFile == u"svx/ui/sidebartextpanel.ui" + || rUIFile == u"svx/ui/sidebarstylespanel.ui" || rUIFile == u"svx/ui/sidebarparagraph.ui" + || rUIFile == u"svx/ui/sidebarlists.ui" || rUIFile == u"svx/ui/sidebararea.ui" + || rUIFile == u"svx/ui/sidebarfontwork.ui" || rUIFile == u"svx/ui/sidebarshadow.ui" + || rUIFile == u"svx/ui/sidebareffect.ui" || rUIFile == u"svx/ui/sidebargraphic.ui" + || rUIFile == u"svx/ui/sidebarline.ui" || rUIFile == u"svx/ui/sidebarpossize.ui" + || rUIFile == u"svx/ui/defaultshapespanel.ui" || rUIFile == u"svx/ui/mediaplayback.ui" + || rUIFile == u"svx/ui/sidebargallery.ui" || rUIFile == u"sfx/ui/templatepanel.ui" + || rUIFile == u"svx/ui/sidebarempty.ui" + || rUIFile == u"modules/schart/ui/sidebarelements.ui" + || rUIFile == u"modules/schart/ui/sidebartype.ui" + || rUIFile == u"modules/schart/ui/sidebarseries.ui" + || rUIFile == u"modules/schart/ui/sidebaraxis.ui" + || rUIFile == u"modules/schart/ui/sidebarerrorbar.ui" + || rUIFile == u"modules/simpress/ui/customanimationspanel.ui" + || rUIFile == u"modules/simpress/ui/layoutpanel.ui" + || rUIFile == u"modules/simpress/ui/masterpagepanel.ui" + || rUIFile == u"modules/simpress/ui/slidetransitionspanel.ui" + || rUIFile == u"modules/simpress/ui/tabledesignpanel.ui" + || rUIFile == u"modules/simpress/ui/navigatorpanel.ui" + || rUIFile == u"modules/simpress/ui/sidebarslidebackground.ui" + || rUIFile == u"modules/scalc/ui/sidebaralignment.ui" + || rUIFile == u"modules/scalc/ui/sidebarcellappearance.ui" + || rUIFile == u"modules/scalc/ui/sidebarnumberformat.ui" + || rUIFile == u"modules/scalc/ui/navigatorpanel.ui" + || rUIFile == u"modules/scalc/ui/functionpanel.ui" + || rUIFile == u"modules/swriter/ui/pagestylespanel.ui" + || rUIFile == u"modules/swriter/ui/pageformatpanel.ui" + || rUIFile == u"modules/swriter/ui/pageheaderpanel.ui" + || rUIFile == u"modules/swriter/ui/pagefooterpanel.ui" + || rUIFile == u"modules/swriter/ui/sidebarwrap.ui" + || rUIFile == u"modules/swriter/ui/navigatorpanel.ui" + || rUIFile == u"modules/swriter/ui/managechangessidebar.ui" + || rUIFile == u"svx/ui/inspectortextpanel.ui" + || rUIFile == u"modules/swriter/ui/sidebarstylepresets.ui" + || rUIFile == u"modules/swriter/ui/sidebartheme.ui" + || rUIFile == u"modules/swriter/ui/sidebartableedit.ui") + return true; + + return false; +} + bool isInterimBuilderEnabledForNotebookbar(std::u16string_view rUIFile) { if (rUIFile == u"svx/ui/stylespreview.ui" || rUIFile == u"modules/scalc/ui/numberbox.ui") diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index 5a57e63dfbce..c8aa2d1d6d6c 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -164,6 +164,9 @@ JSDialogNotifyIdle::generateWidgetUpdate(VclPtr pWindow) const { std::unique_ptr aJsonWriter(new tools::JsonWriter()); + if (!pWindow || !m_aNotifierWindow) + return aJsonWriter; + aJsonWriter->put("jsontype", m_sTypeOfJSON); aJsonWriter->put("action", "update"); aJsonWriter->put("id", m_aNotifierWindow->GetLOKWindowId()); @@ -391,6 +394,7 @@ JSInstanceBuilder::JSInstanceBuilder(weld::Widget* pParent, const OUString& rUIR , m_bIsNotebookbar(false) { vcl::Window* pRoot = m_xBuilder->get_widget_root(); + if (pRoot && pRoot->GetParent()) { m_aParentDialog = pRoot->GetParent()->GetParentWithLOKNotifier(); @@ -402,6 +406,41 @@ JSInstanceBuilder::JSInstanceBuilder(weld::Widget* pParent, const OUString& rUIR initializeSender(GetNotifierWindow(), GetContentWindow(), GetTypeOfJSON()); } +// used for sidebar panels +JSInstanceBuilder::JSInstanceBuilder(weld::Widget* pParent, const OUString& rUIRoot, + const OUString& rUIFile, sal_uInt64 nLOKWindowId) + : SalInstanceBuilder(extract_sal_widget(pParent), rUIRoot, rUIFile) + , m_nWindowId(nLOKWindowId) + , m_aParentDialog(nullptr) + , m_aContentWindow(nullptr) + , m_sTypeOfJSON("sidebar") + , m_bHasTopLevelDialog(false) + , m_bIsNotebookbar(false) +{ + vcl::Window* pRoot = m_xBuilder->get_widget_root(); + + m_aParentDialog = pRoot->GetParentWithLOKNotifier(); + + if (rUIFile == "sfx/ui/panel.ui") + { + // builder for Panel, get SidebarDockingWindow as m_aContentWindow + m_aContentWindow = pRoot; + for (int i = 0; i < 7 && m_aContentWindow; i++) + m_aContentWindow = m_aContentWindow->GetParent(); + } + else + { + // builder for PanelLayout, get SidebarDockingWindow as m_aContentWindow + m_aContentWindow = pRoot; + for (int i = 0; i < 9 && m_aContentWindow; i++) + m_aContentWindow = m_aContentWindow->GetParent(); + } + + InsertWindowToMap(m_nWindowId); + + initializeSender(GetNotifierWindow(), GetContentWindow(), GetTypeOfJSON()); +} + // used for notebookbar JSInstanceBuilder::JSInstanceBuilder(vcl::Window* pParent, const OUString& rUIRoot, const OUString& rUIFile, @@ -477,6 +516,14 @@ JSInstanceBuilder* JSInstanceBuilder::CreateAutofilterWindowBuilder(vcl::Window* return new JSInstanceBuilder(pParent, rUIRoot, rUIFile); } +JSInstanceBuilder* JSInstanceBuilder::CreateSidebarBuilder(weld::Widget* pParent, + const OUString& rUIRoot, + const OUString& rUIFile, + sal_uInt64 nLOKWindowId) +{ + return new JSInstanceBuilder(pParent, rUIRoot, rUIFile, nLOKWindowId); +} + JSInstanceBuilder::~JSInstanceBuilder() { if (m_nWindowId && (m_bHasTopLevelDialog || m_bIsNotebookbar)) -- cgit