diff options
Diffstat (limited to 'toolkit')
-rw-r--r-- | toolkit/inc/awt/vclxtabpagecontainer.hxx | 5 | ||||
-rw-r--r-- | toolkit/inc/controls/tabpagecontainer.hxx | 3 | ||||
-rw-r--r-- | toolkit/source/awt/vclxtabpagecontainer.cxx | 23 | ||||
-rw-r--r-- | toolkit/source/controls/tabpagecontainer.cxx | 9 |
4 files changed, 40 insertions, 0 deletions
diff --git a/toolkit/inc/awt/vclxtabpagecontainer.hxx b/toolkit/inc/awt/vclxtabpagecontainer.hxx index fee096cc04ba..54fe0e0503aa 100644 --- a/toolkit/inc/awt/vclxtabpagecontainer.hxx +++ b/toolkit/inc/awt/vclxtabpagecontainer.hxx @@ -20,6 +20,7 @@ #pragma once #include <com/sun/star/container/XContainerListener.hpp> +#include <com/sun/star/beans/XPropertiesChangeListener.hpp> #include <com/sun/star/awt/tab/XTabPageContainer.hpp> #include <cppuhelper/implbase.hxx> #include <toolkit/helper/listenermultiplexer.hxx> @@ -28,6 +29,7 @@ typedef cppu::ImplInheritanceHelper< VCLXContainer, css::awt::tab::XTabPageContainer, + css::beans::XPropertiesChangeListener, css::container::XContainerListener > VCLXTabPageContainer_Base; class VCLXTabPageContainer final : public VCLXTabPageContainer_Base @@ -56,6 +58,9 @@ public: virtual void SAL_CALL elementRemoved( const css::container::ContainerEvent& Event ) override; virtual void SAL_CALL elementReplaced( const css::container::ContainerEvent& Event ) override; + // css::beans::XPropertiesChangeListener + virtual void SAL_CALL propertiesChange( const ::css::uno::Sequence< ::css::beans::PropertyChangeEvent >& aEvent ) override; + // css::awt::XVclWindowPeer void SAL_CALL setProperty( const OUString& PropertyName, const css::uno::Any& Value ) override; private: diff --git a/toolkit/inc/controls/tabpagecontainer.hxx b/toolkit/inc/controls/tabpagecontainer.hxx index 9873ad3272b1..e00c0bd89e58 100644 --- a/toolkit/inc/controls/tabpagecontainer.hxx +++ b/toolkit/inc/controls/tabpagecontainer.hxx @@ -111,6 +111,9 @@ public: virtual void SAL_CALL addTabPageContainerListener( const css::uno::Reference< css::awt::tab::XTabPageContainerListener >& listener ) override; virtual void SAL_CALL removeTabPageContainerListener( const css::uno::Reference< css::awt::tab::XTabPageContainerListener >& listener ) override; + // css::beans::XPropertiesChangeListener + virtual void SAL_CALL propertiesChange( const ::css::uno::Sequence< ::css::beans::PropertyChangeEvent >& aEvent ) override; + virtual void SAL_CALL addControl( const OUString& Name, const css::uno::Reference< css::awt::XControl >& Control ) override; // css::lang::XServiceInfo DECLIMPL_SERVICEINFO_DERIVED( UnoControlTabPageContainer, UnoControlBase, "com.sun.star.awt.tab.UnoControlTabPageContainer" ) diff --git a/toolkit/source/awt/vclxtabpagecontainer.cxx b/toolkit/source/awt/vclxtabpagecontainer.cxx index 0bfacc695136..bc5d19964d2e 100644 --- a/toolkit/source/awt/vclxtabpagecontainer.cxx +++ b/toolkit/source/awt/vclxtabpagecontainer.cxx @@ -21,6 +21,7 @@ #include <com/sun/star/awt/tab/XTabPageModel.hpp> #include <com/sun/star/awt/XControl.hpp> #include <sal/log.hxx> +#include <toolkit/helper/property.hxx> #include <vcl/image.hxx> #include <vcl/tabpage.hxx> #include <vcl/tabctrl.hxx> @@ -208,4 +209,26 @@ void SAL_CALL VCLXTabPageContainer::elementReplaced( const css::container::Conta { } +void VCLXTabPageContainer::propertiesChange(const::css::uno::Sequence<PropertyChangeEvent>& rEvents) +{ + SolarMutexGuard aGuard; + VclPtr<TabControl> pTabCtrl = GetAs<TabControl>(); + if (!pTabCtrl) + return; + + for (const beans::PropertyChangeEvent& rEvent : rEvents) { + // handle property changes for tab pages + Reference< css::awt::tab::XTabPageModel > xTabPageModel(rEvent.Source, uno::UNO_QUERY); + if (!xTabPageModel.is()) + continue; + + const sal_Int16 nId = xTabPageModel->getTabPageID(); + if (rEvent.PropertyName == GetPropertyName(BASEPROPERTY_ENABLED)) { + pTabCtrl->SetPageEnabled(nId, xTabPageModel->getEnabled()); + } else if (rEvent.PropertyName == GetPropertyName(BASEPROPERTY_TITLE)) { + pTabCtrl->SetPageText(nId, xTabPageModel->getTitle()); + } + } +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/toolkit/source/controls/tabpagecontainer.cxx b/toolkit/source/controls/tabpagecontainer.cxx index 25c50c387abe..979718e73865 100644 --- a/toolkit/source/controls/tabpagecontainer.cxx +++ b/toolkit/source/controls/tabpagecontainer.cxx @@ -294,6 +294,15 @@ void SAL_CALL UnoControlTabPageContainer::removeTabPageContainerListener( const m_aTabPageListeners.removeInterface( listener ); } +void UnoControlTabPageContainer::propertiesChange(const::css::uno::Sequence<PropertyChangeEvent> &aEvent) +{ + UnoControlTabPageContainer_Base::propertiesChange(aEvent); + + SolarMutexGuard aSolarGuard; + Reference< XPropertiesChangeListener > xPropertiesChangeListener( getPeer(), UNO_QUERY_THROW ); + return xPropertiesChangeListener->propertiesChange(aEvent); +} + void UnoControlTabPageContainer::updateFromModel() { UnoControlTabPageContainer_Base::updateFromModel(); |