Le test des boutons de la souris n'est pas fiable, tant que le set_pos n'aura pas...
[minwii.git] / src / minwii / widgets / cursors.py
index fa1f673..4edc2dc 100755 (executable)
@@ -10,7 +10,7 @@ import pygame
 import os
 from threading import Thread
 import time
 import os
 from threading import Thread
 import time
-from eventutils import EventHandlerMixin, event_handler
+from minwii.eventutils import EventHandlerMixin, event_handler
 from itertools import cycle
 
 class WarpingCursor(pygame.sprite.DirtySprite, EventHandlerMixin):
 from itertools import cycle
 
 class WarpingCursor(pygame.sprite.DirtySprite, EventHandlerMixin):
@@ -48,6 +48,7 @@ class WarpingCursor(pygame.sprite.DirtySprite, EventHandlerMixin):
         self.duration = duration
         
         self.image = self.images[0]
         self.duration = duration
         
         self.image = self.images[0]
+        self.pressed = False
         # workarround cursor alignement problem
         pygame.event.set_blocked(pygame.MOUSEMOTION)
         pygame.mouse.set_pos(pygame.mouse.get_pos())
         # workarround cursor alignement problem
         pygame.event.set_blocked(pygame.MOUSEMOTION)
         pygame.mouse.set_pos(pygame.mouse.get_pos())
@@ -91,6 +92,7 @@ class WarpingCursor(pygame.sprite.DirtySprite, EventHandlerMixin):
         self.dirty = 1
         self._blinking = False
         self.image = self.flashImage
         self.dirty = 1
         self._blinking = False
         self.image = self.flashImage
+        self.pressed = True
 
     @event_handler(pygame.MOUSEBUTTONUP)
     def flashOff(self, event) :
 
     @event_handler(pygame.MOUSEBUTTONUP)
     def flashOff(self, event) :
@@ -99,11 +101,14 @@ class WarpingCursor(pygame.sprite.DirtySprite, EventHandlerMixin):
             self._blinking = True
         else :
             self.image = self.images[0]
             self._blinking = True
         else :
             self.image = self.images[0]
+        self.pressed = False
     
     @event_handler(pygame.MOUSEMOTION)
     def move(self, event) :
         self.dirty = 1
     
     @event_handler(pygame.MOUSEMOTION)
     def move(self, event) :
         self.dirty = 1
-        self.rect.move_ip(event.rel)
+        x, y = pygame.mouse.get_pos()
+        rel = (x - self.rect.centerx, y - self.rect.centery)
+        self.rect.move_ip(rel)
     
     def setPosition(self, pos) :
         self.dirty = 1
     
     def setPosition(self, pos) :
         self.dirty = 1
@@ -127,4 +132,4 @@ class ForeverTimer(Thread) :
             time.sleep(self.duration)
     
     def stop(self) :
             time.sleep(self.duration)
     
     def stop(self) :
-        self.running = False
\ No newline at end of file
+        self.running = False