def updatepos(self): self.setUpdatesEnabled(False) pos = QCursor().pos() geometry = self.geometry() geometry.moveTo(pos.x() + self.CURSOR_OFFSET, pos.y() + self.CURSOR_OFFSET) intersected = geometry.intersected(self.screen_geometry) while True: if not intersected == geometry: #too big geometry = intersected self.isShrinked = True break if self.isShrinked: #enlarge geometry.setSize(self.orig_size) intersected = geometry.intersected(self.screen_geometry) if not intersected == geometry: self.isShrinked = True geometry = intersected else: self.isShrinked = False break break if geometry.intersects(self.screen_geometry): self.setGeometry(geometry) self.setUpdatesEnabled(True)