make the iconloader in GuiUtils a stack

Fixes problems when the same program uses more than one okular part at once
BUGS: 231123

svn path=/trunk/KDE/kdegraphics/okular/; revision=1104494
remotes/origin/KDE/4.5
Albert Astals Cid 16 years ago
parent a212da143a
commit e90fa31bf9
  1. 3
      part.cpp
  2. 14
      ui/guiutils.cpp
  3. 3
      ui/guiutils.h

@ -256,7 +256,7 @@ m_cliPresentation(false), m_embedMode(detectEmbedMode(parentWidget, parent, args
// we need an instance // we need an instance
setComponentData(okularPartFactory::componentData()); setComponentData(okularPartFactory::componentData());
GuiUtils::setIconLoader( iconLoader() ); GuiUtils::addIconLoader( iconLoader() );
m_sidebar = new Sidebar( parentWidget ); m_sidebar = new Sidebar( parentWidget );
setWidget( m_sidebar ); setWidget( m_sidebar );
@ -623,6 +623,7 @@ m_cliPresentation(false), m_embedMode(detectEmbedMode(parentWidget, parent, args
Part::~Part() Part::~Part()
{ {
GuiUtils::removeIconLoader( iconLoader() );
m_document->removeObserver( this ); m_document->removeObserver( this );
if ( m_document->isOpened() ) if ( m_document->isOpened() )

@ -29,13 +29,12 @@
struct GuiUtilsHelper struct GuiUtilsHelper
{ {
GuiUtilsHelper() GuiUtilsHelper()
: il( 0 )
{ {
} }
QSvgRenderer* svgStamps(); QSvgRenderer* svgStamps();
KIconLoader * il; QList<KIconLoader *> il;
std::auto_ptr< QSvgRenderer > svgStampFile; std::auto_ptr< QSvgRenderer > svgStampFile;
}; };
@ -187,14 +186,19 @@ QPixmap loadStamp( const QString& _name, const QSize& size, int iconSize )
return pixmap; return pixmap;
} }
void setIconLoader( KIconLoader * loader ) void addIconLoader( KIconLoader * loader )
{ {
s_data->il = loader; s_data->il.append( loader );
}
void removeIconLoader( KIconLoader * loader )
{
s_data->il.removeAll( loader );
} }
KIconLoader* iconLoader() KIconLoader* iconLoader()
{ {
return s_data->il ? s_data->il : KIconLoader::global(); return s_data->il.isEmpty() ? KIconLoader::global() : s_data->il.back();
} }
void saveEmbeddedFile( Okular::EmbeddedFile *ef, QWidget *parent ) void saveEmbeddedFile( Okular::EmbeddedFile *ef, QWidget *parent )

@ -37,7 +37,8 @@ namespace GuiUtils
QPixmap loadStamp( const QString& name, const QSize& size, int iconSize = 0 ); QPixmap loadStamp( const QString& name, const QSize& size, int iconSize = 0 );
void setIconLoader( KIconLoader * loader ); void addIconLoader( KIconLoader * loader );
void removeIconLoader( KIconLoader * loader );
KIconLoader* iconLoader(); KIconLoader* iconLoader();
void saveEmbeddedFile( Okular::EmbeddedFile *ef, QWidget *parent ); void saveEmbeddedFile( Okular::EmbeddedFile *ef, QWidget *parent );

Loading…
Cancel
Save