3232class Canvas (QWidget ):
3333 zoomRequest = pyqtSignal (int )
3434 scrollRequest = pyqtSignal (int , int )
35+ pixelScrollRequest = pyqtSignal (int , int )
3536 newShape = pyqtSignal ()
3637 # selectionChanged = pyqtSignal(bool)
3738 selectionChanged = pyqtSignal (list )
@@ -212,10 +213,11 @@ def mouseMoveEvent(self, ev):
212213 self .movingShape = True
213214 else :
214215 # pan
215- delta_x = pos .x () - self .pan_initial_pos .x ()
216- delta_y = pos .y () - self .pan_initial_pos .y ()
217- self .scrollRequest .emit (delta_x , Qt .Horizontal )
218- self .scrollRequest .emit (delta_y , Qt .Vertical )
216+ delta = ev .globalPos () - self .pan_initial_pos
217+ if delta .x () != 0 or delta .y () != 0 :
218+ self .overrideCursor (CURSOR_MOVE )
219+ self .pixelScrollRequest .emit (delta .x (), delta .y ())
220+ self .pan_initial_pos = ev .globalPos ()
219221 self .update ()
220222 return
221223
@@ -282,7 +284,7 @@ def mousePressEvent(self, ev):
282284 group_mode = int (ev .modifiers ()) == Qt .ControlModifier
283285 self .selectShapePoint (pos , multiple_selection_mode = group_mode )
284286 self .prevPoint = pos
285- self .pan_initial_pos = pos
287+ self .pan_initial_pos = ev . globalPos ()
286288
287289 elif ev .button () == Qt .RightButton and self .editing ():
288290 group_mode = int (ev .modifiers ()) == Qt .ControlModifier
@@ -306,13 +308,14 @@ def mouseReleaseEvent(self, ev):
306308 else :
307309 self .overrideCursor (CURSOR_GRAB )
308310
309- elif ev .button () == Qt .LeftButton and not self .fourpoint :
310- pos = self .transformPos (ev .pos ())
311+ elif ev .button () == Qt .LeftButton :
311312 if self .drawing ():
312- self .handleDrawing (pos )
313- else :
313+ if not self .fourpoint :
314+ pos = self .transformPos (ev .pos ())
315+ self .handleDrawing (pos )
316+ elif not self .selectedShapes :
314317 # pan
315- QApplication . restoreOverrideCursor () # ?
318+ self . overrideCursor ( CURSOR_DEFAULT )
316319
317320 if self .movingShape and self .hShape :
318321 if self .hShape in self .shapes :
0 commit comments