From e90fa31bf915ee79714435c9065c3c80a0fe30e5 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Wed, 17 Mar 2010 19:37:52 +0000 Subject: [PATCH] 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 --- part.cpp | 3 ++- ui/guiutils.cpp | 14 +++++++++----- ui/guiutils.h | 3 ++- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/part.cpp b/part.cpp index 5431d3d01..685ad5be5 100644 --- a/part.cpp +++ b/part.cpp @@ -256,7 +256,7 @@ m_cliPresentation(false), m_embedMode(detectEmbedMode(parentWidget, parent, args // we need an instance setComponentData(okularPartFactory::componentData()); - GuiUtils::setIconLoader( iconLoader() ); + GuiUtils::addIconLoader( iconLoader() ); m_sidebar = new Sidebar( parentWidget ); setWidget( m_sidebar ); @@ -623,6 +623,7 @@ m_cliPresentation(false), m_embedMode(detectEmbedMode(parentWidget, parent, args Part::~Part() { + GuiUtils::removeIconLoader( iconLoader() ); m_document->removeObserver( this ); if ( m_document->isOpened() ) diff --git a/ui/guiutils.cpp b/ui/guiutils.cpp index 7fbac26de..46adf0450 100644 --- a/ui/guiutils.cpp +++ b/ui/guiutils.cpp @@ -29,13 +29,12 @@ struct GuiUtilsHelper { GuiUtilsHelper() - : il( 0 ) { } QSvgRenderer* svgStamps(); - KIconLoader * il; + QList il; std::auto_ptr< QSvgRenderer > svgStampFile; }; @@ -187,14 +186,19 @@ QPixmap loadStamp( const QString& _name, const QSize& size, int iconSize ) 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() { - 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 ) diff --git a/ui/guiutils.h b/ui/guiutils.h index bbbf85c08..b68e21196 100644 --- a/ui/guiutils.h +++ b/ui/guiutils.h @@ -37,7 +37,8 @@ namespace GuiUtils 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(); void saveEmbeddedFile( Okular::EmbeddedFile *ef, QWidget *parent );