aboutsummaryrefslogtreecommitdiffstats
path: root/src/gui/MachinaCanvas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/MachinaCanvas.cpp')
-rw-r--r--src/gui/MachinaCanvas.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/gui/MachinaCanvas.cpp b/src/gui/MachinaCanvas.cpp
index efb677f..2869c22 100644
--- a/src/gui/MachinaCanvas.cpp
+++ b/src/gui/MachinaCanvas.cpp
@@ -62,7 +62,7 @@ MachinaCanvas::node_clicked(WeakPtr<NodeView> item, GdkEventButton* event)
if (last) {
if (node != last) {
- if (get_connection(last, node))
+ if (get_connection(last.get(), node.get()))
action_disconnect(last, node);
else
action_connect(last, node);
@@ -112,7 +112,7 @@ MachinaCanvas::on_new_object(SharedPtr<Client::ClientObject> object)
WeakPtr<NodeView>(view)));
object->set_view(view);
- add_item(view);
+ add_item(view.get());
} else if (type == "machina:Edge") {
SharedPtr<Machina::Client::ClientObject> tail = _app->client_model()->find(
@@ -126,11 +126,11 @@ MachinaCanvas::on_new_object(SharedPtr<Client::ClientObject> object)
SharedPtr<EdgeView> view(
new EdgeView(*this, tail_view, head_view, object));
- tail_view->add_connection(view);
- head_view->add_connection(view);
+ tail_view->add_connection(view.get());
+ head_view->add_connection(view.get());
object->set_view(view);
- add_connection(view);
+ add_connection(view.get());
} else {
Raul::error << "Unknown object type " << type << std::endl;
@@ -142,14 +142,11 @@ MachinaCanvas::on_erase_object(SharedPtr<Client::ClientObject> object)
{
const Raul::Atom& type = object->get(URIs::instance().rdf_type);
if (type == "machina:Node") {
- SharedPtr<NodeView> view = PtrCast<NodeView>(object->view());
- if (view) {
- remove_item(view);
- }
+ // Destruction of the view will remove from the canvas
} else if (type == "machina:Edge") {
SharedPtr<EdgeView> view = PtrCast<EdgeView>(object->view());
if (view) {
- remove_connection(view->source().lock(), view->dest().lock());
+ remove_connection(view->source(), view->dest());
}
} else {
Raul::error << "Unknown object type " << type << std::endl;