Hi everybody,
Here is another patch for the duplicate icons task.
On 11/25/2010 02:18 PM, Michael Meeks wrote:
> On Tue, 2010-11-23 at 22:04 +0100, Joachim Trémouroux wrote:
> I have looked at the calling places. The ImplImageTree::loadImage
>
>> method is called here:
>> vcl/source/gdi/bitmapex.cxx
>> vcl/source/gdi/image.cxx
>> vcl/source/gdi/imagerepository.cxx
>>
> Right; we should clearly clobber the BitmapEx constructor from a
> ResId
> - since this is just grabbing a path from a resource file - to load the
> missing icon if it is not there.
>
I have modified BitmapEx in the attached patch
> Where ImageList::GetImage is called
> from, I don't know, we should audit that too.
>
g grep "vcl/image.hxx" | wc -l returns 179 lines...
I guess I need more time to check this ;-)
ImageRepository::loadImage is called in
>>
>> libs-gui/svtools/source/graphic/provider.cxx (method
>> GraphicProvider::queryGraphicDescriptor)
>> itself called in components/cui/source/customize/cfg.cxx
>> and in impress/sd/source/filter/grf/sdgrffilter.cxx
>>
> Right - this badly needs the return value; perhaps we should add the
> loadMissing parameter - and default to false on the ImageRepository
> class as well.
>
> Done.
libs-gui/toolkit/source/layout/core/helper.cxx (method
>> layoutimpl::loadGraphic)
>> itself called in toolkit/source/awt/vclxbutton.cxx
>> and in toolkit/source/layout/vcl/wbutton.cxx
>>
> This should be substituting missing icons.
>
Done in helper.cxx
Wrt. testing, I would try adding a custom item / icon to a toolbar
> and
> then editing the file to rename the icon named (so it doesn't exist),
> and re-loading [ prolly easiest if saved as flat-XML ? ] to see if we
> get the right behaviour with the missing icon code there (?).
>
>
Is there a tutorial somewhere? It doesn't look so obvious to me...
I have tried to rename an icon in a existing .xhp file but I still see the
correct icon. Not sure I have modified the correct file
Attached patch is LGPLv3+/MPL.
As suggested by Andrew I have used an existing icon for the fallback icon.
I'll continue with auditing the usage of vcl/image.hxx. And of course a bit
of testing.
Regards,
Joachim.
diff --git a/sd/source/ui/view/viewoverlaymanager.cxx b/sd/source/ui/view/viewoverlaymanager.cxx
index 1a09d86..d2fa1fe 100644
--- a/sd/source/ui/view/viewoverlaymanager.cxx
+++ b/sd/source/ui/view/viewoverlaymanager.cxx
@@ -45,7 +45,6 @@
#include <tools/rcid.h>
#include <vcl/help.hxx>
-#include <vcl/imagerepository.hxx>
#include <vcl/lazydelete.hxx>
#include <svx/sdrpagewindow.hxx>
diff --git a/toolkit/source/layout/core/helper.cxx b/toolkit/source/layout/core/helper.cxx
index 0afd3a4..791901b 100644
--- a/toolkit/source/layout/core/helper.cxx
+++ b/toolkit/source/layout/core/helper.cxx
@@ -595,7 +595,7 @@ uno::Reference< graphic::XGraphic > loadGraphic( const char *pName )
if ( aStr.compareToAscii( ".uno:" ) == 0 )
aStr = aStr.copy( 5 ).toAsciiLowerCase();
- if ( !vcl::ImageRepository::loadImage( OUString::createFromAscii( pName ), aBmp, true ) )
+ if ( !vcl::ImageRepository::loadImage( OUString::createFromAscii( pName ), aBmp, true, true ) )
return uno::Reference< graphic::XGraphic >();
return Graphic( aBmp ).GetXGraphic();
diff --git a/vcl/inc/vcl/imagerepository.hxx b/vcl/inc/vcl/imagerepository.hxx
index a9009df..c51b3c6 100644
--- a/vcl/inc/vcl/imagerepository.hxx
+++ b/vcl/inc/vcl/imagerepository.hxx
@@ -59,7 +59,8 @@ namespace vcl
static bool loadImage(
const ::rtl::OUString& _rName,
BitmapEx& _out_rImage,
- bool bSearchLanguageDependent
+ bool bSearchLanguageDependent,
+ bool loadMissing = false
);
};
diff --git a/vcl/source/gdi/bitmapex.cxx b/vcl/source/gdi/bitmapex.cxx
index 43589e3..f63c0fe 100644
--- a/vcl/source/gdi/bitmapex.cxx
+++ b/vcl/source/gdi/bitmapex.cxx
@@ -104,7 +104,7 @@ BitmapEx::BitmapEx( const ResId& rResId ) :
const String aFileName( pResMgr->ReadString() );
::rtl::OUString aCurrentSymbolsStyle = Application::GetSettings().GetStyleSettings().GetCurrentSymbolsStyleName();
- if( !aImageTree->loadImage( aFileName, aCurrentSymbolsStyle, *this ) )
+ if( !aImageTree->loadImage( aFileName, aCurrentSymbolsStyle, *this, true ) )
{
#ifdef DBG_UTIL
ByteString aErrorStr( "BitmapEx::BitmapEx( const ResId& rResId ): could not load image <" );
diff --git a/vcl/source/gdi/imagerepository.cxx b/vcl/source/gdi/imagerepository.cxx
index fa358c9..416bc88 100644
--- a/vcl/source/gdi/imagerepository.cxx
+++ b/vcl/source/gdi/imagerepository.cxx
@@ -42,12 +42,12 @@ namespace vcl
//= ImageRepository
//====================================================================
//--------------------------------------------------------------------
- bool ImageRepository::loadImage( const ::rtl::OUString& _rName, BitmapEx& _out_rImage, bool _bSearchLanguageDependent )
+ bool ImageRepository::loadImage( const ::rtl::OUString& _rName, BitmapEx& _out_rImage, bool _bSearchLanguageDependent, bool loadMissing )
{
::rtl::OUString sCurrentSymbolsStyle = Application::GetSettings().GetStyleSettings().GetCurrentSymbolsStyleName();
ImplImageTreeSingletonRef aImplImageTree;
- return aImplImageTree->loadImage( _rName, sCurrentSymbolsStyle, _out_rImage, _bSearchLanguageDependent );
+ return aImplImageTree->loadImage( _rName, sCurrentSymbolsStyle, _out_rImage, _bSearchLanguageDependent, loadMissing );
}
//........................................................................
diff --git a/vcl/source/gdi/impimagetree.cxx b/vcl/source/gdi/impimagetree.cxx
index 5bf567d..61fb625 100644
--- a/vcl/source/gdi/impimagetree.cxx
+++ b/vcl/source/gdi/impimagetree.cxx
@@ -165,9 +165,9 @@ bool ImplImageTree::loadImage(
try {
OSL_TRACE(
- "ImplImageTree::loadImage exception couldn't load \"%s\", fetching missing_icon.png",
+ "ImplImageTree::loadImage exception couldn't load \"%s\", fetching res/grafikde.png",
rtl::OUStringToOString(name, RTL_TEXTENCODING_UTF8).getStr());
- found = doLoadImage( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("res/missing_icon.png")),
+ found = doLoadImage( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("res/grafikde.png")),
style, bitmap, false);
} catch (css::uno::RuntimeException &) {
throw;
_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice