[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [krita] libs/ui/widgets: Fix crash when the Iconwidget tries to display an already deleted resource
From: Sven Langkamp <sven.langkamp () gmail ! com>
Date: 2016-08-27 12:30:48
Message-ID: E1bdcl6-0005I3-JV () code ! kde ! org
[Download RAW message or body]
Git commit 88a03cd3777a820db835f1e5eceb27346dd52d03 by Sven Langkamp.
Committed on 27/08/2016 at 12:29.
Pushed by langkamp into branch 'master'.
Fix crash when the Iconwidget tries to display an already deleted resource
Based on patch by Bruno P. Kinoshita
CCBUG:366741
M +11 -2 libs/ui/widgets/kis_iconwidget.cc
M +2 -0 libs/ui/widgets/kis_iconwidget.h
http://commits.kde.org/krita/88a03cd3777a820db835f1e5eceb27346dd52d03
diff --git a/libs/ui/widgets/kis_iconwidget.cc b/libs/ui/widgets/kis_iconwidget.cc
index 988b188..d3454b9 100644
--- a/libs/ui/widgets/kis_iconwidget.cc
+++ b/libs/ui/widgets/kis_iconwidget.cc
@@ -74,8 +74,10 @@ void KisIconWidget::paintEvent(QPaintEvent *event)
void KisIconWidget::setResourceAdapter(QSharedPointer<KoAbstractResourceServerAdapter> \
adapter) {
Q_ASSERT(adapter);
- adapter->connectToResourceServer();
- connect(adapter.data(), SIGNAL(resourceChanged(KoResource*)), this, \
SLOT(slotAdapterResourceChanged(KoResource*))); + m_adapter = adapter;
+ m_adapter->connectToResourceServer();
+ connect(m_adapter.data(), SIGNAL(resourceChanged(KoResource*)), this, \
SLOT(slotAdapterResourceChanged(KoResource*))); + connect(m_adapter.data(), \
SIGNAL(removingResource(KoResource*)), this, \
SLOT(slotAdapterResourceRemoved(KoResource*))); }
void KisIconWidget::slotAdapterResourceChanged(KoResource* resource)
@@ -84,3 +86,10 @@ void KisIconWidget::slotAdapterResourceChanged(KoResource* \
resource) update();
}
}
+
+void KisIconWidget::slotAdapterResourceRemoved(KoResource* resource)
+{
+ if (m_resource == resource) {
+ m_resource = 0;
+ }
+}
diff --git a/libs/ui/widgets/kis_iconwidget.h b/libs/ui/widgets/kis_iconwidget.h
index 7cd56f1..480c3f5 100644
--- a/libs/ui/widgets/kis_iconwidget.h
+++ b/libs/ui/widgets/kis_iconwidget.h
@@ -44,12 +44,14 @@ public:
public Q_SLOTS:
void slotSetItem(KoResource * resource);
void slotAdapterResourceChanged(KoResource * resource);
+ void slotAdapterResourceRemoved(KoResource * resource);
protected:
virtual void paintEvent(QPaintEvent *);
private:
KoResource *m_resource;
+ QSharedPointer<KoAbstractResourceServerAdapter> m_adapter;
};
#endif // KIS_ICONWIDGET_H_
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic