vcl/Library_vclplug_qt5.mk | 1 vcl/Library_vclplug_qt6.mk | 1 vcl/inc/qt5/QtInstance.hxx | 5 vcl/inc/qt5/QtInstanceBuilder.hxx | 79 ++++++++++ vcl/inc/qt6/QtInstanceBuilder.hxx | 1 vcl/qt5/QtInstance.cxx | 53 ++++--- vcl/qt5/QtInstanceBuilder.cxx | 285 ++++++++++++++++++++++++++++++++++++++ vcl/qt6/QtInstanceBuilder.cxx | 1 8 files changed, 405 insertions(+), 21 deletions(-)
New commits: commit 10590d4f1f072630238a1e62fe48afb20ab41644 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Wed Sep 18 10:24:36 2024 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Wed Sep 18 20:01:45 2024 +0200 tdf#130857 qt weld: Move logic to find native Qt parent to helper Move the logic to find a QWidget parent mostly introduced in commit 1e2836665a1839f61cd8bfa46c54687f010e7e9d Author: Michael Weghorn <m.wegh...@posteo.de> Date: Fri Aug 30 18:17:53 2024 +0200 tdf#162696 tdf#130857 qt weld: Get parent via SalInstanceWidget to a helper method, for reuse in `QtInstance::CreateBuilder` in an upcoming commit. Change-Id: Ied41e7f5054f08382668292042f2a9978c6bed91 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173593 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/vcl/inc/qt5/QtInstance.hxx b/vcl/inc/qt5/QtInstance.hxx index df4a5eeaf26a..f82def9c830c 100644 --- a/vcl/inc/qt5/QtInstance.hxx +++ b/vcl/inc/qt5/QtInstance.hxx @@ -74,6 +74,8 @@ class VCLPLUG_QT_PUBLIC QtInstance : public QObject, DECL_DLLPRIVATE_LINK(updateStyleHdl, Timer*, void); void AfterAppInit() override; + static QWidget* GetNativeParentFromWeldParent(weld::Widget* pParent); + private Q_SLOTS: bool ImplYield(bool bWait, bool bHandleAllCurrentEvents); static void deleteObjectLater(QObject* pObject); diff --git a/vcl/qt5/QtInstance.cxx b/vcl/qt5/QtInstance.cxx index da28848d1520..fbfc06ac61ee 100644 --- a/vcl/qt5/QtInstance.cxx +++ b/vcl/qt5/QtInstance.cxx @@ -798,6 +798,27 @@ void QtInstance::setActivePopup(QtFrame* pFrame) m_pActivePopup = pFrame; } +QWidget* QtInstance::GetNativeParentFromWeldParent(weld::Widget* pParent) +{ + if (!pParent) + return nullptr; + + if (QtInstanceWidget* pQtInstanceWidget = dynamic_cast<QtInstanceWidget*>(pParent)) + return pQtInstanceWidget->getQWidget(); + + // the parent is not welded/not a native Qt widget; get QWidget via frame + if (SalInstanceWidget* pSalWidget = dynamic_cast<SalInstanceWidget*>(pParent)) + { + if (vcl::Window* pWindow = pSalWidget->getWidget()) + { + if (QtFrame* pFrame = static_cast<QtFrame*>(pWindow->ImplGetFrame())) + return pFrame->GetQWidget(); + } + } + + return nullptr; +} + std::unique_ptr<weld::Builder> QtInstance::CreateBuilder(weld::Widget* pParent, const OUString& rUIRoot, const OUString& rUIFile) { @@ -829,27 +850,7 @@ weld::MessageDialog* QtInstance::CreateMessageDialog(weld::Widget* pParent, } else { - QWidget* pQtParent = nullptr; - if (pParent) - { - if (QtInstanceWidget* pQtInstanceWidget = dynamic_cast<QtInstanceWidget*>(pParent)) - { - pQtParent = pQtInstanceWidget->getQWidget(); - } - else - { - // the parent is not welded/not a native Qt widget; get QWidget via frame - if (SalInstanceWidget* pSalWidget = dynamic_cast<SalInstanceWidget*>(pParent)) - { - if (vcl::Window* pWindow = pSalWidget->getWidget()) - { - if (QtFrame* pFrame = static_cast<QtFrame*>(pWindow->ImplGetFrame())) - pQtParent = pFrame->GetQWidget(); - } - } - } - } - + QWidget* pQtParent = GetNativeParentFromWeldParent(pParent); QMessageBox* pMessageBox = new QMessageBox(pQtParent); pMessageBox->setText(toQString(rPrimaryMessage)); pMessageBox->setIcon(vclMessageTypeToQtIcon(eMessageType)); commit 9b3a2996e710fee11145dcbbe38a6f1e6f646ec8 Author: OmkarAcharekar <omkarachareka...@gmail.com> AuthorDate: Wed Sep 18 09:35:09 2024 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Wed Sep 18 20:01:32 2024 +0200 tdf#130857 qt weld: Add QtInstanceBuilder skeleton Add new `QtInstanceBuilder` that derives from `weld::Builder` and is meant to use `weld::Widget` implementations using native Qt widgets. Override `SalInstance::CreateBuilder` in `QtInstance` to return an instance of the new `QtInstanceBuilder` for UI files that that one can handle/supports. As of now, `QtInstanceBuilder` doesn't yet implement what's needed, so `QtInstanceBuilder::IsUIFileSupported` currently still always returns `false`, meaning that `SalInstanceBuilder` is still always used in practice. The idea is to implement funcationality needed for a specific UI file/dialog in `QtInstanceBuilder`, then add it to the set of supported UI files in `QtInstanceBuilder::IsUIFileSupported`. This allows looking at one .ui file at a time and only having to implement what is relevant for that particular one, without having to implement the full weld API at once. The use of `QtInstanceBuilder` can completely be disabled by starting LO with environment variable `SAL_VCL_QT_NO_WELDED_WIDGETS` set. This commit is mostly extraced from Omkar Acharekar's WIP Gerrit change [1] (patch set 22) with some further adjustments by Michael Weghorn. Patch set 23 of that WIP Gerrit change demonstrates adding support for a dialog (the "Save Document?" one), but still needs more work. [1] https://gerrit.libreoffice.org/c/core/+/161831 Co-authored-by: Michael Weghorn <m.wegh...@posteo.de> Change-Id: If2d1ea30d43c2c1d84d64e577035489c8e158a7c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173592 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/vcl/Library_vclplug_qt5.mk b/vcl/Library_vclplug_qt5.mk index bcd384bac1d6..b153e529c658 100644 --- a/vcl/Library_vclplug_qt5.mk +++ b/vcl/Library_vclplug_qt5.mk @@ -93,6 +93,7 @@ $(eval $(call gb_Library_add_exception_objects,vclplug_qt5,\ vcl/qt5/QtGraphics_Text \ vcl/qt5/QtInstance \ vcl/qt5/QtInstance_Print \ + vcl/qt5/QtInstanceBuilder \ vcl/qt5/QtInstanceButton \ vcl/qt5/QtInstanceContainer \ vcl/qt5/QtInstanceDialog \ diff --git a/vcl/Library_vclplug_qt6.mk b/vcl/Library_vclplug_qt6.mk index 8bc7001ad5ac..a67231825a2e 100644 --- a/vcl/Library_vclplug_qt6.mk +++ b/vcl/Library_vclplug_qt6.mk @@ -92,6 +92,7 @@ $(eval $(call gb_Library_add_exception_objects,vclplug_qt6,\ vcl/qt6/QtGraphics_Text \ vcl/qt6/QtInstance \ vcl/qt6/QtInstance_Print \ + vcl/qt6/QtInstanceBuilder \ vcl/qt6/QtInstanceButton \ vcl/qt6/QtInstanceContainer \ vcl/qt6/QtInstanceDialog \ diff --git a/vcl/inc/qt5/QtBuilder.hxx b/vcl/inc/qt5/QtBuilder.hxx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/vcl/inc/qt5/QtInstance.hxx b/vcl/inc/qt5/QtInstance.hxx index 3d3aba9a2048..df4a5eeaf26a 100644 --- a/vcl/inc/qt5/QtInstance.hxx +++ b/vcl/inc/qt5/QtInstance.hxx @@ -144,6 +144,9 @@ public: virtual bool DoYield(bool bWait, bool bHandleAllCurrentEvents) override; virtual bool AnyInput(VclInputFlags nType) override; + + std::unique_ptr<weld::Builder> CreateBuilder(weld::Widget* pParent, const OUString& rUIRoot, + const OUString& rUIFile) override; virtual weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType, VclButtonsType eButtonType, diff --git a/vcl/inc/qt5/QtInstanceBuilder.hxx b/vcl/inc/qt5/QtInstanceBuilder.hxx new file mode 100644 index 000000000000..747582d6f69c --- /dev/null +++ b/vcl/inc/qt5/QtInstanceBuilder.hxx @@ -0,0 +1,79 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include <string_view> + +#include <QtWidgets/QWidget> + +#include <rtl/ustring.hxx> +#include <vcl/weld.hxx> + +class QtInstanceBuilder : public weld::Builder +{ +public: + QtInstanceBuilder(QWidget* pParent, std::u16string_view sUIRoot, + const std::u16string_view sUIFile); + ~QtInstanceBuilder(); + + static bool IsUIFileSupported(const OUString& rUIFile); + + virtual std::unique_ptr<weld::MessageDialog> weld_message_dialog(const OUString& id) override; + virtual std::unique_ptr<weld::Dialog> weld_dialog(const OUString&) override; + virtual std::unique_ptr<weld::Assistant> weld_assistant(const OUString&) override; + virtual std::unique_ptr<weld::Window> create_screenshot_window() override; + virtual std::unique_ptr<weld::Widget> weld_widget(const OUString&) override; + virtual std::unique_ptr<weld::Container> weld_container(const OUString&) override; + virtual std::unique_ptr<weld::Box> weld_box(const OUString&) override; + virtual std::unique_ptr<weld::Paned> weld_paned(const OUString&) override; + virtual std::unique_ptr<weld::Frame> weld_frame(const OUString&) override; + virtual std::unique_ptr<weld::ScrolledWindow> + weld_scrolled_window(const OUString&, bool bUserManagedScrolling = false) override; + virtual std::unique_ptr<weld::Notebook> weld_notebook(const OUString&) override; + virtual std::unique_ptr<weld::Button> weld_button(const OUString&) override; + virtual std::unique_ptr<weld::MenuButton> weld_menu_button(const OUString&) override; + virtual std::unique_ptr<weld::MenuToggleButton> + weld_menu_toggle_button(const OUString&) override; + virtual std::unique_ptr<weld::LinkButton> weld_link_button(const OUString&) override; + virtual std::unique_ptr<weld::ToggleButton> weld_toggle_button(const OUString&) override; + virtual std::unique_ptr<weld::RadioButton> weld_radio_button(const OUString&) override; + virtual std::unique_ptr<weld::CheckButton> weld_check_button(const OUString&) override; + virtual std::unique_ptr<weld::Scale> weld_scale(const OUString&) override; + virtual std::unique_ptr<weld::ProgressBar> weld_progress_bar(const OUString&) override; + virtual std::unique_ptr<weld::LevelBar> weld_level_bar(const OUString&) override; + virtual std::unique_ptr<weld::Spinner> weld_spinner(const OUString&) override; + virtual std::unique_ptr<weld::Image> weld_image(const OUString&) override; + virtual std::unique_ptr<weld::Calendar> weld_calendar(const OUString&) override; + virtual std::unique_ptr<weld::Entry> weld_entry(const OUString&) override; + virtual std::unique_ptr<weld::SpinButton> weld_spin_button(const OUString&) override; + virtual std::unique_ptr<weld::MetricSpinButton> weld_metric_spin_button(const OUString&, + FieldUnit) override; + virtual std::unique_ptr<weld::FormattedSpinButton> + weld_formatted_spin_button(const OUString&) override; + virtual std::unique_ptr<weld::ComboBox> weld_combo_box(const OUString&) override; + virtual std::unique_ptr<weld::EntryTreeView> + weld_entry_tree_view(const OUString&, const OUString&, const OUString&) override; + virtual std::unique_ptr<weld::TreeView> weld_tree_view(const OUString&) override; + virtual std::unique_ptr<weld::IconView> weld_icon_view(const OUString&) override; + virtual std::unique_ptr<weld::Label> weld_label(const OUString&) override; + virtual std::unique_ptr<weld::TextView> weld_text_view(const OUString&) override; + virtual std::unique_ptr<weld::Expander> weld_expander(const OUString&) override; + virtual std::unique_ptr<weld::DrawingArea> + weld_drawing_area(const OUString&, const a11yref& rA11yImpl = nullptr, + FactoryFunction pUITestFactoryFunction = nullptr, + void* pUserData = nullptr) override; + virtual std::unique_ptr<weld::Menu> weld_menu(const OUString&) override; + virtual std::unique_ptr<weld::Popover> weld_popover(const OUString&) override; + virtual std::unique_ptr<weld::Toolbar> weld_toolbar(const OUString&) override; + virtual std::unique_ptr<weld::Scrollbar> weld_scrollbar(const OUString&) override; + virtual std::unique_ptr<weld::SizeGroup> create_size_group() override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/inc/qt5/QtMessageBox.hxx b/vcl/inc/qt5/QtMessageBox.hxx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/vcl/inc/qt6/QtInstanceBuilder.hxx b/vcl/inc/qt6/QtInstanceBuilder.hxx new file mode 100644 index 000000000000..afcd3094c331 --- /dev/null +++ b/vcl/inc/qt6/QtInstanceBuilder.hxx @@ -0,0 +1 @@ +#include "../qt5/QtInstanceBuilder.hxx" \ No newline at end of file diff --git a/vcl/qt5/QtBuilder.cxx b/vcl/qt5/QtBuilder.cxx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/vcl/qt5/QtInstance.cxx b/vcl/qt5/QtInstance.cxx index ea22cee085ea..da28848d1520 100644 --- a/vcl/qt5/QtInstance.cxx +++ b/vcl/qt5/QtInstance.cxx @@ -28,6 +28,7 @@ #include <QtDragAndDrop.hxx> #include <QtFilePicker.hxx> #include <QtFrame.hxx> +#include <QtInstanceBuilder.hxx> #include <QtMenu.hxx> #include <QtObject.hxx> #include <QtOpenGLContext.hxx> @@ -797,6 +798,15 @@ void QtInstance::setActivePopup(QtFrame* pFrame) m_pActivePopup = pFrame; } +std::unique_ptr<weld::Builder> +QtInstance::CreateBuilder(weld::Widget* pParent, const OUString& rUIRoot, const OUString& rUIFile) +{ + if (!QtData::noWeldedWidgets() && QtInstanceBuilder::IsUIFileSupported(rUIFile)) + return std::make_unique<QtInstanceBuilder>(nullptr, rUIRoot, rUIFile); + else + return SalInstance::CreateBuilder(pParent, rUIRoot, rUIFile); +} + weld::MessageDialog* QtInstance::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType, VclButtonsType eButtonsType, diff --git a/vcl/qt5/QtInstanceBuilder.cxx b/vcl/qt5/QtInstanceBuilder.cxx new file mode 100644 index 000000000000..78d0622be3d3 --- /dev/null +++ b/vcl/qt5/QtInstanceBuilder.cxx @@ -0,0 +1,285 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <QtInstanceBuilder.hxx> + +#include <unordered_set> + +QtInstanceBuilder::QtInstanceBuilder(QWidget*, std::u16string_view, std::u16string_view) {} + +QtInstanceBuilder::~QtInstanceBuilder() {} + +bool QtInstanceBuilder::IsUIFileSupported(const OUString& rUIFile) +{ + // set of supported UI files - none yet + // + // The idea is to implement funcationality needed for a specific UI file/dialog + // in QtInstanceBuilder, then add it to the set of supported UI files here. + // This allows looking at one .ui file at a time and only having to implement + // what is relevant for that particular one, without having to implement the full + // weld API at once. + // + // see demo/WIP change: https://gerrit.libreoffice.org/c/core/+/161831 + // for an example + static std::unordered_set<OUString> aSupportedUIFiles = {}; + + return aSupportedUIFiles.contains(rUIFile); +} + +std::unique_ptr<weld::MessageDialog> QtInstanceBuilder::weld_message_dialog(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Dialog> QtInstanceBuilder::weld_dialog(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Assistant> QtInstanceBuilder::weld_assistant(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Window> QtInstanceBuilder::create_screenshot_window() +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Widget> QtInstanceBuilder::weld_widget(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Container> QtInstanceBuilder::weld_container(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Box> QtInstanceBuilder::weld_box(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Paned> QtInstanceBuilder::weld_paned(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Frame> QtInstanceBuilder::weld_frame(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::ScrolledWindow> QtInstanceBuilder::weld_scrolled_window(const OUString&, bool) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Notebook> QtInstanceBuilder::weld_notebook(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Button> QtInstanceBuilder::weld_button(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::MenuButton> QtInstanceBuilder::weld_menu_button(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::MenuToggleButton> QtInstanceBuilder::weld_menu_toggle_button(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::LinkButton> QtInstanceBuilder::weld_link_button(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::ToggleButton> QtInstanceBuilder::weld_toggle_button(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::RadioButton> QtInstanceBuilder::weld_radio_button(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::CheckButton> QtInstanceBuilder::weld_check_button(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Scale> QtInstanceBuilder::weld_scale(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::ProgressBar> QtInstanceBuilder::weld_progress_bar(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::LevelBar> QtInstanceBuilder::weld_level_bar(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Spinner> QtInstanceBuilder::weld_spinner(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Image> QtInstanceBuilder::weld_image(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Calendar> QtInstanceBuilder::weld_calendar(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Entry> QtInstanceBuilder::weld_entry(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::SpinButton> QtInstanceBuilder::weld_spin_button(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::MetricSpinButton> QtInstanceBuilder::weld_metric_spin_button(const OUString&, + FieldUnit) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::FormattedSpinButton> +QtInstanceBuilder::weld_formatted_spin_button(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::ComboBox> QtInstanceBuilder::weld_combo_box(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::EntryTreeView> +QtInstanceBuilder::weld_entry_tree_view(const OUString&, const OUString&, const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::TreeView> QtInstanceBuilder::weld_tree_view(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::IconView> QtInstanceBuilder::weld_icon_view(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Label> QtInstanceBuilder::weld_label(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::TextView> QtInstanceBuilder::weld_text_view(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Expander> QtInstanceBuilder::weld_expander(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::DrawingArea> +QtInstanceBuilder::weld_drawing_area(const OUString&, const a11yref&, FactoryFunction, void*) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Menu> QtInstanceBuilder::weld_menu(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Popover> QtInstanceBuilder::weld_popover(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Toolbar> QtInstanceBuilder::weld_toolbar(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::Scrollbar> QtInstanceBuilder::weld_scrollbar(const OUString&) +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +std::unique_ptr<weld::SizeGroup> QtInstanceBuilder::create_size_group() +{ + assert(false && "Not implemented yet"); + return nullptr; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/qt6/QtInstanceBuilder.cxx b/vcl/qt6/QtInstanceBuilder.cxx new file mode 100644 index 000000000000..c645f3708ee3 --- /dev/null +++ b/vcl/qt6/QtInstanceBuilder.cxx @@ -0,0 +1 @@ +#include "../qt5/QtInstanceBuilder.cxx" \ No newline at end of file