--- a/tuikit/driver/cursesw.py Wed Sep 03 19:17:04 2014 +0200
+++ b/tuikit/driver/cursesw.py Wed Sep 03 21:56:20 2014 +0200
@@ -4,6 +4,7 @@
from tuikit.driver.driver import Driver
from tuikit.core.events import ResizeEvent, KeypressEvent
+from tuikit.core.coords import Point
class CursesWDriver(Driver):
@@ -65,7 +66,7 @@
self.cursor = None
self.colors = {} # maps names to curses attributes
self.colorpairs = {} # maps tuple (fg,bg) to curses color_pair
- self._mouse_last_pos = (None, None)
+ self._mouse_last_pos = None # Point
self._mouse_last_bstate = None
## initialization, finalization ##
@@ -205,13 +206,13 @@
except curses.error:
return out
+ pos = Point(x, y)
if bstate & curses.REPORT_MOUSE_POSITION:
- if self._mouse_last_pos != (x, y):
- if self._mouse_last_pos[0] is not None:
- relx = x - (self._mouse_last_pos[0] or 0)
- rely = y - (self._mouse_last_pos[1] or 0)
- out += [('mousemove', 0, x, y, relx, rely)]
- self._mouse_last_pos = (x, y)
+ if self._mouse_last_pos != pos:
+ if self._mouse_last_pos:
+ relpos = pos - self._mouse_last_pos
+ out += [('mousemove', 0, pos, relpos)]
+ self._mouse_last_pos = pos
# we are interested only in changes, not buttons already pressed before event
if self._mouse_last_bstate is not None:
@@ -223,21 +224,21 @@
self._mouse_last_bstate = bstate
if bstate & curses.BUTTON1_PRESSED:
- out += [('mousedown', 1, x, y)]
+ out += [('mousedown', 1, pos)]
if bstate & curses.BUTTON2_PRESSED:
- out += [('mousedown', 2, x, y)]
+ out += [('mousedown', 2, pos)]
if bstate & curses.BUTTON3_PRESSED:
- out += [('mousedown', 3, x, y)]
+ out += [('mousedown', 3, pos)]
if bstate & curses.BUTTON1_RELEASED:
- out += [('mouseup', 1, x, y)]
+ out += [('mouseup', 1, pos)]
if bstate & curses.BUTTON2_RELEASED:
- out += [('mouseup', 2, x, y)]
+ out += [('mouseup', 2, pos)]
if bstate & curses.BUTTON3_RELEASED:
- out += [('mouseup', 3, x, y)]
+ out += [('mouseup', 3, pos)]
# reset last pos when pressed/released
if len(out) > 0 and out[-1][0] in ('mousedown', 'mouseup'):
- self._mouse_last_pos = (None, None)
+ self._mouse_last_pos = None
return out