// if elt parent is present, force inside it bool ActivityContainerCanvas::force_inside(DiagramCanvas * elt, bool part) { // if its parent is present, force inside it Q3CanvasItemList all = elt->the_canvas()->allItems(); Q3CanvasItemList::Iterator cit; BrowserNode * parent = (BrowserNode *) elt->get_bn()->parent(); for (cit = all.begin(); cit != all.end(); ++cit) { if ((*cit)->visible()) { DiagramItem * di = QCanvasItemToDiagramItem(*cit); if ((di != 0) && IsaActivityContainer(di->type(), part) && (((ActivityContainerCanvas *) di)->get_bn() == parent)) { BooL under = FALSE; ((ActivityContainerCanvas *) di)->force_inside(elt, elt, under); if (under) elt->upper(); return TRUE; } } } elt->upper(); return FALSE; }
BrowserNode * ActivityDiagramView::container(const QPoint & p, bool part) { Q3CanvasItem * ci = the_canvas()->collision(p); DiagramItem * di; return ((ci != 0) && ((di = QCanvasItemToDiagramItem(ci)) != 0) && IsaActivityContainer(di->type(), part)) ? ((ActivityContainerCanvas *) di)->get_bn() : (BrowserNode *) window()->browser_diagram()->parent(); }
bool ActivityActionCanvas::force_inside() { // if its parent is present, force inside it QCanvasItemList all = the_canvas()->allItems(); QCanvasItemList::Iterator cit; BrowserNode * parent = (BrowserNode *) browser_node->parent(); for (cit = all.begin(); cit != all.end(); ++cit) { if ((*cit)->visible()) { DiagramItem * di = QCanvasItemToDiagramItem(*cit); if ((di != 0) && IsaActivityContainer(di->type()) && (((ActivityContainerCanvas *) di)->get_bn() == parent)) { ((ActivityContainerCanvas *) di)->force_inside(this, this); return TRUE; } } } return FALSE; }