ooo-build r12605 - in trunk: . patches/test



Author: kyoshida
Date: Tue May 20 04:07:34 2008
New Revision: 12605
URL: http://svn.gnome.org/viewvc/ooo-build?rev=12605&view=rev

Log:
2008-05-20  Kohei Yoshida  <kyoshida novell com>

	* patches/test/sfx-broadcaster-hashset-automation.diff:
	* patches/test/sfx-broadcaster-hashset-basic.diff:
	* patches/test/sfx-broadcaster-hashset-chart2.diff:
	* patches/test/sfx-broadcaster-hashset-sc.diff:
	* patches/test/sfx-broadcaster-hashset-sd.diff:
	* patches/test/sfx-broadcaster-hashset-sfx2.diff:
	* patches/test/sfx-broadcaster-hashset-svtools.diff:
	* patches/test/sfx-broadcaster-hashset-svx.diff: experimental patch set
	to re-implement SfxBroadcaster and SfxListener with hashed containers.
	It doesn't quite work yet.


Added:
   trunk/patches/test/sfx-broadcaster-hashset-automation.diff
   trunk/patches/test/sfx-broadcaster-hashset-basic.diff
   trunk/patches/test/sfx-broadcaster-hashset-chart2.diff
   trunk/patches/test/sfx-broadcaster-hashset-sc.diff
   trunk/patches/test/sfx-broadcaster-hashset-sd.diff
   trunk/patches/test/sfx-broadcaster-hashset-sfx2.diff
   trunk/patches/test/sfx-broadcaster-hashset-svtools.diff
   trunk/patches/test/sfx-broadcaster-hashset-svx.diff
Modified:
   trunk/ChangeLog

Added: trunk/patches/test/sfx-broadcaster-hashset-automation.diff
==============================================================================
--- (empty file)
+++ trunk/patches/test/sfx-broadcaster-hashset-automation.diff	Tue May 20 04:07:34 2008
@@ -0,0 +1,16 @@
+diff --git a/automation/source/app/testbasi.cxx b/automation/source/app/testbasi.cxx
+index d5d8ee2..3f77243 100644
+--- automation/source/app/testbasi.cxx
++++ automation/source/app/testbasi.cxx
+@@ -152,9 +152,9 @@ void TTBasic::ReportRuntimeError( AppBasEd *pEditWin )
+ {
+ 	SbxVariableRef aDummy = new SbxVariable;
+ 	aDummy->SetUserData( 24 );  // ID_MaybeAddErr
+-	((TestToolObj*)pTestObject)->SFX_NOTIFY( pTestObject->GetBroadcaster(), xx, SbxHint( SBX_HINT_DATAWANTED, aDummy ), xx );
++	((TestToolObj*)pTestObject)->Notify( pTestObject->GetBroadcaster(), SbxHint( SBX_HINT_DATAWANTED, aDummy ) );
+ 	aDummy->SetUserData( 18 );  // ID_ExceptLog
+-	((TestToolObj*)pTestObject)->SFX_NOTIFY( pTestObject->GetBroadcaster(), xx, SbxHint( SBX_HINT_DATAWANTED, aDummy ), xx );
++	((TestToolObj*)pTestObject)->Notify( pTestObject->GetBroadcaster(), SbxHint( SBX_HINT_DATAWANTED, aDummy ) );
+ 	MyBasic::ReportRuntimeError( pEditWin );
+ }
+ 

Added: trunk/patches/test/sfx-broadcaster-hashset-basic.diff
==============================================================================
--- (empty file)
+++ trunk/patches/test/sfx-broadcaster-hashset-basic.diff	Tue May 20 04:07:34 2008
@@ -0,0 +1,28 @@
+diff --git a/basic/source/app/app.cxx b/basic/source/app/app.cxx
+index ff2be94..ffd1eff 100644
+--- basic/source/app/app.cxx
++++ basic/source/app/app.cxx
+@@ -828,8 +828,7 @@ void BasicFrame::SetAutoRun( BOOL bAuto )
+ 	bIsAutoRun = bAuto;
+ }
+ 
+-void BasicFrame::SFX_NOTIFY( SfxBroadcaster&, const TypeId&,
+-							const SfxHint& rHint, const TypeId& )
++void BasicFrame::Notify( SfxBroadcaster&, const SfxHint& rHint )
+ {
+ 	if ( rHint.ISA( TTExecutionStatusHint ) )
+ 	{
+diff --git a/basic/source/app/appbased.cxx b/basic/source/app/appbased.cxx
+index 06b59d6..3ea8541 100644
+--- basic/source/app/appbased.cxx
++++ basic/source/app/appbased.cxx
+@@ -108,8 +108,7 @@ AppBasEd::~AppBasEd()
+ 	pMod->SetName( CUniString("--").Append( pMod->GetName() ) );
+ }
+ 
+-void AppBasEd::SFX_NOTIFY( SfxBroadcaster&, const TypeId&,
+-							const SfxHint& rHint, const TypeId& )
++void AppBasEd::Notify( SfxBroadcaster&, const SfxHint& rHint )
+ {
+ 	const SfxSimpleHint* p = PTR_CAST(SfxSimpleHint,&rHint);
+ 	if( p )

Added: trunk/patches/test/sfx-broadcaster-hashset-chart2.diff
==============================================================================
--- (empty file)
+++ trunk/patches/test/sfx-broadcaster-hashset-chart2.diff	Tue May 20 04:07:34 2008
@@ -0,0 +1,34 @@
+diff --git a/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx b/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx
+index 4dba7a8..728e443 100644
+--- chart2/source/controller/drawinglayer/DrawViewWrapper.cxx
++++ chart2/source/controller/drawinglayer/DrawViewWrapper.cxx
+@@ -342,14 +342,14 @@ bool DrawViewWrapper::IsObjectHit( SdrObject* pObj, const Point& rPnt ) const
+     return false;
+ }
+ 
+-void DrawViewWrapper::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType)
++void DrawViewWrapper::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
+ {
+     //prevent wrong reselection of objects
+     SdrModel* pSdrModel( this->GetModel() );
+     if( pSdrModel && pSdrModel->isLocked() )
+         return;
+ 
+-    E3dView::SFX_NOTIFY(rBC, rBCType, rHint, rHintType);
++    E3dView::Notify(rBC, rHint);
+ 
+     const SdrHint* pSdrHint = dynamic_cast< const SdrHint* >( &rHint );
+     if( pSdrHint != 0 )
+diff --git a/chart2/source/controller/inc/DrawViewWrapper.hxx b/chart2/source/controller/inc/DrawViewWrapper.hxx
+index 6329d2e..b22b31b 100644
+--- chart2/source/controller/inc/DrawViewWrapper.hxx
++++ chart2/source/controller/inc/DrawViewWrapper.hxx
+@@ -94,7 +94,7 @@ public:
+     SdrObject* getNamedSdrObject( const rtl::OUString& rName ) const;
+     bool IsObjectHit( SdrObject* pObj, const Point& rPnt ) const;
+ 
+-    virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++    virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 
+     static SdrObject* getSdrObject( const ::com::sun::star::uno::Reference<
+                     ::com::sun::star::drawing::XShape >& xShape );

Added: trunk/patches/test/sfx-broadcaster-hashset-sc.diff
==============================================================================
--- (empty file)
+++ trunk/patches/test/sfx-broadcaster-hashset-sc.diff	Tue May 20 04:07:34 2008
@@ -0,0 +1,186 @@
+diff --git a/sc/inc/stlsheet.hxx b/sc/inc/stlsheet.hxx
+index 3a9248d..7b768b0 100644
+--- sc/inc/stlsheet.hxx
++++ sc/inc/stlsheet.hxx
+@@ -87,8 +87,7 @@ protected:
+ 							  SfxStyleFamily	eFamily,
+ 							  USHORT			nMask );
+ 
+-	virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-						 const SfxHint& rHint, const TypeId& rHintType );
++	virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ };
+ 
+ #endif	   // SC_STLSHEET_HXX
+diff --git a/sc/source/ui/docshell/servobj.cxx b/sc/source/ui/docshell/servobj.cxx
+index 8c31a1b..d71757b 100644
+--- sc/source/ui/docshell/servobj.cxx
++++ sc/source/ui/docshell/servobj.cxx
+@@ -209,8 +209,7 @@ BOOL __EXPORT ScServerObject::GetData(
+ 	return 0;
+ }
+ 
+-void __EXPORT ScServerObject::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-										 const SfxHint& rHint, const TypeId& rHintType )
++void __EXPORT ScServerObject::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+ {
+ 	BOOL bDataChanged = FALSE;
+ 
+diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx
+index c718207..7579cae 100644
+--- sc/source/ui/inc/docsh.hxx
++++ sc/source/ui/inc/docsh.hxx
+@@ -161,8 +161,7 @@ class SC_DLLPUBLIC ScDocShell: public SfxObjectShell, public SfxListener
+ 
+ protected:
+ 
+-	virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-						 const SfxHint& rHint, const TypeId& rHintType );
++	virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+ public:
+ 					TYPEINFO();
+diff --git a/sc/source/ui/inc/drawview.hxx b/sc/source/ui/inc/drawview.hxx
+index fa02725..3177ba9 100644
+--- sc/source/ui/inc/drawview.hxx
++++ sc/source/ui/inc/drawview.hxx
+@@ -71,8 +71,7 @@ public:
+ 	virtual			~ScDrawView();
+ 
+ 	virtual void	MarkListHasChanged();
+-	virtual void	SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-						 const SfxHint& rHint, const TypeId& rHintType );
++	virtual void	Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+     virtual void    DoConnect(SdrOle2Obj* pOleObj);
+ 
+diff --git a/sc/source/ui/inc/dwfunctr.hxx b/sc/source/ui/inc/dwfunctr.hxx
+index ce25f83..b1d0a08 100644
+--- sc/source/ui/inc/dwfunctr.hxx
++++ sc/source/ui/inc/dwfunctr.hxx
+@@ -146,8 +146,7 @@ public:
+ 					~ScFunctionDockWin();
+ 
+     using SfxDockingWindow::Notify;
+-	virtual void 	SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-							const SfxHint& rHint, const TypeId& rHintType );
++	virtual void 	Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+ 	void			SetSlotIDs( USHORT nLeft, USHORT nRight )
+ 						{ nLeftSlot = nLeft; nRightSlot = nRight; }
+diff --git a/sc/source/ui/inc/inputwin.hxx b/sc/source/ui/inc/inputwin.hxx
+index 02338fa..e32a9f5 100644
+--- sc/source/ui/inc/inputwin.hxx
++++ sc/source/ui/inc/inputwin.hxx
+@@ -140,8 +140,7 @@ protected:
+ 
+ 	virtual long	Notify( NotifyEvent& rNEvt );
+ 
+-	virtual void 	SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-							const SfxHint& rHint, const TypeId& rHintType );
++	virtual void 	Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+ private:
+ 	void			FillRangeNames();
+diff --git a/sc/source/ui/inc/navipi.hxx b/sc/source/ui/inc/navipi.hxx
+index 0c9e34a..27bf4a5 100644
+--- sc/source/ui/inc/navipi.hxx
++++ sc/source/ui/inc/navipi.hxx
+@@ -330,8 +330,7 @@ public:
+ 				~ScNavigatorDlg();
+ 
+     using Window::Notify;
+-	virtual void 	SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-							const SfxHint& rHint, const TypeId& rHintType );
++	virtual void 	Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+ 	void			CursorPosChanged();
+ 
+diff --git a/sc/source/ui/inc/prevwsh.hxx b/sc/source/ui/inc/prevwsh.hxx
+index 7fd20a3..02a57c4 100644
+--- sc/source/ui/inc/prevwsh.hxx
++++ sc/source/ui/inc/prevwsh.hxx
+@@ -118,8 +118,7 @@ public:
+                     GetSourceData() const       { return aSourceData; }
+ 	BYTE			GetSourceDesignMode() const	{ return nSourceDesignMode; }
+ 
+-	virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-						 const SfxHint& rHint, const TypeId& rHintType );
++	virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+ 	virtual SfxPrinter*		GetPrinter( BOOL bCreate = FALSE );
+     virtual USHORT          SetPrinter( SfxPrinter* pNewPrinter, USHORT nDiffFlags = SFX_PRINTER_ALL, bool bIsAPI=false );
+diff --git a/sc/source/ui/inc/servobj.hxx b/sc/source/ui/inc/servobj.hxx
+index 48a7dd4..e2bda29 100644
+--- sc/source/ui/inc/servobj.hxx
++++ sc/source/ui/inc/servobj.hxx
+@@ -69,8 +69,7 @@ public:
+ 				 			const String & rMimeType,
+ 				 			BOOL bSynchron = FALSE );
+ 
+-	virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-						 const SfxHint& rHint, const TypeId& rHintType );
++	virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+             void    EndListeningAll();
+ };
+ 
+diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx
+index c6dd6a5..b0f3949 100644
+--- sc/source/ui/inc/tabvwsh.hxx
++++ sc/source/ui/inc/tabvwsh.hxx
+@@ -357,8 +357,7 @@ public:
+ 	void			SetEditChartName(const String& aStr){aEditChartName=aStr;}
+ 	const String&	GetEditChartName() const;
+ 
+-	virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-						 const SfxHint& rHint, const TypeId& rHintType );
++	virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+     ScNavigatorSettings*    GetNavigatorSettings();
+ 
+diff --git a/sc/source/ui/view/drawvie3.cxx b/sc/source/ui/view/drawvie3.cxx
+index 9eb58ee..6a8af49 100644
+--- sc/source/ui/view/drawvie3.cxx
++++ sc/source/ui/view/drawvie3.cxx
+@@ -141,8 +141,7 @@ ScAnchorType ScDrawView::GetAnchor() const
+ 	return SCA_DONTKNOW;
+ }
+ 
+-void __EXPORT ScDrawView::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-									 const SfxHint& rHint, const TypeId& rHintType )
++void __EXPORT ScDrawView::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+ {
+ 	if (rHint.ISA(ScTabDeletedHint))						// Tabelle geloescht
+ 	{
+@@ -160,7 +159,7 @@ void __EXPORT ScDrawView::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType
+ 			UpdateWorkArea();
+ 	}
+ 	else
+-		FmFormView::SFX_NOTIFY( rBC,rBCType,rHint,rHintType );
++		FmFormView::Notify( rBC,rHint );
+ }
+ 
+ void ScDrawView::UpdateIMap( SdrObject* pObj )
+diff --git a/sc/source/ui/view/tabvwsh5.cxx b/sc/source/ui/view/tabvwsh5.cxx
+index e60c51c..56bac97 100644
+--- sc/source/ui/view/tabvwsh5.cxx
++++ sc/source/ui/view/tabvwsh5.cxx
+@@ -58,8 +58,7 @@
+ 
+ //==================================================================
+ 
+-void __EXPORT ScTabViewShell::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-						 const SfxHint& rHint, const TypeId& rHintType )
++void __EXPORT ScTabViewShell::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+ {
+ 	if (rHint.ISA(SfxSimpleHint))						// ohne Parameter
+ 	{
+@@ -313,7 +312,7 @@ void __EXPORT ScTabViewShell::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBC
+ 		}
+ 	}
+ 
+-	SfxViewShell::SFX_NOTIFY( rBC, rBCType, rHint, rHintType );
++	SfxViewShell::Notify( rBC, rHint );
+ }
+ 
+ //------------------------------------------------------------------

