Commits

obo  committed 85e7cfb

masterfix: #i112758# integration of renaissance2 in m81 broke smoketestoo_native

  • Participants
  • Parent commits ee646bc
  • Tags DEV300_m84

Comments (0)

Files changed (2)

File sd/source/ui/inc/view/viewoverlaymanager.hxx

 
 	virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
 
-    static BitmapEx maLargeButtonImages[BMP_PLACEHOLDER_LARGE_END - BMP_PLACEHOLDER_LARGE_START];
-    static BitmapEx maSmallButtonImages[BMP_PLACEHOLDER_SMALL_END - BMP_PLACEHOLDER_SMALL_START];
-
 private:
-	void UpdateImages();
-
 	ViewShellBase& mrBase;
     ULONG mnUpdateTagsEvent;
 

File sd/source/ui/view/viewoverlaymanager.cxx

 
 #include <vcl/help.hxx>
 #include <vcl/imagerepository.hxx>
+#include <vcl/lazydelete.hxx>
 
 #include <svx/sdrpagewindow.hxx>
 #include <svx/sdrpaintwindow.hxx>
 
 // --------------------------------------------------------------------
 
-BitmapEx ViewOverlayManager::maSmallButtonImages[BMP_PLACEHOLDER_SMALL_END - BMP_PLACEHOLDER_SMALL_START];
-BitmapEx ViewOverlayManager::maLargeButtonImages[BMP_PLACEHOLDER_LARGE_END - BMP_PLACEHOLDER_LARGE_START];
-
 static USHORT gButtonSlots[] = { SID_INSERT_TABLE, SID_INSERT_DIAGRAM, SID_INSERT_GRAPHIC, SID_INSERT_AVMEDIA };
 static USHORT gButtonToolTips[] = { STR_INSERT_TABLE, STR_INSERT_CHART, STR_INSERT_PICTURE, STR_INSERT_MOVIE };
 
 
 // --------------------------------------------------------------------
 
+static BitmapEx* getButtonImage( int index, bool large )
+{
+	static vcl::DeleteOnDeinit< BitmapEx > gSmallButtonImages[BMP_PLACEHOLDER_SMALL_END - BMP_PLACEHOLDER_SMALL_START] = { 0, 0, 0, 0, 0, 0, 0, 0 };
+	static vcl::DeleteOnDeinit< BitmapEx > gLargeButtonImages[BMP_PLACEHOLDER_LARGE_END - BMP_PLACEHOLDER_LARGE_START] = { 0, 0, 0, 0, 0, 0, 0, 0 };
+
+	if( !gSmallButtonImages[0].get() )
+	{
+		for( sal_uInt16 i = 0; i < (BMP_PLACEHOLDER_SMALL_END-BMP_PLACEHOLDER_SMALL_START); i++ )
+		{
+			gSmallButtonImages[i].set( new BitmapEx( loadImageResource( BMP_PLACEHOLDER_SMALL_START + i ) ) );
+			gLargeButtonImages[i].set( new BitmapEx( loadImageResource( BMP_PLACEHOLDER_LARGE_START + i ) ) );
+		}
+	}
+
+	if( large )
+	{
+		return gLargeButtonImages[index].get();
+	}
+	else
+	{
+		return gSmallButtonImages[index].get();
+	}
+}
+
+// --------------------------------------------------------------------
+
 const sal_uInt32 SMART_TAG_HDL_NUM = SAL_MAX_UINT32;
 
 class ChangePlaceholderTag : public SmartTag
         Size aShapeSizePix = pDev->LogicToPixel(rSnapRect.GetSize());
         long nShapeSizePix = std::min(aShapeSizePix.Width(),aShapeSizePix.Height());
 
-		BitmapEx* pImages = (nShapeSizePix > 250) ? &ViewOverlayManager::maLargeButtonImages[0] : &ViewOverlayManager::maSmallButtonImages[0];
+		bool bLarge = nShapeSizePix > 250;
 
-		Size aSize( pImages->GetSizePixel() );
+		Size aSize( getButtonImage( 0, bLarge )->GetSizePixel() );
 
 		aRet.SetSizePixel( Size( aSize.Width() << 1, aSize.Height() << 1 ) );
 
 		const Rectangle aRectSrc( Point( 0, 0 ), aSize );
 
-		aRet = pImages[(nHighlight == 0) ? 4 : 0];
+		aRet = *(getButtonImage((nHighlight == 0) ? 4 : 0, bLarge));
 		aRet.Expand( aSize.Width(), aSize.Height(), NULL, TRUE );
 
-		aRet.CopyPixel( Rectangle( Point( aSize.Width(), 0				), aSize ), aRectSrc, &pImages[(nHighlight == 1) ? 5 : 1] );
-		aRet.CopyPixel( Rectangle( Point( 0,			 aSize.Height() ), aSize ), aRectSrc, &pImages[(nHighlight == 2) ? 6 : 2] );
-		aRet.CopyPixel( Rectangle( Point( aSize.Width(), aSize.Height() ), aSize ), aRectSrc, &pImages[(nHighlight == 3) ? 7 : 3] );
+		aRet.CopyPixel( Rectangle( Point( aSize.Width(), 0				), aSize ), aRectSrc, getButtonImage((nHighlight == 1) ? 5 : 1, bLarge) );
+		aRet.CopyPixel( Rectangle( Point( 0,			 aSize.Height() ), aSize ), aRectSrc, getButtonImage((nHighlight == 2) ? 6 : 2, bLarge) );
+		aRet.CopyPixel( Rectangle( Point( aSize.Width(), aSize.Height() ), aSize ), aRectSrc, getButtonImage((nHighlight == 3) ? 7 : 3, bLarge) );
 	}
 
 	return aRet;
         if( 50 > nShapeSizePix )
             return;
         
-        BitmapEx* pImages = (nShapeSizePix > 250) ? &ViewOverlayManager::maLargeButtonImages[0] : &ViewOverlayManager::maSmallButtonImages[0];
+        bool bLarge = nShapeSizePix > 250;
 
-		Size aButtonSize( pDev->PixelToLogic(pImages[0].GetSizePixel()) );
+		Size aButtonSize( pDev->PixelToLogic( getButtonImage(0, bLarge )->GetSizePixel()) );
 
 		const int nColumns = 2;
 		const int nRows = 2;
 
 // --------------------------------------------------------------------
 
-void ViewOverlayManager::UpdateImages()
-{
-	for( sal_uInt16 i = 0; i < (BMP_PLACEHOLDER_SMALL_END-BMP_PLACEHOLDER_SMALL_START); i++ )
-	{
-		maSmallButtonImages[i] = loadImageResource( BMP_PLACEHOLDER_SMALL_START + i );
-		maLargeButtonImages[i] = loadImageResource( BMP_PLACEHOLDER_LARGE_START + i );
-    }
-}
-
-// --------------------------------------------------------------------
-
 void ViewOverlayManager::Notify(SfxBroadcaster&, const SfxHint& rHint)
 {
     const SfxSimpleHint* pSimpleHint = dynamic_cast<const SfxSimpleHint*>(&rHint);
     
     if( pPage )    
     {
-		if( !maSmallButtonImages[0] )
-			UpdateImages();
-
 		const std::list< SdrObject* >& rShapes = pPage->GetPresentationShapeList().getList();
     	
     	for( std::list< SdrObject* >::const_iterator iter( rShapes.begin() ); iter != rShapes.end(); iter++ )