(self, event)
| 2284 | w.setSelected(True) |
| 2285 | |
| 2286 | def mouseReleaseEvent(self, event): |
| 2287 | if event.button() == Qt.LeftButton: |
| 2288 | if self._wire_move_start is not None: |
| 2289 | # Remove bridge-wire previews before any geometry operations. |
| 2290 | for pw in self._wire_pin_preview_wires: |
| 2291 | if pw.scene() is not None: |
| 2292 | self.removeItem(pw) |
| 2293 | self._wire_pin_preview_wires = [] |
| 2294 | # Restore Z-values that were raised at drag-start. |
| 2295 | for wire in self._wire_move_wires: |
| 2296 | if wire.scene() is not None: |
| 2297 | wire.setZValue(Z_WIRE) |
| 2298 | if self._wire_move_moved: |
| 2299 | self._push_snapshot(self._pre_drag_data) |
| 2300 | self._reconnect_after_move() |
| 2301 | # Footprint of the moved wire(s) at their new position. |
| 2302 | moved_segs = [ |
| 2303 | (QPointF(w.points[i]), QPointF(w.points[i + 1])) |
| 2304 | for w in self._wire_move_wires |
| 2305 | for i in range(len(w.points) - 1) |
| 2306 | ] |
| 2307 | # Rule 1: bridge any moved-wire endpoint back to the component |
| 2308 | # pin it left, so moving a wire never silently disconnects it. |
| 2309 | for comp, local, wire, idx in self._wire_pin_anchors: |
| 2310 | if wire.scene() is None or comp.scene() is None: |
| 2311 | continue |
| 2312 | new_pt = wire.points[idx] |
| 2313 | cur_pin = comp.mapToScene(QPointF(*local)) |
| 2314 | if _pt_key(new_pt) != _pt_key(cur_pin): |
| 2315 | self.addItem(WireItem(_elbow(QPointF(cur_pin), |
| 2316 | QPointF(new_pt), True))) |
| 2317 | self._sync_junctions() |
| 2318 | self._remove_short_circuit_wires() |
| 2319 | self._sync_junctions() |
| 2320 | self._reselect_on_footprint(moved_segs) |
| 2321 | self.update() |
| 2322 | self._pre_drag_data = None |
| 2323 | self._wire_move_start = None |
| 2324 | self._wire_move_wires = [] |
| 2325 | self._wire_move_origins = [] |
| 2326 | self._wire_move_others = [] |
| 2327 | self._wire_move_moved = False |
| 2328 | self._wire_move_rb = [] |
| 2329 | self._wire_move_junctions = [] |
| 2330 | self._wire_pin_anchors = [] |
| 2331 | self._wire_pin_preview_wires = [] |
| 2332 | return |
| 2333 | if self._vdrag_wire is not None: |
| 2334 | # Remove pin preview regardless of movement. |
| 2335 | if self._vdrag_pin_preview is not None: |
| 2336 | if self._vdrag_pin_preview.scene() is not None: |
| 2337 | self.removeItem(self._vdrag_pin_preview) |
| 2338 | self._vdrag_pin_preview = None |
| 2339 | if self._vdrag_moved: |
| 2340 | self._push_snapshot(self._pre_drag_data) |
| 2341 | # Bridge wire: if the dragged vertex left its component pin, |
| 2342 | # add a wire from the pin to the new vertex position. |
| 2343 | if self._vdrag_pin_anchor is not None: |
nothing calls this directly
no test coverage detected