Added: trunk/patches/test/sfx-broadcaster-hashset-sd.diff
==============================================================================
--- (empty file)
+++ trunk/patches/test/sfx-broadcaster-hashset-sd.diff	Tue May 20 04:07:34 2008
@@ -0,0 +1,250 @@
+diff --git a/sd/inc/stlpool.hxx b/sd/inc/stlpool.hxx
+index 4e12eee..ff5fc49 100644
+--- sd/inc/stlpool.hxx
++++ sd/inc/stlpool.hxx
+@@ -135,7 +135,7 @@ protected:
+ 	using  SfxStyleSheetPool::Create;
+ 	virtual ~SdStyleSheetPool();
+ 
+-	virtual void 		SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType );
++	virtual void 		Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+ 	void AddStyleFamily( const SdPage* pPage );
+ 	void RemoveStyleFamily( const SdPage* pPage );
+diff --git a/sd/inc/stlsheet.hxx b/sd/inc/stlsheet.hxx
+index 3ee3e39..d5761f4 100644
+--- sd/inc/stlsheet.hxx
++++ sd/inc/stlsheet.hxx
+@@ -136,7 +136,7 @@ protected:
+ 	virtual void Load (SvStream& rIn, USHORT nVersion);
+ 	virtual void Store(SvStream& rOut);
+ 
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 	virtual 			~SdStyleSheet();
+ 
+ 	void throwIfDisposed() throw (::com::sun::star::uno::RuntimeException);
+diff --git a/sd/source/core/stlsheet.cxx b/sd/source/core/stlsheet.cxx
+index f36a91b..4da57c3 100644
+--- sd/source/core/stlsheet.cxx
++++ sd/source/core/stlsheet.cxx
+@@ -112,7 +112,7 @@ class ModifyListenerForewarder : public SfxListener
+ public:
+ 	ModifyListenerForewarder( SdStyleSheet* pStyleSheet );
+ 
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 
+ private:
+ 	SdStyleSheet* mpStyleSheet;
+@@ -128,7 +128,7 @@ ModifyListenerForewarder::ModifyListenerForewarder( SdStyleSheet* pStyleSheet )
+ 	}
+ }
+ 
+-void ModifyListenerForewarder::SFX_NOTIFY(SfxBroadcaster& /*rBC*/, const TypeId& /*rBCType*/, const SfxHint& /*rHint*/, const TypeId& /*rHintType*/)
++void ModifyListenerForewarder::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& /*rHint*/)
+ {
+ 	if( mpStyleSheet )
+ 		mpStyleSheet->notifyModifyListener();
+@@ -553,8 +553,7 @@ SdStyleSheet* SdStyleSheet::GetPseudoStyleSheet() const
+ |*
+ \************************************************************************/
+ 
+-void SdStyleSheet::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType,
+-							  const SfxHint& rHint, const TypeId& rHintType)
++void SdStyleSheet::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
+ {
+ 	// erstmal die Basisklassenfunktionalitaet
+ 	SfxStyleSheet::Notify(rBC, rHint);
+diff --git a/sd/source/ui/dlg/docprev.cxx b/sd/source/ui/dlg/docprev.cxx
+index 269006e..950fd0c 100644
+--- sd/source/ui/dlg/docprev.cxx
++++ sd/source/ui/dlg/docprev.cxx
+@@ -305,7 +305,7 @@ void SdDocPreviewWin::updateViewSettings()
+ 	Invalidate();
+ }
+ 
+-void SdDocPreviewWin::SFX_NOTIFY(SfxBroadcaster&, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType)
++void SdDocPreviewWin::Notify(SfxBroadcaster&, const SfxHint& rHint)
+ {
+ 	if( rHint.ISA( SfxSimpleHint ) && ( (SfxSimpleHint&) rHint ).GetId() == SFX_HINT_COLORS_CHANGED )
+ 	{
+diff --git a/sd/source/ui/inc/FormShellManager.hxx b/sd/source/ui/inc/FormShellManager.hxx
+index 0cd52a1..ff83426 100644
+--- sd/source/ui/inc/FormShellManager.hxx
++++ sd/source/ui/inc/FormShellManager.hxx
+@@ -138,11 +138,7 @@ private:
+         the factory working properly this method should not be necessary
+         (and may be removed in the future.)
+     */
+-	virtual void SFX_NOTIFY(
+-        SfxBroadcaster& rBC,
+-        const TypeId& rBCType,
+-        const SfxHint& rHint,
+-        const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ };
+ 
+ } // end of namespace sd
+diff --git a/sd/source/ui/inc/PreviewRenderer.hxx b/sd/source/ui/inc/PreviewRenderer.hxx
+index f0bcebb..e91a82a 100644
+--- sd/source/ui/inc/PreviewRenderer.hxx
++++ sd/source/ui/inc/PreviewRenderer.hxx
+@@ -116,10 +116,7 @@ public:
+         int nWidth);
+ 
+ protected:
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, 
+-        const TypeId& rBCType,
+-        const SfxHint& rHint, 
+-        const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 
+ private:
+     ::std::auto_ptr<VirtualDevice> mpPreviewDevice;
+diff --git a/sd/source/ui/inc/SlideView.hxx b/sd/source/ui/inc/SlideView.hxx
+index 6abf393..2d45737 100644
+--- sd/source/ui/inc/SlideView.hxx
++++ sd/source/ui/inc/SlideView.hxx
+@@ -107,8 +107,7 @@ public:
+ 	void		            AddToCache( SdPage* pPage, const Bitmap& rBitmap, long nZoom ); 
+ 	const GraphicObject*    GetFromCache( SdPage* pPage, long& rZoom, long nZoomTolerance ) const;
+ 
+-	virtual void        SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-							        const SfxHint& rHint, const TypeId& rHintType );
++	virtual void        Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+ 	virtual void        DoCut( ::Window* pWindow = NULL );
+ 	virtual void        DoCopy( ::Window* pWindow = NULL );
+diff --git a/sd/source/ui/inc/ViewShellBase.hxx b/sd/source/ui/inc/ViewShellBase.hxx
+index a59d6ca..c8912b6 100644
+--- sd/source/ui/inc/ViewShellBase.hxx
++++ sd/source/ui/inc/ViewShellBase.hxx
+@@ -262,10 +262,7 @@ public:
+ protected:
+ 	osl::Mutex maMutex;
+ 
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC,
+-        const TypeId& rBCType,
+-        const SfxHint& rHint,
+-        const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 
+     virtual void InitializeFramework (void);
+ 
+diff --git a/sd/source/ui/inc/docprev.hxx b/sd/source/ui/inc/docprev.hxx
+index 13434bd..10ef73d 100644
+--- sd/source/ui/inc/docprev.hxx
++++ sd/source/ui/inc/docprev.hxx
+@@ -67,7 +67,7 @@ protected:
+ 
+     svtools::ColorConfig maColorConfig;
+ 
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 
+ 	void updateViewSettings();
+ 
+diff --git a/sd/source/ui/inc/drawview.hxx b/sd/source/ui/inc/drawview.hxx
+index 4de544a..ea24ea7 100644
+--- sd/source/ui/inc/drawview.hxx
++++ sd/source/ui/inc/drawview.hxx
+@@ -65,8 +65,7 @@ public:
+ 
+ 	virtual BOOL SetAttributes(const SfxItemSet& rSet, BOOL bReplaceAll = FALSE);
+ 
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType,
+-							const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 
+ 	void	BlockPageOrderChangedHint(BOOL bBlock);
+ 
+diff --git a/sd/source/ui/slidesorter/view/SlideSorterView.cxx b/sd/source/ui/slidesorter/view/SlideSorterView.cxx
+index d4e5df4..114a42e 100644
+--- sd/source/ui/slidesorter/view/SlideSorterView.cxx
++++ sd/source/ui/slidesorter/view/SlideSorterView.cxx
+@@ -750,7 +750,7 @@ void SlideSorterView::Notify (SfxBroadcaster& rBroadcaster, const SfxHint& rHint
+     if (pDocShell!=NULL && pDocShell->IsEnableSetModified())
+         mbModelChangedWhileModifyEnabled = true;
+ 
+-    ::sd::View::SFX_NOTIFY(rBroadcaster, rBroadcastType, rHint, rHintType);
++    ::sd::View::Notify(rBroadcaster, rHint);
+ }
+ 
+ 
+diff --git a/sd/source/ui/tools/PreviewRenderer.cxx b/sd/source/ui/tools/PreviewRenderer.cxx
+index 2c5f67a..1faa495 100644
+--- sd/source/ui/tools/PreviewRenderer.cxx
++++ sd/source/ui/tools/PreviewRenderer.cxx
+@@ -477,11 +477,7 @@ Image PreviewRenderer::ScaleBitmap (
+ 
+ 
+ 
+-void PreviewRenderer::SFX_NOTIFY(
+-    SfxBroadcaster&,
+-    const TypeId& rBCType,
+-    const SfxHint& rHint,
+-    const TypeId& rHintType)
++void PreviewRenderer::Notify(SfxBroadcaster&, const SfxHint& rHint)
+ {
+ 	if (rHint.IsA(TYPE(SfxSimpleHint))
+         && mpDocShellOfView != NULL)
+diff --git a/sd/source/ui/view/FormShellManager.cxx b/sd/source/ui/view/FormShellManager.cxx
+index 3d21f3e..ad77b02 100644
+--- sd/source/ui/view/FormShellManager.cxx
++++ sd/source/ui/view/FormShellManager.cxx
+@@ -323,11 +323,7 @@ IMPL_LINK(FormShellManager, WindowEventHandler, VclWindowEvent*, pEvent)
+ 
+ 
+ 
+-void FormShellManager::SFX_NOTIFY(
+-        SfxBroadcaster&,
+-        const TypeId& rBCType,
+-        const SfxHint& rHint,
+-        const TypeId& rHintType)
++void FormShellManager::Notify(SfxBroadcaster&, const SfxHint& rHint)
+ {
+     const SfxSimpleHint* pSimpleHint = dynamic_cast<const SfxSimpleHint*>(&rHint);
+     if (pSimpleHint!=NULL && pSimpleHint->GetId()==SFX_HINT_DYING)
+diff --git a/sd/source/ui/view/ViewShellBase.cxx b/sd/source/ui/view/ViewShellBase.cxx
+index a7ed783..ce2c70a 100644
+--- sd/source/ui/view/ViewShellBase.cxx
++++ sd/source/ui/view/ViewShellBase.cxx
+@@ -478,12 +478,9 @@ SdDrawDocument* ViewShellBase::GetDocument (void) const
+ 
+ 
+ 
+-void ViewShellBase::SFX_NOTIFY(SfxBroadcaster& rBC,
+-    const TypeId& rBCType,
+-    const SfxHint& rHint,
+-    const TypeId& rHintType)
++void ViewShellBase::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
+ {
+-    SfxViewShell::SFX_NOTIFY(rBC, rBCType, rHint, rHintType);
++    SfxViewShell::Notify(rBC, rHint);
+ 
+ 	if (rHint.IsA(TYPE(SfxEventHint)))
+ 	{
+diff --git a/sd/source/ui/view/drawview.cxx b/sd/source/ui/view/drawview.cxx
+index 9889045..fe7031a 100644
+--- sd/source/ui/view/drawview.cxx
++++ sd/source/ui/view/drawview.cxx
+@@ -404,8 +404,7 @@ BOOL DrawView::SetAttributes(const SfxItemSet& rSet,
+ |*
+ \************************************************************************/
+ 
+-void DrawView::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType,
+-								 const SfxHint& rHint, const TypeId& rHintType)
++void DrawView::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
+ {
+ 	if ( mpDrawViewShell && rHint.ISA(SdrHint) )
+ 	{
+@@ -436,7 +435,7 @@ void DrawView::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType,
+ 		}
+ 	}
+ 
+-	::sd::View::SFX_NOTIFY(rBC, rBCType, rHint, rHintType);
++	::sd::View::Notify(rBC, rHint);
+ }
+ 
+ /*************************************************************************

Added: trunk/patches/test/sfx-broadcaster-hashset-sfx2.diff
==============================================================================
--- (empty file)
+++ trunk/patches/test/sfx-broadcaster-hashset-sfx2.diff	Tue May 20 04:07:34 2008
@@ -0,0 +1,116 @@
+diff --git a/sfx2/inc/sfx2/viewfrm.hxx b/sfx2/inc/sfx2/viewfrm.hxx
+index eaf7aac..898730d 100644
+--- sfx2/inc/sfx2/viewfrm.hxx
++++ sfx2/inc/sfx2/viewfrm.hxx
+@@ -145,8 +145,7 @@ private:
+ #endif
+ 
+ protected:
+-	virtual void            SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-									const SfxHint& rHint, const TypeId& rHintType );
++	virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+ 	SAL_DLLPRIVATE void SetWindow_Impl( Window *pWin );
+ 
+diff --git a/sfx2/inc/sfx2/viewsh.hxx b/sfx2/inc/sfx2/viewsh.hxx
+index d246439..016e401 100644
+--- sfx2/inc/sfx2/viewsh.hxx
++++ sfx2/inc/sfx2/viewsh.hxx
+@@ -185,10 +185,8 @@ protected:
+ 
+ 	virtual void				Move();
+ 
+-	virtual void                SFX_NOTIFY( SfxBroadcaster& rBC,
+-										const TypeId& rBCType,
+-										const SfxHint& rHint,
+-										const TypeId& rHintType );
++	virtual void                Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
++
+ public:
+ 	// Iteration
+ 	static SfxViewShell*        GetFirst( const TypeId* pType = 0, BOOL bOnlyVisible = TRUE );
+diff --git a/sfx2/source/dialog/templdlg.cxx b/sfx2/source/dialog/templdlg.cxx
+index 65aa8df..de32503 100644
+--- sfx2/source/dialog/templdlg.cxx
++++ sfx2/source/dialog/templdlg.cxx
+@@ -1562,8 +1562,7 @@ IMPL_LINK( SfxCommonTemplateDialog_Impl, TimeOut, Timer *, pTim )
+ 
+ 
+ //-------------------------------------------------------------------------
+-void SfxCommonTemplateDialog_Impl::SFX_NOTIFY(SfxBroadcaster& /*rBC*/, const TypeId& rBCType,
+-										  const SfxHint& rHint, const TypeId& rHintType)
++void SfxCommonTemplateDialog_Impl::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& rHint)
+ {
+ 	// Aktualisierung anstossen
+ 	if(rHint.Type() == TYPE(SfxSimpleHint))
+diff --git a/sfx2/source/inc/templdgi.hxx b/sfx2/source/inc/templdgi.hxx
+index 79818f5..9d43d53 100644
+--- sfx2/source/inc/templdgi.hxx
++++ sfx2/source/inc/templdgi.hxx
+@@ -226,8 +226,7 @@ protected:
+ 	USHORT				StyleNrToInfoOffset( USHORT i );
+ 	USHORT				InfoOffsetToStyleNr( USHORT i );
+ 
+-	void				SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-									const SfxHint& rHint, const TypeId& rHintType );
++	void				Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+ 	void				FamilySelect( USHORT nId );
+ 	void				SetFamily( USHORT nId );
+diff --git a/sfx2/source/view/prnmon.cxx b/sfx2/source/view/prnmon.cxx
+index bfd4374..46aa9c1 100644
+--- sfx2/source/view/prnmon.cxx
++++ sfx2/source/view/prnmon.cxx
+@@ -113,17 +113,10 @@ public:
+ 	SfxViewShell*			GetViewShell() const { return pViewShell; }
+ 	BOOL					SetPage( USHORT nPage, const String &rPage );
+     void                    CreateMonitor();
+-	virtual void            SFX_NOTIFY( SfxBroadcaster& rBC,
+-										const TypeId& rBCType,
+-										const SfxHint& rHint,
+-										const TypeId& rHintType );
++	virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ };
+ 
+-void SfxPrintProgress_Impl::SFX_NOTIFY(
+-    SfxBroadcaster& /*rBC*/,
+-	const TypeId& rBCType,
+-	const SfxHint& rHint,
+-	const TypeId& rHintType )
++void SfxPrintProgress_Impl::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
+ {
+ 	SfxPrintingHint* pPrintHint = PTR_CAST( SfxPrintingHint, &rHint );
+ 	if ( pPrintHint )
+diff --git a/sfx2/source/view/topfrm.cxx b/sfx2/source/view/topfrm.cxx
+index fda1518..f289053 100644
+--- sfx2/source/view/topfrm.cxx
++++ sfx2/source/view/topfrm.cxx
+@@ -1151,7 +1151,7 @@ void SfxTopViewFrame::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+ 	}
+     }
+ 
+-    SfxViewFrame::SFX_NOTIFY( rBC, rBCType, rHint, rHintType );
++    SfxViewFrame::Notify( rBC, rHint );
+ }
+ 
+ //--------------------------------------------------------------------
+diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
+index edf7045..3b95c2a 100644
+--- sfx2/source/view/viewfrm.cxx
++++ sfx2/source/view/viewfrm.cxx
+@@ -1222,13 +1222,8 @@ void SfxViewFrame::ReleaseObjectShell_Impl( sal_Bool bStoreView )
+         pDispatcher->Flush();
+         EndListening( *xObjSh );
+ 
+-        SFX_NOTIFY( *xObjSh, xObjSh->Type(),
+-                SfxSimpleHint(SFX_HINT_TITLECHANGED),
+-                TYPE(SfxSimpleHint) );
+-
+-        SFX_NOTIFY( *xObjSh, xObjSh->Type(),
+-                SfxSimpleHint(SFX_HINT_DOCCHANGED),
+-                TYPE(SfxSimpleHint) );
++        Notify( *xObjSh, SfxSimpleHint(SFX_HINT_TITLECHANGED) );
++        Notify( *xObjSh, SfxSimpleHint(SFX_HINT_DOCCHANGED) );
+ 
+         if ( 1 == xObjSh->GetOwnerLockCount() && pImp->bObjLocked && xObjSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
+             xObjSh->DoClose();

Added: trunk/patches/test/sfx-broadcaster-hashset-svtools.diff
==============================================================================
--- (empty file)
+++ trunk/patches/test/sfx-broadcaster-hashset-svtools.diff	Tue May 20 04:07:34 2008
@@ -0,0 +1,606 @@
+diff --git a/svtools/inc/svtools/brdcst.hxx b/svtools/inc/svtools/brdcst.hxx
+index 6734f63..8d02b30 100644
+--- svtools/inc/svtools/brdcst.hxx
++++ svtools/inc/svtools/brdcst.hxx
+@@ -31,35 +31,34 @@
+ #define _SFXBRDCST_HXX
+ 
+ #include "svtools/svldllapi.h"
++#include "svtools/svarray.hxx"
+ #include <tools/rtti.hxx>
+-#include <svtools/svarray.hxx>
++
++#include <hash_set>
+ 
+ class SfxListener;
+ class SfxHint;
+ 
+-#ifndef _SFX_BRDCST_CXX
+-typedef SvPtrarr SfxListenerArr_Impl;
+-#endif
+-
+-#define SFX_FORWARD( rBC, rBCT, rHint, rHintT ) \
+-		Forward( rBC, rHint )
+-
+-//-------------------------------------------------------------------------
++struct SfxListenerHash
++{
++    size_t operator()(SfxListener* p) const
++    {
++        return reinterpret_cast<size_t>(p);
++    }
++};
+ 
+ class SVL_DLLPUBLIC SfxBroadcaster
+ {
+ friend class SfxListener;
+ 
+-	SfxListenerArr_Impl 	aListeners;
++	typedef ::std::hash_set<SfxListener*, SfxListenerHash> ListenerArray;
++	ListenerArray			maListeners;
+ 
+ private:
+-	BOOL		 AddListener( SfxListener& rListener );
+-	void					RemoveListener( SfxListener& rListener );
+ 	const SfxBroadcaster&	operator=(const SfxBroadcaster &); // verboten
+ 
+ protected:
+-	void					SFX_FORWARD(SfxBroadcaster& rBC, const TypeId& rBCType,
+-										const SfxHint& rHint, const TypeId& rHintType);
++	void					Forward(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 	virtual void			ListenersGone();
+ 
+ public:
+@@ -73,10 +72,11 @@ public:
+ 	void					BroadcastDelayed( const SfxHint& rHint );
+ 	void					BroadcastInIdle( const SfxHint& rHint );
+ 
++	BOOL		            AddListener( SfxListener& rListener );
++	void					RemoveListener( SfxListener& rListener );
+ 	BOOL					HasListeners() const;
+-	USHORT					GetListenerCount() const { return aListeners.Count(); }
+-	SfxListener*			GetListener( USHORT nNo ) const
+-							{ return (SfxListener*) aListeners[nNo]; }
++	size_t					GetListenerCount() const;
++	SfxListener*			GetListener( size_t nNo ) const;
+ };
+ 
+ #endif
+diff --git a/svtools/inc/svtools/lstner.hxx b/svtools/inc/svtools/lstner.hxx
+index e60c028..805a472 100644
+--- svtools/inc/svtools/lstner.hxx
++++ svtools/inc/svtools/lstner.hxx
+@@ -31,24 +31,26 @@
+ #define _SFXLSTNER_HXX
+ 
+ #include "svtools/svldllapi.h"
++#include "svtools/svarray.hxx"
+ #include <tools/rtti.hxx>
+-#include <svtools/svarray.hxx>
++
++#include <hash_set>
+ 
+ class SfxBroadcaster;
+ class SfxHint;
+ 
+-#ifndef _SFX_LSTNER_CXX
+-typedef SvPtrarr SfxBroadcasterArr_Impl;
+-#endif
+-
+-#define SFX_NOTIFY( rBC, rBCT, rHint, rHintT ) \
+-		Notify( rBC, rHint )
+-
+-//-------------------------------------------------------------------------
++struct SfxBroadcasterHash
++{
++    size_t operator()(SfxBroadcaster* p) const
++    {
++        return reinterpret_cast<size_t>(p);
++    }
++};
+ 
+ class SVL_DLLPUBLIC SfxListener
+ {
+-	SfxBroadcasterArr_Impl aBCs;
++	typedef ::std::hash_multiset<SfxBroadcaster*, SfxBroadcasterHash> BroadcasterArray;
++	BroadcasterArray maBCs;
+ 
+ private:
+ 	const SfxListener&	operator=(const SfxListener &); // n.i., ist verboten
+@@ -62,14 +64,12 @@ public:
+ 
+ 	BOOL				StartListening( SfxBroadcaster& rBroadcaster, BOOL bPreventDups = FALSE );
+ 	BOOL				EndListening( SfxBroadcaster& rBroadcaster, BOOL bAllDups = FALSE );
+-	void				EndListening( USHORT nNo );
++	void				EndListening( size_t nNo );
+ 	void				EndListeningAll();
+ 	BOOL				IsListening( SfxBroadcaster& rBroadcaster ) const;
+ 
+-	USHORT				GetBroadcasterCount() const
+-						{ return aBCs.Count(); }
+-	SfxBroadcaster* 	GetBroadcasterJOE( USHORT nNo ) const
+-						{ return (SfxBroadcaster*) aBCs.GetObject(nNo); }
++	size_t				GetBroadcasterCount() const;
++	SfxBroadcaster* 	GetBroadcasterJOE( size_t nNo ) const;
+ 
+ 	virtual void		Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+diff --git a/svtools/source/items/style.cxx b/svtools/source/items/style.cxx
+index cc3b525..519f5fe 100644
+--- svtools/source/items/style.cxx
++++ svtools/source/items/style.cxx
+@@ -1286,7 +1286,7 @@ BOOL SfxStyleSheet::SetParent( const XubString& rName )
+ void SfxStyleSheet::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType,
+ 						   const SfxHint& rHint, const TypeId& rHintType )
+ {
+-	SFX_FORWARD(rBC, rBCType, rHint, rHintType);
++    Forward(rBC, rHint);
+ }
+ 
+ //////////////////////// SfxStyleSheetPool ///////////////////////////////
+diff --git a/svtools/source/notify/brdcst.cxx b/svtools/source/notify/brdcst.cxx
+index 4e7f5c5..c6dd206 100644
+--- svtools/source/notify/brdcst.cxx
++++ svtools/source/notify/brdcst.cxx
+@@ -39,17 +39,86 @@
+ #include <svtools/smplhint.hxx>
+ #include <svtools/lstner.hxx>
+ 
+-SV_DECL_PTRARR( SfxListenerArr_Impl, SfxListener*, 0, 2 )
+-
+-#define _SFX_BRDCST_CXX
+ #include <svtools/brdcst.hxx>
+ 
++#include <algorithm>
++
++using ::std::find;
++using ::std::unary_function;
++
+ //====================================================================
+ DBG_NAME(SfxBroadcaster)
+ TYPEINIT0(SfxBroadcaster);
+ 
+ //====================================================================
+ 
++class NotifyListenerFunc : public unary_function<SfxListener*, void>
++{
++public:
++    explicit NotifyListenerFunc(const SfxHint& rHint, SfxBroadcaster& rParent) :
++        mrHint(rHint),
++        mrParentBC(rParent)
++    {
++    }
++
++    void operator()(SfxListener* pListener)
++    {
++        if (pListener)
++            pListener->Notify(mrParentBC, mrHint);
++    }
++private:
++    NotifyListenerFunc(); // disable
++
++private:
++    const SfxHint& mrHint;
++    SfxBroadcaster& mrParentBC;
++};
++
++// ----------------------------------------------------------------------------
++
++class UnregisterListenerFunc : public unary_function<SfxListener*, void>
++{
++public:
++    explicit UnregisterListenerFunc(SfxBroadcaster& rParent) :
++        mrParentBC(rParent)
++    {
++    }
++
++    void operator()(SfxListener* pListener)
++    {
++        if (pListener)
++            pListener->RemoveBroadcaster_Impl(mrParentBC);
++    }
++private:
++    UnregisterListenerFunc(); // disable
++
++private:
++    SfxBroadcaster& mrParentBC;
++};
++
++// ----------------------------------------------------------------------------
++
++class RegisterListenerFunc : public ::std::unary_function<SfxListener*, void>
++{
++public:
++    explicit RegisterListenerFunc(SfxBroadcaster& rParent) :
++        mrParentBC(rParent)
++    {
++    }
++
++    void operator()(SfxListener* pListener)
++    {
++        if (pListener)
++            pListener->StartListening(mrParentBC);
++    }
++
++private:
++    RegisterListenerFunc(); // disabled
++
++private:
++    SfxBroadcaster& mrParentBC;
++};
++
+ //====================================================================
+ // broadcast immediately
+ 
+@@ -59,25 +128,11 @@ void SfxBroadcaster::Broadcast( const SfxHint &rHint )
+ 	DBG_CHKTHIS(SfxBroadcaster, 0);
+ 
+ 	// is anybody to notify?
+-	if ( aListeners.Count() /*! || aGlobListeners.Count() */ )
++	if ( !maListeners.empty() /*! || aGlobListeners.Count() */ )
+ 	{
+-        #if 0
+-		// determine the type only once, because of its expensiveness
+-		const TypeId& rBCType = Type();
+-		const TypeId& rHintType = rHint.Type();
+-        #endif
+-
+ 		// notify all registered listeners exactly once
+-		for ( USHORT n = 0; n < aListeners.Count(); ++n )
+-		{
+-			SfxListener* pListener = aListeners[n];
+-			if ( pListener )
+-                #if 0
+-				pListener->SFX_NOTIFY( *this, rBCType, rHint, rHintType );
+-                #else
+-				pListener->Notify( *this, rHint );
+-                #endif
+-		}
++        NotifyListenerFunc f(rHint, *this);
++        for_each(maListeners.begin(), maListeners.end(), f);
+ 	}
+ }
+ 
+@@ -111,12 +166,8 @@ SfxBroadcaster::~SfxBroadcaster()
+ 	Broadcast( SfxSimpleHint(SFX_HINT_DYING) );
+ 
+ 	// remove all still registered listeners
+-	for ( USHORT nPos = 0; nPos < aListeners.Count(); ++nPos )
+-	{
+-		SfxListener *pListener = aListeners[nPos];
+-		if ( pListener )
+-			pListener->RemoveBroadcaster_Impl(*this);
+-	}
++    UnregisterListenerFunc f(*this);
++    for_each(maListeners.begin(), maListeners.end(), f);
+ }
+ 
+ //--------------------------------------------------------------------
+@@ -137,12 +188,8 @@ SfxBroadcaster::SfxBroadcaster( const SfxBroadcaster &rBC )
+ {
+ 	DBG_CTOR(SfxBroadcaster, 0);
+ 
+-	for ( USHORT n = 0; n < rBC.aListeners.Count(); ++n )
+-	{
+-		SfxListener *pListener = rBC.aListeners[n];
+-		if ( pListener )
+-			pListener->StartListening( *this );
+-	}
++    RegisterListenerFunc f(*this);
++    for_each(rBC.maListeners.begin(), rBC.maListeners.end(), f);
+ }
+ 
+ //--------------------------------------------------------------------
+@@ -152,21 +199,8 @@ SfxBroadcaster::SfxBroadcaster( const SfxBroadcaster &rBC )
+ BOOL SfxBroadcaster::AddListener( SfxListener& rListener )
+ {
+ 	DBG_CHKTHIS(SfxBroadcaster, 0);
+-	const SfxListener *pListener = &rListener;
+-	const SfxListener *pNull = 0;
+-	USHORT nFreePos = aListeners.GetPos( pNull );
+-	if ( nFreePos < aListeners.Count() )
+-		aListeners.GetData()[nFreePos] = pListener;
+-	else if ( aListeners.Count() < (USHRT_MAX-1) )
+-		aListeners.Insert( pListener, aListeners.Count() );
+-	else
+-	{
+-		DBG_ERROR( "array overflow" );
+-		return FALSE;
+-	}
+-
+-	DBG_ASSERT( USHRT_MAX != aListeners.GetPos(pListener),
+-				"AddListener failed" );
++	SfxListener *pListener = &rListener;
++    maListeners.insert(pListener);
+ 	return TRUE;
+ }
+ 
+@@ -182,17 +216,10 @@ void SfxBroadcaster::ListenersGone()
+ //--------------------------------------------------------------------
+ 
+ // forward a notification to all registered listeners
+-
+-void SfxBroadcaster::SFX_FORWARD(SfxBroadcaster& rBC, const TypeId& rBCType,
+-							   const SfxHint& rHint, const TypeId& rHintType)
++void SfxBroadcaster::Forward(SfxBroadcaster& rBC, const SfxHint& rHint)
+ {
+-	const USHORT nCount = aListeners.Count();
+-	for ( USHORT i = 0; i < nCount; ++i )
+-	{
+-		SfxListener *pListener = aListeners[i];
+-		if ( pListener )
+-			pListener->SFX_NOTIFY( rBC, rBCType, rHint, rHintType);
+-	}
++    NotifyListenerFunc f(rHint, rBC);
++    for_each(maListeners.begin(), maListeners.end(), f);
+ }
+ 
+ //--------------------------------------------------------------------
+@@ -202,10 +229,14 @@ void SfxBroadcaster::SFX_FORWARD(SfxBroadcaster& rBC, const TypeId& rBCType,
+ void SfxBroadcaster::RemoveListener( SfxListener& rListener )
+ {
+ 	{DBG_CHKTHIS(SfxBroadcaster, 0);}
+-	const SfxListener *pListener = &rListener;
+-	USHORT nPos = aListeners.GetPos(pListener);
+-	DBG_ASSERT( nPos != USHRT_MAX, "RemoveListener: Listener unknown" );
+-	aListeners.GetData()[nPos] = 0;
++	SfxListener *pListener = &rListener;
++    ListenerArray::iterator itr = find(maListeners.begin(), maListeners.end(), pListener);
++    if (itr == maListeners.end())
++        // listener not found!
++        return;
++
++    maListeners.erase(itr);
++
+ 	if ( !HasListeners() )
+ 		ListenersGone();
+ }
+@@ -214,10 +245,22 @@ void SfxBroadcaster::RemoveListener( SfxListener& rListener )
+ 
+ BOOL SfxBroadcaster::HasListeners() const
+ {
+-	for ( USHORT n = 0; n < aListeners.Count(); ++n )
+-		if ( aListeners.GetObject(n) != 0 )
+-			return TRUE;
+-	return FALSE;
++    return !maListeners.empty();
+ }
+ 
+-//--------------------------------------------------------------------
++// ----------------------------------------------------------------------------
++
++size_t SfxBroadcaster::GetListenerCount() const
++{
++    return maListeners.size();
++}
++
++SfxListener* SfxBroadcaster::GetListener( size_t nNo ) const
++{
++    if (nNo >= maListeners.size())
++        return NULL;
++
++    ListenerArray::const_iterator itr = maListeners.begin();
++    ::std::advance(itr, nNo);
++    return *itr;
++}
+diff --git a/svtools/source/notify/lstner.cxx b/svtools/source/notify/lstner.cxx
+index 25246c0..e4897d8 100644
+--- svtools/source/notify/lstner.cxx
++++ svtools/source/notify/lstner.cxx
+@@ -39,16 +39,56 @@
+ 
+ #include <svtools/hint.hxx>
+ #include <svtools/brdcst.hxx>
++#include <svtools/lstner.hxx>
+ 
+-SV_DECL_PTRARR( SfxBroadcasterArr_Impl, SfxBroadcaster*, 0, 2 )
++#include <algorithm>
+ 
+-#define _SFX_LSTNER_CXX
+-#include <svtools/lstner.hxx>
++using ::std::find;
++using ::std::unary_function;
++using ::std::advance;
+ 
+ //====================================================================
+ DBG_NAME(SfxListener)
+ TYPEINIT0(SfxListener);
+ 
++class StartListeningToBC : public unary_function<SfxBroadcaster*, void>
++{
++public:
++    explicit StartListeningToBC(SfxListener& rListener) :
++        mrListener(rListener)
++    {
++    }
++
++    void operator()(SfxBroadcaster* pBC)
++    {
++        mrListener.StartListening(*pBC);
++    }
++private:
++    StartListeningToBC(); // disabled
++
++private:
++    SfxListener& mrListener;
++};
++
++class RemoveListenerFromBC : public unary_function<SfxBroadcaster*, void>
++{
++public:
++    explicit RemoveListenerFromBC(SfxListener& rListener) :
++        mrListener(rListener)
++    {
++    }
++
++    void operator()(SfxBroadcaster* pBC)
++    {
++        pBC->RemoveListener(mrListener);
++    }
++private:
++    RemoveListenerFromBC(); // disabled
++
++private:
++    SfxListener& mrListener;
++};
++
+ //====================================================================
+ // simple ctor of class SfxListener
+ 
+@@ -63,10 +103,10 @@ SfxListener::SfxListener()
+ SfxListener::SfxListener( const SfxListener &rListener )
+ {
+ 	DBG_CTOR(SfxListener, 0);
+-
+-	for ( USHORT n = 0; n < rListener.aBCs.Count(); ++n )
+-		StartListening( *rListener.aBCs[n] );
++    StartListeningToBC f(*this);
++    for_each(rListener.maBCs.begin(), rListener.maBCs.end(), f);
+ }
++
+ //--------------------------------------------------------------------
+ 
+ // unregisteres the SfxListener from its SfxBroadcasters
+@@ -76,11 +116,8 @@ SfxListener::~SfxListener()
+ 	DBG_DTOR(SfxListener, 0);
+ 
+ 	// unregister at all remainding broadcasters
+-	for ( USHORT nPos = 0; nPos < aBCs.Count(); ++nPos )
+-	{
+-		SfxBroadcaster *pBC = aBCs[nPos];
+-		pBC->RemoveListener(*this);
+-	}
++    RemoveListenerFromBC f(*this);
++    for_each(maBCs.begin(), maBCs.end(), f);
+ }
+ 
+ //--------------------------------------------------------------------
+@@ -91,8 +128,10 @@ void SfxListener::RemoveBroadcaster_Impl( SfxBroadcaster& rBC )
+ {
+ 	DBG_CHKTHIS(SfxListener, 0);
+ 
+-	const SfxBroadcaster *pBC = &rBC;
+-	aBCs.Remove( aBCs.GetPos(pBC), 1 );
++	SfxBroadcaster *pBC = &rBC;
++    BroadcasterArray::iterator itr = ::std::find(maBCs.begin(), maBCs.end(), pBC);
++    if (itr != maBCs.end())
++        maBCs.erase(itr);
+ }
+ 
+ //--------------------------------------------------------------------
+@@ -107,8 +146,9 @@ BOOL SfxListener::StartListening( SfxBroadcaster& rBroadcaster, BOOL bPreventDup
+ 	{
+ 		if ( rBroadcaster.AddListener(*this) )
+ 		{
+-			const SfxBroadcaster *pBC = &rBroadcaster;
+-			aBCs.Insert( pBC, aBCs.Count() );
++			SfxBroadcaster *pBC = &rBroadcaster;
++            maBCs.insert(pBC);
++//          maBCs.push_back(pBC);
+ 
+ 			DBG_ASSERT( IsListening(rBroadcaster), "StartListening failed" );
+ 			return TRUE;
+@@ -132,8 +172,10 @@ BOOL SfxListener::EndListening( SfxBroadcaster& rBroadcaster, BOOL bAllDups )
+ 	do
+ 	{
+ 		rBroadcaster.RemoveListener(*this);
+-		const SfxBroadcaster *pBC = &rBroadcaster;
+-		aBCs.Remove( aBCs.GetPos(pBC), 1 );
++		SfxBroadcaster *pBC = &rBroadcaster;
++        BroadcasterArray::iterator itr = ::std::find(maBCs.begin(), maBCs.end(), pBC);
++        if (itr != maBCs.end())
++            maBCs.erase(itr);
+ 	}
+ 	while ( bAllDups && IsListening( rBroadcaster ) );
+ 	return TRUE;
+@@ -143,13 +185,18 @@ BOOL SfxListener::EndListening( SfxBroadcaster& rBroadcaster, BOOL bAllDups )
+ 
+ // unregisteres at a specific SfxBroadcaster by index
+ 
+-void SfxListener::EndListening( USHORT nNo )
++void SfxListener::EndListening( size_t nNo )
+ {
+ 	DBG_CHKTHIS(SfxListener, 0);
+ 
+-	SfxBroadcaster *pBC = aBCs.GetObject(nNo);
+-	pBC->RemoveListener(*this);
+-	aBCs.Remove( nNo, 1 );
++    if (nNo >= maBCs.size())
++        return;
++
++    BroadcasterArray::iterator itr = maBCs.begin();
++    advance(itr, nNo);
++    SfxBroadcaster* pBC = *itr;
++    pBC->RemoveListener(*this);
++    maBCs.erase(itr);
+ }
+ 
+ //--------------------------------------------------------------------
+@@ -160,21 +207,33 @@ void SfxListener::EndListeningAll()
+ {
+ 	DBG_CHKTHIS(SfxListener, 0);
+ 
+-	// MI: bei Optimierung beachten: Seiteneffekte von RemoveListener beachten!
+-	while ( aBCs.Count() )
+-	{
+-		SfxBroadcaster *pBC = aBCs.GetObject(0);
+-		pBC->RemoveListener(*this);
+-		aBCs.Remove( 0, 1 );
+-	}
++    RemoveListenerFromBC f(*this);
++    for_each(maBCs.begin(), maBCs.end(), f);
++    maBCs.clear();
+ }
+ 
+ //--------------------------------------------------------------------
+ 
+ BOOL SfxListener::IsListening( SfxBroadcaster& rBroadcaster ) const
+ {
+-	const SfxBroadcaster *pBC = &rBroadcaster;
+-	return USHRT_MAX != aBCs.GetPos( pBC );
++	SfxBroadcaster *pBC = &rBroadcaster;
++    BroadcasterArray::const_iterator itr = find(maBCs.begin(), maBCs.end(), pBC);
++    return itr != maBCs.end();
++}
++
++size_t SfxListener::GetBroadcasterCount() const
++{
++    return maBCs.size();
++}
++
++SfxBroadcaster* SfxListener::GetBroadcasterJOE( size_t nNo ) const
++{
++    if (nNo >= maBCs.size())
++        return NULL;
++
++    BroadcasterArray::const_iterator itr = maBCs.begin();
++    advance(itr, nNo);
++    return *itr;
+ }
+ 
+ //--------------------------------------------------------------------
+@@ -182,17 +241,16 @@ BOOL SfxListener::IsListening( SfxBroadcaster& rBroadcaster ) const
+ // base implementation of notification handler
+ 
+ #ifdef DBG_UTIL
+-void SfxListener::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-							  const SfxHint&, const TypeId& rHintType )
++void SfxListener::Notify( SfxBroadcaster& rBC, const SfxHint& )
+ #else
+-void SfxListener::SFX_NOTIFY( SfxBroadcaster&, const TypeId&,
+-							  const SfxHint&, const TypeId& )
++void SfxListener::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& )
+ #endif
+ {
+-    #ifdef DBG_UTIL
+-	const SfxBroadcaster *pBC = &rBC;
+-	DBG_ASSERT( USHRT_MAX != aBCs.GetPos(pBC),
++#ifdef DBG_UTIL
++	SfxBroadcaster *pBC = &rBC;
++    BroadcasterArray::const_iterator itr = find(maBCs.begin(), maBCs.end(), pBC);
++	DBG_ASSERT( itr != maBCs.end(),
+ 				"notification from unregistered broadcaster" );
+-    #endif
++#endif
+ }
+ 

Added: trunk/patches/test/sfx-broadcaster-hashset-svx.diff
==============================================================================
--- (empty file)
+++ trunk/patches/test/sfx-broadcaster-hashset-svx.diff	Tue May 20 04:07:34 2008
@@ -0,0 +1,525 @@
+diff --git a/svx/inc/svx/colrctrl.hxx b/svx/inc/svx/colrctrl.hxx
+index ab0dd63..2d8441c 100644
+--- svx/inc/svx/colrctrl.hxx
++++ svx/inc/svx/colrctrl.hxx
+@@ -136,8 +136,7 @@ public:
+ 										   const ResId& rResId );
+ 					~SvxColorDockingWindow();
+ 
+-	virtual void 	SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-							const SfxHint& rHint, const TypeId& rHintType );
++	virtual void 	Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+ 	void			SetSlotIDs( USHORT nLeft, USHORT nRight )
+ 						{ nLeftSlot = nLeft; nRightSlot = nRight; }
+diff --git a/svx/inc/svx/fntctl.hxx b/svx/inc/svx/fntctl.hxx
+index cbe6e9b..5ff9f07 100644
+--- svx/inc/svx/fntctl.hxx
++++ svx/inc/svx/fntctl.hxx
+@@ -54,10 +54,7 @@ private:
+ 	DECL_LINK( MenuSelect, FontNameMenu * );
+ 	SVX_DLLPRIVATE virtual void	StateChanged( USHORT nSID, SfxItemState eState,
+ 								  const SfxPoolItem* pState );
+-	SVX_DLLPRIVATE virtual void 	SFX_NOTIFY( SfxBroadcaster& rBC,
+-								const TypeId& rBCType,
+-								const SfxHint& rHint,
+-								const TypeId& rHintType );
++	SVX_DLLPRIVATE virtual void 	Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ //#endif
+ 
+ public:
+diff --git a/svx/inc/svx/ruler.hxx b/svx/inc/svx/ruler.hxx
+index e3c0d7d..caf9ec1 100644
+--- svx/inc/svx/ruler.hxx
++++ svx/inc/svx/ruler.hxx
+@@ -216,8 +216,7 @@ protected:
+ 	virtual void    ExtraDown();
+ 	virtual void	MouseMove( const MouseEvent& rMEvt );
+ 
+-	virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-						 const SfxHint& rHint, const TypeId& rHintType );
++	virtual void    Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+ 	// Berechnung der Grenzwerte fuer Objectgrenzen
+ 	// Werte sind bezogen auf die Seite
+diff --git a/svx/inc/svx/scene3d.hxx b/svx/inc/svx/scene3d.hxx
+index 3951d93..6a178d0 100644
+--- svx/inc/svx/scene3d.hxx
++++ svx/inc/svx/scene3d.hxx
+@@ -122,10 +122,7 @@ protected:
+ 
+ 	void RebuildLists();
+ 
+-	virtual void SFX_NOTIFY(SfxBroadcaster &rBC,
+-							const TypeId   &rBCType,
+-							const SfxHint  &rHint,
+-							const TypeId   &rHintType);
++	virtual void Notify(SfxBroadcaster &rBC, const SfxHint  &rHint);
+ 
+ 	BOOL AreThereTransparentParts() const;
+ 
+diff --git a/svx/inc/svx/svdedxv.hxx b/svx/inc/svx/svdedxv.hxx
+index c438a6d..a187240 100644
+--- svx/inc/svx/svdedxv.hxx
++++ svx/inc/svx/svdedxv.hxx
+@@ -158,7 +158,7 @@ public:
+ 	virtual void BckAction();
+ 	virtual void TakeActionRect(Rectangle& rRect) const;
+ 
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 	virtual void ModelHasChanged();
+ 
+ 	//************************************************************************
+diff --git a/svx/inc/svx/svdmrkv.hxx b/svx/inc/svx/svdmrkv.hxx
+index 1dcbe6b..91edbd6 100644
+--- svx/inc/svx/svdmrkv.hxx
++++ svx/inc/svx/svdmrkv.hxx
+@@ -166,7 +166,7 @@ private:
+     void UndirtyMrkPnt() const;
+ 
+ protected:
+-    virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++    virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+     virtual void ModelHasChanged(); // Wird von der PaintView gerufen
+     virtual void SetMarkHandles();                                           // aHdl (Liste der Handles) fuellen
+     virtual void SetMarkRects();                                             // Rects an den PageViews
+diff --git a/svx/inc/svx/svdoattr.hxx b/svx/inc/svx/svdoattr.hxx
+index 751c083..fb8bbfb 100644
+--- svx/inc/svx/svdoattr.hxx
++++ svx/inc/svx/svdoattr.hxx
+@@ -80,7 +80,7 @@ protected:
+     FASTBOOL ImpSetShadowAttributes( const SfxItemSet& rSet, SfxItemSet& rShadowSet ) const;
+ 
+ 	// Zuhoeren, ob sich ein StyleSheet aendert
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 
+ 	SdrAttrObj();
+ 	virtual ~SdrAttrObj();
+diff --git a/svx/inc/svx/svdocapt.hxx b/svx/inc/svx/svdocapt.hxx
+index 428e9b9..c671bfe 100644
+--- svx/inc/svx/svdocapt.hxx
++++ svx/inc/svx/svdocapt.hxx
+@@ -113,7 +113,7 @@ public:
+ 
+ 	virtual basegfx::B2DPolyPolygon TakeXorPoly(sal_Bool bDetail) const;
+ 	virtual void SetModel(SdrModel* pNewModel);
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 
+ 	virtual sal_uInt32 GetHdlCount() const;
+ 	virtual SdrHdl* GetHdl(sal_uInt32 nHdlNum) const;
+diff --git a/svx/inc/svx/svdocirc.hxx b/svx/inc/svx/svdocirc.hxx
+index 634cc72..ec7b08b 100644
+--- svx/inc/svx/svdocirc.hxx
++++ svx/inc/svx/svdocirc.hxx
+@@ -93,7 +93,7 @@ private:
+ 	SVX_DLLPRIVATE virtual void RecalcXPoly();
+ 
+ protected:
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 
+ public:
+ 	TYPEINFO();
+diff --git a/svx/inc/svx/svdoedge.hxx b/svx/inc/svx/svdoedge.hxx
+index fda6329..087e7fd 100644
+--- svx/inc/svx/svdoedge.hxx
++++ svx/inc/svx/svdoedge.hxx
+@@ -203,7 +203,7 @@ public:
+ 	sal_Bool IsBoundRectCalculationRunning() const { return mbBoundRectCalculationRunning; }
+ 
+ protected:
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 
+ 	XPolygon ImpCalcObjToCenter(const Point& rStPt, long nEscAngle, const Rectangle& rRect, const Point& rCenter) const;
+ 	void ImpRecalcEdgeTrack();  // Neuberechnung des Verbindungsverlaufs
+diff --git a/svx/inc/svx/svdograf.hxx b/svx/inc/svx/svdograf.hxx
+index fe5e4b1..d7bd973 100644
+--- svx/inc/svx/svdograf.hxx
++++ svx/inc/svx/svdograf.hxx
+@@ -222,8 +222,7 @@ public:
+ 
+ 	void 					AdjustToMaxRect( const Rectangle& rMaxRect, BOOL bShrinkOnly );
+ 
+-	virtual void			SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-										const SfxHint& rHint, const TypeId& rHintType );
++	virtual void			Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 
+ 	bool					IsMirrored() { return bMirrored; }
+ 	void					SetMirrored( bool _bMirrored ) { bMirrored = _bMirrored; }
+diff --git a/svx/inc/svx/svdorect.hxx b/svx/inc/svx/svdorect.hxx
+index e4c86fa..905cc10 100644
+--- svx/inc/svx/svdorect.hxx
++++ svx/inc/svx/svdorect.hxx
+@@ -148,7 +148,7 @@ public:
+ 
+ 	virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+ 
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ };
+ 
+ #endif //_SVDORECT_HXX
+diff --git a/svx/inc/svx/svdovirt.hxx b/svx/inc/svx/svdovirt.hxx
+index 79ef5a2..3c19feb 100644
+--- svx/inc/svx/svdovirt.hxx
++++ svx/inc/svx/svdovirt.hxx
+@@ -58,7 +58,7 @@ protected:
+ 	Rectangle					aSnapRect;
+ 
+ protected:
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 
+ 	virtual SdrObjGeoData* NewGeoData() const;
+ 	virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
+diff --git a/svx/inc/svx/svdpagv.hxx b/svx/inc/svx/svdpagv.hxx
+index 288582e..acc0f25 100644
+--- svx/inc/svx/svdpagv.hxx
++++ svx/inc/svx/svdpagv.hxx
+@@ -142,7 +142,7 @@ protected:
+ 	sal_Bool IsLayer(const String& rName, const SetOfByte& rBS) const;
+ 	void SetAllLayers(SetOfByte& rB, sal_Bool bJa);
+ 
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 
+ 	// Nachsehen, ob AktGroup noch Inserted ist.
+ 	void CheckAktGroup();
+diff --git a/svx/inc/svx/svdpntv.hxx b/svx/inc/svx/svdpntv.hxx
+index 202b12b..e412a94 100644
+--- svx/inc/svx/svdpntv.hxx
++++ svx/inc/svx/svdpntv.hxx
+@@ -272,7 +272,7 @@ public:
+ 	BOOL ImpIsGlueVisible() { return bGlueVisible || bGlueVisible2 || bGlueVisible3 || bGlueVisible4; }
+ protected:
+ 
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 	void GlueInvalidate() const;
+ 
+ 	void ShowEncirclement(OutputDevice* pOut);
+diff --git a/svx/inc/svx/svdview.hxx b/svx/inc/svx/svdview.hxx
+index 721e812..fb79b7a 100644
+--- svx/inc/svx/svdview.hxx
++++ svx/inc/svx/svdview.hxx
+@@ -197,7 +197,7 @@ class SVX_DLLPUBLIC SdrView: public SdrCreateView, public tools::WeakBase< SdrVi
+ protected:
+ 	SvtAccessibilityOptions	maAccessibilityOptions;
+ 
+-	virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
++	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ 
+ public:
+ 	TYPEINFO();
+diff --git a/svx/source/dialog/svxruler.cxx b/svx/source/dialog/svxruler.cxx
+index df7684f..a6f5506 100644
+--- svx/source/dialog/svxruler.cxx
++++ svx/source/dialog/svxruler.cxx
+@@ -3621,8 +3621,7 @@ void __EXPORT SvxRuler::ExtraDown()
+ }
+ 
+ 
+-void __EXPORT SvxRuler::SFX_NOTIFY(SfxBroadcaster& , const TypeId& rBCType,
+-							   const SfxHint& rHint, const TypeId& rHintType)
++void __EXPORT SvxRuler::Notify(SfxBroadcaster&, const SfxHint& rHint)
+ /*
+ 
+    [Beschreibung]
+diff --git a/svx/source/engine3d/scene3d.cxx b/svx/source/engine3d/scene3d.cxx
+index 207bf0d..2811cfd 100644
+--- svx/source/engine3d/scene3d.cxx
++++ svx/source/engine3d/scene3d.cxx
+@@ -1010,13 +1010,10 @@ void E3dScene::RestGeoData(const SdrObjGeoData& rGeo)
+ |*
+ \************************************************************************/
+ 
+-void E3dScene::SFX_NOTIFY(SfxBroadcaster &rBC,
+-						  const TypeId   &rBCType,
+-						  const SfxHint  &rHint,
+-						  const TypeId   &rHintType)
++void E3dScene::Notify(SfxBroadcaster &rBC, const SfxHint  &rHint)
+ {
+ 	SetRectsDirty();
+-	E3dObject::SFX_NOTIFY(rBC, rBCType, rHint, rHintType);
++	E3dObject::Notify(rBC, rHint);
+ }
+ 
+ /*************************************************************************
+diff --git a/svx/source/items/boxobj.hxx b/svx/source/items/boxobj.hxx
+index 77f42d6..171d4f7 100644
+--- svx/source/items/boxobj.hxx
++++ svx/source/items/boxobj.hxx
+@@ -66,8 +66,7 @@ private:
+ 
+ protected:
+ 	// Schnittstelle zum SbxObject/SvDispatch/SfxShell..Object
+-	void					SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-									const SfxHint& rHint, const TypeId& rHintType );
++	void					Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ 	virtual ULONG			SetProperty( USHORT nSID, SbxVariable &rRet );
+ 	virtual ULONG			GetProperty( USHORT nSID, SbxVariable &rRet );
+ 
+diff --git a/svx/source/mnuctrls/fntctl.cxx b/svx/source/mnuctrls/fntctl.cxx
+index 2502874..c4e9a8a 100644
+--- svx/source/mnuctrls/fntctl.cxx
++++ svx/source/mnuctrls/fntctl.cxx
+@@ -132,8 +132,7 @@ void SvxFontMenuControl::StateChanged(
+ 	der DocumentShell gef"ullt.
+ */
+ 
+-void SvxFontMenuControl::SFX_NOTIFY( SfxBroadcaster&, const TypeId& rBCType,
+-								 const SfxHint& rHint, const TypeId& rHintType )
++void SvxFontMenuControl::Notify( SfxBroadcaster&, const SfxHint& rHint )
+ {
+ 	if ( rHint.Type() != TYPE(SfxSimpleHint) &&
+ 		 ( (SfxSimpleHint&)rHint ).GetId() == SFX_HINT_DOCCHANGED )
+diff --git a/svx/source/sdr/properties/graphicproperties.cxx b/svx/source/sdr/properties/graphicproperties.cxx
+index 78ceedc..b1a49d6 100644
+--- svx/source/sdr/properties/graphicproperties.cxx
++++ svx/source/sdr/properties/graphicproperties.cxx
+@@ -91,7 +91,7 @@ namespace sdr
+ 			rObj.SetXPolyDirty();
+ 
+             // #i29367# Update GraphicAttr, too. This was formerly
+-            // triggered by SdrGrafObj::SFX_NOTIFY, which is no longer
++            // triggered by SdrGrafObj::Notify, which is no longer
+             // called nowadays. BTW: strictly speaking, the whole
+             // ImpSetAttrToGrafInfo/ImpSetGrafInfoToAttr stuff could
+             // be dumped, when SdrGrafObj::aGrafInfo is removed and
+diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
+index f419a77..11a14da 100644
+--- svx/source/svdraw/svdedxv.cxx
++++ svx/source/svdraw/svdedxv.cxx
+@@ -157,9 +157,9 @@ void SdrObjEditView::TakeActionRect(Rectangle& rRect) const
+     }
+ }
+ 
+-void __EXPORT SdrObjEditView::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType)
++void __EXPORT SdrObjEditView::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
+ {
+-    SdrGlueEditView::SFX_NOTIFY(rBC,rBCType,rHint,rHintType);
++    SdrGlueEditView::Notify(rBC,rHint);
+     // Printerwechsel waerend des Editierens
+     SdrHint* pSdrHint=PTR_CAST(SdrHint,&rHint);
+     if (pSdrHint!=NULL && pTextEditOutliner!=NULL) {
+diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx
+index 787567a..9f5063e 100644
+--- svx/source/svdraw/svdmrkv.cxx
++++ svx/source/svdraw/svdmrkv.cxx
+@@ -203,7 +203,7 @@ SdrMarkView::~SdrMarkView()
+ 	delete mpSdrViewSelection;
+ }
+ 
+-void __EXPORT SdrMarkView::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType)
++void __EXPORT SdrMarkView::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
+ {
+ 	SdrHint* pSdrHint=PTR_CAST(SdrHint,&rHint);
+ 	if (pSdrHint!=NULL) 
+@@ -216,7 +216,7 @@ void __EXPORT SdrMarkView::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType
+ 			bMarkedPointsRectsDirty=TRUE;
+ 		}
+ 	}
+-	SdrSnapView::SFX_NOTIFY(rBC,rBCType,rHint,rHintType);
++	SdrSnapView::Notify(rBC,rHint);
+ }
+ 
+ void SdrMarkView::ModelHasChanged()
+diff --git a/svx/source/svdraw/svdoattr.cxx b/svx/source/svdraw/svdoattr.cxx
+index 45947f8..fc67cad 100644
+--- svx/source/svdraw/svdoattr.cxx
++++ svx/source/svdraw/svdoattr.cxx
+@@ -141,8 +141,7 @@ void SdrAttrObj::SetModel(SdrModel* pNewModel)
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ // syntactical sugar for ItemSet accesses
+ 
+-void __EXPORT SdrAttrObj::SFX_NOTIFY(SfxBroadcaster& /*rBC*/, const TypeId& rBCType,
+-	const SfxHint& rHint, const TypeId& rHintType)
++void __EXPORT SdrAttrObj::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& rHint)
+ {
+ 	SfxSimpleHint *pSimple = PTR_CAST(SfxSimpleHint, &rHint);
+ 	BOOL bDataChg(pSimple && SFX_HINT_DATACHANGED == pSimple->GetId());
+diff --git a/svx/source/svdraw/svdocapt.cxx b/svx/source/svdraw/svdocapt.cxx
+index ae8336f..ec9d030 100644
+--- svx/source/svdraw/svdocapt.cxx
++++ svx/source/svdraw/svdocapt.cxx
+@@ -867,9 +867,9 @@ void SdrCaptionObj::SetModel(SdrModel* pNewModel)
+ 	ImpRecalcTail();
+ }
+ 
+-void SdrCaptionObj::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType)
++void SdrCaptionObj::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
+ {
+-	SdrRectObj::SFX_NOTIFY(rBC,rBCType,rHint,rHintType);
++	SdrRectObj::Notify(rBC,rHint);
+ 	ImpRecalcTail();
+ }
+ 
+diff --git a/svx/source/svdraw/svdocirc.cxx b/svx/source/svdraw/svdocirc.cxx
+index 8b08c53..b0a20de 100644
+--- svx/source/svdraw/svdocirc.cxx
++++ svx/source/svdraw/svdocirc.cxx
+@@ -1355,10 +1355,10 @@ Point SdrCircObj::GetSnapPoint(sal_uInt32 i) const
+ 	}
+ }
+ 
+-void __EXPORT SdrCircObj::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType)
++void __EXPORT SdrCircObj::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
+ {
+ 	SetXPolyDirty();
+-	SdrRectObj::SFX_NOTIFY(rBC,rBCType,rHint,rHintType);
++	SdrRectObj::Notify(rBC,rHint);
+ 	ImpSetAttrToCircInfo();
+ }
+ 
+diff --git a/svx/source/svdraw/svdoedge.cxx b/svx/source/svdraw/svdoedge.cxx
+index 59a18d7..0c5a874 100644
+--- svx/source/svdraw/svdoedge.cxx
++++ svx/source/svdraw/svdoedge.cxx
+@@ -1661,7 +1661,7 @@ je Objekt variiert von 0-3:
+ 'C':  n  0-3  0-3   = 1+U+1
+ */
+ 
+-void __EXPORT SdrEdgeObj::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId&, const SfxHint& rHint, const TypeId&)
++void __EXPORT SdrEdgeObj::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
+ {
+ 	SfxSimpleHint* pSimple=PTR_CAST(SfxSimpleHint,&rHint);
+ 	ULONG nId=pSimple==0 ? 0 : pSimple->GetId();
+@@ -1676,7 +1676,7 @@ void __EXPORT SdrEdgeObj::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId&, const S
+ 		if (bObj2) aCon2.pObj=NULL;
+ 		return; // Und mehr braucht hier nicht getan werden.
+ 	}
+-	SdrTextObj::SFX_NOTIFY(rBC,rBCType,rHint,rHintType);
++	SdrTextObj::Notify(rBC,rHint);
+ 	if (nNotifyingCount==0) { // Hier nun auch ein VerriegelungsFlag
+ 		((SdrEdgeObj*)this)->nNotifyingCount++;
+ 		SdrHint* pSdrHint=PTR_CAST(SdrHint,&rHint);
+@@ -1712,13 +1712,13 @@ void SdrEdgeObj::Reformat()
+ 	if( NULL != aCon1.pObj )
+ 	{
+ 		SfxSimpleHint aHint( SFX_HINT_DATACHANGED );
+-		SFX_NOTIFY( *const_cast<SfxBroadcaster*>(aCon1.pObj->GetBroadcaster()), NULL, aHint, NULL );
++		Notify( *const_cast<SfxBroadcaster*>(aCon1.pObj->GetBroadcaster()), aHint );
+ 	}
+ 
+ 	if( NULL != aCon2.pObj )
+ 	{
+ 		SfxSimpleHint aHint( SFX_HINT_DATACHANGED );
+-		SFX_NOTIFY( *const_cast<SfxBroadcaster*>(aCon2.pObj->GetBroadcaster()), NULL, aHint, NULL );
++		Notify( *const_cast<SfxBroadcaster*>(aCon2.pObj->GetBroadcaster()), aHint );
+ 	}
+ }
+ 
+diff --git a/svx/source/svdraw/svdograf.cxx b/svx/source/svdraw/svdograf.cxx
+index 205fc86..481ce93 100644
+--- svx/source/svdraw/svdograf.cxx
++++ svx/source/svdraw/svdograf.cxx
+@@ -1259,11 +1259,10 @@ SdrObject* SdrGrafObj::DoConvertToPolyObj(BOOL bBezier) const
+ 
+ // -----------------------------------------------------------------------------
+ 
+-void SdrGrafObj::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+-							 const SfxHint& rHint, const TypeId& rHintType )
++void SdrGrafObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+ {
+ 	SetXPolyDirty();
+-	SdrRectObj::SFX_NOTIFY( rBC, rBCType, rHint, rHintType );
++	SdrRectObj::Notify( rBC, rHint );
+ 	ImpSetAttrToGrafInfo();
+ }
+ 
+diff --git a/svx/source/svdraw/svdorect.cxx b/svx/source/svdraw/svdorect.cxx
+index 3a7db4b..5ffee4f 100644
+--- svx/source/svdraw/svdorect.cxx
++++ svx/source/svdraw/svdorect.cxx
+@@ -844,9 +844,9 @@ SdrObject* SdrRectObj::DoConvertToPolyObj(BOOL bBezier) const
+ 	return pRet;
+ }
+ 
+-void SdrRectObj::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType)
++void SdrRectObj::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
+ {
+-	SdrTextObj::SFX_NOTIFY(rBC,rBCType,rHint,rHintType);
++	SdrTextObj::Notify(rBC,rHint);
+ 	SetXPolyDirty(); // wg. Eckenradius
+ }
+ 
+diff --git a/svx/source/svdraw/svdovirt.cxx b/svx/source/svdraw/svdovirt.cxx
+index 83799d7..dd2f777 100644
+--- svx/source/svdraw/svdovirt.cxx
++++ svx/source/svdraw/svdovirt.cxx
+@@ -92,7 +92,7 @@ SdrObject& SdrVirtObj::ReferencedObj()
+ 	return rRefObj;
+ }
+ 
+-void __EXPORT SdrVirtObj::SFX_NOTIFY(SfxBroadcaster& /*rBC*/, const TypeId& rBCType, const SfxHint& /*rHint*/, const TypeId& rHintType)
++void __EXPORT SdrVirtObj::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& /*rHint*/)
+ {
+ 	bClosedObj=rRefObj.IsClosedObj();
+ 	SetRectsDirty(); // hier noch Optimieren.
+diff --git a/svx/source/svdraw/svdpagv.cxx b/svx/source/svdraw/svdpagv.cxx
+index 529776c..9f6a388 100644
+--- svx/source/svdraw/svdpagv.cxx
++++ svx/source/svdraw/svdpagv.cxx
+@@ -275,7 +275,7 @@ void SdrPageView::RemovePaintWindowFromPageView(SdrPaintWindow& rPaintWindow)
+ 	return xReturn;
+ }
+ 
+-void __EXPORT SdrPageView::SFX_NOTIFY(SfxBroadcaster& /*rBC*/, const TypeId& /*rBCType*/, const SfxHint& /*rHint*/, const TypeId& /*rHintType*/)
++void __EXPORT SdrPageView::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& /*rHint*/)
+ {
+     // not really interested in
+ }
+diff --git a/svx/source/svdraw/svdpntv.cxx b/svx/source/svdraw/svdpntv.cxx
+index e88d886..3623a70 100644
+--- svx/source/svdraw/svdpntv.cxx
++++ svx/source/svdraw/svdpntv.cxx
+@@ -327,7 +327,7 @@ SdrPaintView::~SdrPaintView()
+ 
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ 
+-void __EXPORT SdrPaintView::SFX_NOTIFY(SfxBroadcaster& /*rBC*/, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType)
++void __EXPORT SdrPaintView::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& rHint)
+ {
+ 	BOOL bObjChg=!bSomeObjChgdFlag; // TRUE= auswerten fuer ComeBack-Timer
+ 	if (bObjChg) {
+diff --git a/svx/source/svdraw/svdview.cxx b/svx/source/svdraw/svdview.cxx
+index 2e7f562..8f13ac3 100644
+--- svx/source/svdraw/svdview.cxx
++++ svx/source/svdraw/svdview.cxx
+@@ -1550,14 +1550,14 @@ BOOL SdrView::IsDeleteMarkedPossible() const
+ 	return IsDeleteMarkedObjPossible();
+ }
+ 
+-void SdrView::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType)
++void SdrView::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
+ {
+ 	if( rHint.ISA( SfxSimpleHint ) && ( (SfxSimpleHint&) rHint ).GetId() == SFX_HINT_ACCESSIBILITY_CHANGED )
+ 	{
+ 		onAccessibilityOptionsChanged();
+ 	}
+ 
+- 	SdrCreateView::SFX_NOTIFY(rBC, rBCType, rHint, rHintType );
++ 	SdrCreateView::Notify(rBC, rHint);
+ }
+ 
+ SvtAccessibilityOptions& SdrView::getAccessibilityOptions()
+diff --git a/svx/source/tbxctrls/colrctrl.cxx b/svx/source/tbxctrls/colrctrl.cxx
+index 2fffe37..c69587b 100644
+--- svx/source/tbxctrls/colrctrl.cxx
++++ svx/source/tbxctrls/colrctrl.cxx
+@@ -357,10 +357,7 @@ SvxColorDockingWindow::~SvxColorDockingWindow()
+ |*
+ \************************************************************************/
+ 
+-void SvxColorDockingWindow::SFX_NOTIFY( SfxBroadcaster& ,
+-										 const TypeId& rBCType,
+-										 const SfxHint& rHint,
+-										 const TypeId& rHintType )
++void SvxColorDockingWindow::Notify( SfxBroadcaster& , const SfxHint& rHint )
+ {
+ 	const SfxPoolItemHint *pPoolItemHint = PTR_CAST(SfxPoolItemHint, &rHint);
+ 	if ( pPoolItemHint



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]