summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/selection-describer.cpp10
-rw-r--r--src/selection-describer.h3
2 files changed, 12 insertions, 1 deletions
diff --git a/src/selection-describer.cpp b/src/selection-describer.cpp
index 6d80cfe5c..bd8403054 100644
--- a/src/selection-describer.cpp
+++ b/src/selection-describer.cpp
@@ -97,10 +97,18 @@ namespace Inkscape {
SelectionDescriber::SelectionDescriber(Inkscape::Selection *selection, MessageStack *stack)
: _context(stack)
{
- selection->connectChanged(sigc::mem_fun(*this, &SelectionDescriber::_updateMessageFromSelection));
+ _selection_changed_connection = new sigc::connection (
+ selection->connectChanged(
+ sigc::mem_fun(*this, &SelectionDescriber::_updateMessageFromSelection)));
_updateMessageFromSelection(selection);
}
+SelectionDescriber::~SelectionDescriber()
+{
+ _selection_changed_connection->disconnect();
+ delete _selection_changed_connection;
+}
+
void SelectionDescriber::_updateMessageFromSelection(Inkscape::Selection *selection) {
GSList const *items = selection->itemList();
diff --git a/src/selection-describer.h b/src/selection-describer.h
index cd892bd14..91948c2fd 100644
--- a/src/selection-describer.h
+++ b/src/selection-describer.h
@@ -24,10 +24,13 @@ class MessageStack;
class SelectionDescriber : public sigc::trackable {
public:
SelectionDescriber(Inkscape::Selection *selection, MessageStack *stack);
+ ~SelectionDescriber();
private:
void _updateMessageFromSelection(Inkscape::Selection *selection);
+ sigc::connection *_selection_changed_connection;
+
MessageContext _context;
};