Override select, to create/delete temporary label-moving objects
| 1628 | |
| 1629 | // Override select, to create/delete temporary label-moving objects |
| 1630 | void wxLineShape::Select(bool select, wxDC* dc) |
| 1631 | { |
| 1632 | wxShape::Select(select, dc); |
| 1633 | if (select) |
| 1634 | { |
| 1635 | for (int i = 0; i < 3; i++) |
| 1636 | { |
| 1637 | wxNode *node = m_regions.Item(i); |
| 1638 | if (node) |
| 1639 | { |
| 1640 | wxShapeRegion *region = (wxShapeRegion *)node->GetData(); |
| 1641 | if (region->m_formattedText.GetCount() > 0) |
| 1642 | { |
| 1643 | double w, h, x, y, xx, yy; |
| 1644 | region->GetSize(&w, &h); |
| 1645 | region->GetPosition(&x, &y); |
| 1646 | GetLabelPosition(i, &xx, &yy); |
| 1647 | if (m_labelObjects[i]) |
| 1648 | { |
| 1649 | m_labelObjects[i]->Select(false); |
| 1650 | m_labelObjects[i]->RemoveFromCanvas(m_canvas); |
| 1651 | delete m_labelObjects[i]; |
| 1652 | } |
| 1653 | m_labelObjects[i] = OnCreateLabelShape(this, region, w, h); |
| 1654 | m_labelObjects[i]->AddToCanvas(m_canvas); |
| 1655 | m_labelObjects[i]->Show(true); |
| 1656 | if (dc) |
| 1657 | m_labelObjects[i]->Move(*dc, (double)(x + xx), (double)(y + yy)); |
| 1658 | m_labelObjects[i]->Select(true, dc); |
| 1659 | } |
| 1660 | } |
| 1661 | } |
| 1662 | } |
| 1663 | else |
| 1664 | { |
| 1665 | for (int i = 0; i < 3; i++) |
| 1666 | { |
| 1667 | if (m_labelObjects[i]) |
| 1668 | { |
| 1669 | m_labelObjects[i]->Select(false, dc); |
| 1670 | m_labelObjects[i]->Erase(*dc); |
| 1671 | m_labelObjects[i]->RemoveFromCanvas(m_canvas); |
| 1672 | delete m_labelObjects[i]; |
| 1673 | m_labelObjects[i] = NULL; |
| 1674 | } |
| 1675 | } |
| 1676 | } |
| 1677 | } |
| 1678 | |
| 1679 | /* |
| 1680 | * Line control point |
no test coverage detected