| 88 | } |
| 89 | |
| 90 | void MyGraphicsView::mouseReleaseEvent(QMouseEvent *event){ |
| 91 | if(onMiddlePress){ |
| 92 | onMiddlePress = false; |
| 93 | return; |
| 94 | } |
| 95 | if(itemState == NON){ |
| 96 | if(selItem == nullptr){ |
| 97 | //create vex |
| 98 | if(onRightPress) |
| 99 | onRightPress = false; |
| 100 | else |
| 101 | addVex(mapToScene(event->pos())); |
| 102 | } |
| 103 | else{ |
| 104 | //deselect |
| 105 | if(event->buttons() == 0){ |
| 106 | selItem = nullptr; |
| 107 | emit unselected(); |
| 108 | } |
| 109 | else if(selItem != nullptr) |
| 110 | itemState |= SEL; |
| 111 | } |
| 112 | } |
| 113 | else if(itemState & ADD){ |
| 114 | clearSketch(); |
| 115 | itemState = NON; |
| 116 | if(selItem == nullptr){ |
| 117 | selItem = addVex(mapToScene(event->pos())); |
| 118 | ((MyGraphicsVexItem*)selItem)->select(); |
| 119 | addLine(strtVex, (MyGraphicsVexItem*)selItem); |
| 120 | } |
| 121 | else if(selItem->type() == QGraphicsItem::UserType + 1){ |
| 122 | addLine(strtVex, (MyGraphicsVexItem*)selItem); |
| 123 | } |
| 124 | else{ |
| 125 | itemState = SEL | selItem->type(); |
| 126 | } |
| 127 | emit selected(selItem); |
| 128 | } |
| 129 | else if(itemState & SEL) |
| 130 | emit selected(selItem); |
| 131 | emit mouseReleased(); |
| 132 | changeCursor(); |
| 133 | } |
| 134 | |
| 135 | void MyGraphicsView::mouseMoveEvent(QMouseEvent *event){ |
| 136 | if(onMiddlePress){ |