Mercurial > boomslang
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): |