From b5b37f5bb56dde0cad8eacbed178fc340001b36c Mon Sep 17 00:00:00 2001 From: Michael Rodenhurst Date: Wed, 8 Aug 2012 20:25:54 +0000 Subject: Shortcut keys for Edit Add and Edit Duplicate. Implement EditDuplicate functionality. --- src/mapwidget.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/mapwidget.cc') diff --git a/src/mapwidget.cc b/src/mapwidget.cc index 2ce1def..d960c0a 100644 --- a/src/mapwidget.cc +++ b/src/mapwidget.cc @@ -290,15 +290,34 @@ EntityWidget *MapWidget::addEntity() void MapWidget::duplicateSelected() { + std::vector new_widgets; + for (int i = 0; i < mapwidget_enties.size(); ++i) { EntityWidget *entitywidget = mapwidget_enties.at(i); if (entitywidget->selected()) { // duplicate the child widget + EntityWidget *new_entitywidget = addEntity(); + new_widgets.push_back(new_entitywidget); + new_entitywidget->assign(*entitywidget); + + // offset the new widget's position + const int offset = 32; + Vector3f location = new_entitywidget->properties()->location(); + new_entitywidget->properties()->set_location(location.x() + offset, location.y() - offset, location.z()); + // deselect the old widgets + entitywidget->set_selected(false); } else { } } + + // select the new widgets + for(int i = 0; i < new_widgets.size(); ++i) + new_widgets.at(i)->set_selected(true); + + resizeChildren(); + update(); } void MapWidget::deleteSelected() -- cgit v1.2.3