void step_attach_layer() { MyGUI::Widget* widget = get_random(all_widgets); if (!widget) return; if (widget->isRootWidget()) { std::string layername = get_layer(); if (!layername.empty()) MyGUI::LayerManager::getInstance().attachToLayerNode(layername, widget); } test_widgets(); }
void WorkspaceControl::setWidgetCoord(MyGUI::Widget* _widget, const MyGUI::IntCoord& _coord) { EditorWidgets::getInstance().onSetWidgetCoord(_widget, _coord, "WorkspaceControl"); //PropertiesPanelView::getInstance().setCoord(_coord); if (mFreeChildMode) { typedef std::pair<MyGUI::Widget*, MyGUI::IntCoord> PairWidgetCoord; typedef std::vector<PairWidgetCoord> VectorPairWidgetCoord; VectorPairWidgetCoord coords; // запоминаем позиции детей for (size_t index = 0; index < _widget->getChildCount(); ++ index) { MyGUI::Widget* child = _widget->getChildAt(index); if (!child->isRootWidget()) coords.push_back(PairWidgetCoord(child, child->getCoord())); } // на сколько сдвинут виджет MyGUI::IntCoord coordDiff = _coord - _widget->getCoord(); _widget->setCoord(_coord); // восттанавливаем обсолютное положение детей for (VectorPairWidgetCoord::iterator item = coords.begin(); item != coords.end(); ++ item) { WidgetContainer* widgetContainer = EditorWidgets::getInstance().find((*item).first); if (widgetContainer != nullptr) { MyGUI::IntCoord coord = (*item).second; (*item).first->setCoord(coord.left - coordDiff.left, coord.top - coordDiff.top, coord.width, coord.height); } } } else { _widget->setCoord(_coord); } }