diff options
author | Michael Rodenhurst <thorn@osirion.org> | 2012-08-08 20:25:54 +0000 |
---|---|---|
committer | Michael Rodenhurst <thorn@osirion.org> | 2012-08-08 20:25:54 +0000 |
commit | b5b37f5bb56dde0cad8eacbed178fc340001b36c (patch) | |
tree | 74fcaad622d8ab36da43d2b4fa9035710bf58d60 /src/mapwidget.cc | |
parent | c0baccff25de0fad68a0dc66f535c82783540256 (diff) |
Shortcut keys for Edit Add and Edit Duplicate. Implement EditDuplicate functionality.
Diffstat (limited to 'src/mapwidget.cc')
-rw-r--r-- | src/mapwidget.cc | 19 |
1 files changed, 19 insertions, 0 deletions
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<EntityWidget *> 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() |