comparison gamelib/gamescreen.py @ 397:b1dc0caec668

Improved mouse handling edge cases.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 28 Aug 2010 20:46:06 +0200
parents 56a05ae56574
children 1555677d86f6
comparison
equal deleted inserted replaced
396:ba939334d1db 397:b1dc0caec668
63 self.state.draw(surface, self.screen) 63 self.state.draw(surface, self.screen)
64 64
65 def mouse_down(self, event): 65 def mouse_down(self, event):
66 self.mouse_move(event) 66 self.mouse_move(event)
67 if event.button != 1: # We have a right/middle click 67 if event.button != 1: # We have a right/middle click
68 self.state.set_tool(None) 68 self.state.cancel_doodah(self.screen)
69 return 69 elif self.subwidgets:
70 if self.subwidgets:
71 self.clear_detail() 70 self.clear_detail()
72 self._mouse_move(event.pos) 71 self._mouse_move(event.pos)
73 else: 72 else:
74 result = self.state.interact(event.pos) 73 result = self.state.interact(event.pos)
75 handle_result(result, self) 74 handle_result(result, self)
114 """Hide the detail view""" 113 """Hide the detail view"""
115 if self.state.current_detail is not None: 114 if self.state.current_detail is not None:
116 self.remove(self.detail) 115 self.remove(self.detail)
117 self.state.do_leave_detail() 116 self.state.do_leave_detail()
118 self.state.set_current_detail(None) 117 self.state.set_current_detail(None)
118 self._mouse_move(mouse.get_pos())
119 119
120 120
121 class DetailWindow(Widget): 121 class DetailWindow(Widget):
122 def __init__(self, screen): 122 def __init__(self, screen):
123 Widget.__init__(self) 123 Widget.__init__(self)
143 self.state.draw_detail(surface.subsurface(self.image_rect), self.screen) 143 self.state.draw_detail(surface.subsurface(self.image_rect), self.screen)
144 144
145 def mouse_down(self, event): 145 def mouse_down(self, event):
146 self.mouse_move(event) 146 self.mouse_move(event)
147 if event.button != 1: # We have a right/middle click 147 if event.button != 1: # We have a right/middle click
148 if self.state.tool is not None: 148 self.state.cancel_doodah(self.screen)
149 self.state.set_tool(None) 149 else:
150 return 150 result = self.state.interact_detail(self.global_to_local(event.pos))
151 self.parent.clear_detail() 151 handle_result(result, self)
152 return
153 result = self.state.interact_detail(self.global_to_local(event.pos))
154 handle_result(result, self)
155 152
156 def mouse_move(self, event): 153 def mouse_move(self, event):
157 self._mouse_move(event.pos) 154 self._mouse_move(event.pos)
158 155
159 def _mouse_move(self, pos): 156 def _mouse_move(self, pos):