From 69ae98cb453849c6d32a1c7ea8bc057fb13deea3 Mon Sep 17 00:00:00 2001 From: "Liam P. White" Date: Wed, 25 Jun 2014 11:32:51 -0400 Subject: 1. make it compile (bzr r13341.5.1) --- src/document.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/document.cpp') diff --git a/src/document.cpp b/src/document.cpp index f79a00178..80e9bfe4f 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -218,7 +218,7 @@ SPDocument::~SPDocument() { } if (keepalive) { - inkscape_unref(); + inkscape_unref(INKSCAPE); keepalive = FALSE; } @@ -448,7 +448,7 @@ SPDocument *SPDocument::createDoc(Inkscape::XML::Document *rdoc, rdf_set_defaults( document ); if (keepalive) { - inkscape_ref(); + inkscape_ref(INKSCAPE); } // Check if the document already has a perspective (e.g., when opening an existing -- cgit v1.2.3 From 60f288cc584bf34c65698341427cf377b88c7138 Mon Sep 17 00:00:00 2001 From: "Liam P. White" Date: Wed, 25 Jun 2014 16:21:44 -0400 Subject: 2. connect signals (bzr r13341.5.2) --- src/document.cpp | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) (limited to 'src/document.cpp') diff --git a/src/document.cpp b/src/document.cpp index 80e9bfe4f..ee1a48eb6 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -154,6 +154,17 @@ SPDocument::~SPDocument() { router = NULL; } + if (oldSignalsConnected) { + priv->selChangeConnection.disconnect(); + priv->desktopActivatedConnection.disconnect(); + //g_signal_handlers_disconnect_by_func(G_OBJECT(INKSCAPE), + //reinterpret_cast(DocumentUndo::resetKey), + //static_cast(this)); + } else { + _selection_changed_connection.disconnect(); + _desktop_activated_connection.disconnect(); + } + if (priv) { if (priv->partial) { sp_repr_free_log(priv->partial); @@ -208,15 +219,6 @@ SPDocument::~SPDocument() { rerouting_handler_id = 0; } - if (oldSignalsConnected) { - g_signal_handlers_disconnect_by_func(G_OBJECT(INKSCAPE), - reinterpret_cast(DocumentUndo::resetKey), - static_cast(this)); - } else { - _selection_changed_connection.disconnect(); - _desktop_activated_connection.disconnect(); - } - if (keepalive) { inkscape_unref(INKSCAPE); keepalive = FALSE; @@ -463,10 +465,21 @@ SPDocument *SPDocument::createDoc(Inkscape::XML::Document *rdoc, DocumentUndo::setUndoSensitive(document, true); // reset undo key when selection changes, so that same-key actions on different objects are not coalesced - g_signal_connect(G_OBJECT(INKSCAPE), "change_selection", + document->priv->selChangeConnection = INKSCAPE->signal_selection_changed.connect( + sigc::hide( // hide unused first and second args + sigc::hide(sigc::bind( + sigc::ptr_fun(&DocumentUndo::resetKey), document) + ))); + document->priv->desktopActivatedConnection = INKSCAPE->signal_activate_desktop.connect( + sigc::hide( // hide unused first and second args + sigc::hide(sigc::bind( + sigc::ptr_fun(&DocumentUndo::resetKey), document) + ))); + + /*g_signal_connect(G_OBJECT(INKSCAPE), "change_selection", G_CALLBACK(DocumentUndo::resetKey), document); g_signal_connect(G_OBJECT(INKSCAPE), "activate_desktop", - G_CALLBACK(DocumentUndo::resetKey), document); + G_CALLBACK(DocumentUndo::resetKey), document);*/ document->oldSignalsConnected = true; return document; -- cgit v1.2.3 From cdc7587062b42c39a23451e5c9ec7da06dd6fdb3 Mon Sep 17 00:00:00 2001 From: "Liam P. White" Date: Wed, 25 Jun 2014 21:45:01 -0400 Subject: 3. remove dead code, refactor existing code. Connect overlooked signals. (bzr r13341.5.3) --- src/document.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) (limited to 'src/document.cpp') diff --git a/src/document.cpp b/src/document.cpp index ee1a48eb6..26e59e610 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -50,7 +50,7 @@ #include "document-private.h" #include "document-undo.h" #include "id-clash.h" -#include "inkscape-private.h" +#include "inkscape.h" #include "inkscape-version.h" #include "libavoid/router.h" #include "persp3d.h" @@ -157,9 +157,6 @@ SPDocument::~SPDocument() { if (oldSignalsConnected) { priv->selChangeConnection.disconnect(); priv->desktopActivatedConnection.disconnect(); - //g_signal_handlers_disconnect_by_func(G_OBJECT(INKSCAPE), - //reinterpret_cast(DocumentUndo::resetKey), - //static_cast(this)); } else { _selection_changed_connection.disconnect(); _desktop_activated_connection.disconnect(); @@ -475,11 +472,6 @@ SPDocument *SPDocument::createDoc(Inkscape::XML::Document *rdoc, sigc::hide(sigc::bind( sigc::ptr_fun(&DocumentUndo::resetKey), document) ))); - - /*g_signal_connect(G_OBJECT(INKSCAPE), "change_selection", - G_CALLBACK(DocumentUndo::resetKey), document); - g_signal_connect(G_OBJECT(INKSCAPE), "activate_desktop", - G_CALLBACK(DocumentUndo::resetKey), document);*/ document->oldSignalsConnected = true; return document; -- cgit v1.2.3 From 6dfb9b4eade77ac55d11f05669c2192352b9b8fa Mon Sep 17 00:00:00 2001 From: "Liam P. White" Date: Thu, 26 Jun 2014 13:49:17 -0400 Subject: 4. further refactor Application class; create proper singleton, encapsulate members, simplify signals (bzr r13341.5.6) --- src/document.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/document.cpp') diff --git a/src/document.cpp b/src/document.cpp index 26e59e610..000888772 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -463,15 +463,13 @@ SPDocument *SPDocument::createDoc(Inkscape::XML::Document *rdoc, // reset undo key when selection changes, so that same-key actions on different objects are not coalesced document->priv->selChangeConnection = INKSCAPE->signal_selection_changed.connect( - sigc::hide( // hide unused first and second args sigc::hide(sigc::bind( sigc::ptr_fun(&DocumentUndo::resetKey), document) - ))); + )); document->priv->desktopActivatedConnection = INKSCAPE->signal_activate_desktop.connect( - sigc::hide( // hide unused first and second args sigc::hide(sigc::bind( sigc::ptr_fun(&DocumentUndo::resetKey), document) - ))); + )); document->oldSignalsConnected = true; return document; -- cgit v1.2.3 From 45f373f3319b598d8e0222fb48e9d3a4760b2044 Mon Sep 17 00:00:00 2001 From: "Liam P. White" Date: Fri, 27 Jun 2014 15:23:06 -0400 Subject: 5. Refactoring of Application class: make copy/assignment operators private, disallow pointers to Application (bzr r13341.5.9) --- src/document.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/document.cpp') diff --git a/src/document.cpp b/src/document.cpp index 000888772..c38cfa4ae 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -462,11 +462,11 @@ SPDocument *SPDocument::createDoc(Inkscape::XML::Document *rdoc, DocumentUndo::setUndoSensitive(document, true); // reset undo key when selection changes, so that same-key actions on different objects are not coalesced - document->priv->selChangeConnection = INKSCAPE->signal_selection_changed.connect( + document->priv->selChangeConnection = INKSCAPE.signal_selection_changed.connect( sigc::hide(sigc::bind( sigc::ptr_fun(&DocumentUndo::resetKey), document) )); - document->priv->desktopActivatedConnection = INKSCAPE->signal_activate_desktop.connect( + document->priv->desktopActivatedConnection = INKSCAPE.signal_activate_desktop.connect( sigc::hide(sigc::bind( sigc::ptr_fun(&DocumentUndo::resetKey), document) )); -- cgit v1.2.3 From fa9bd6393f316dab9303569b28f6b5d179fedd61 Mon Sep 17 00:00:00 2001 From: "Liam P. White" Date: Sat, 27 Sep 2014 10:17:45 -0400 Subject: Update to experimental r13565 (bzr r13341.5.16) --- src/document.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/document.cpp') diff --git a/src/document.cpp b/src/document.cpp index c38cfa4ae..dd18186d4 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -1373,7 +1373,7 @@ GSList *SPDocument::getItemsAtPoints(unsigned const key, std::vectorpriv != NULL, NULL); -- cgit v1.2.3