From 4f88636ae44ea41559b842c32d979edc305661d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Manuel=20Qui=C3=B1ones?= <manuq@laptop.org>
Date: Mon, 29 Oct 2012 17:46:33 -0300
Subject: [PATCH shell 3/3] CellRendererInvoker: remove duplicate code in
CellRendererIcon
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Mail-Followup-To: <sugar-devel@lists.sugarlabs.org>
Make public the method to check if the pointer is inside the
CellRendererIcon and remove it from CellRendererInvoker.
Signed-off-by: Manuel Quiñones <manuq@laptop.org>
---
src/sugar3/graphics/icon.py | 6 +++---
src/sugar3/graphics/palettewindow.py | 28 +++++++---------------------
2 files changed, 10 insertions(+), 24 deletions(-)
diff --git a/src/sugar3/graphics/icon.py b/src/sugar3/graphics/icon.py
index 507db41..4946b6f 100644
a
|
b
|
class CellRendererIcon(Gtk.CellRenderer): |
774 | 774 | self._palette_invoker.detach() |
775 | 775 | |
776 | 776 | def __button_press_event_cb(self, widget, event): |
777 | | if self._point_in_cell_renderer(widget, event.x, event.y): |
| 777 | if self.point_in_cell_renderer(widget, event.x, event.y): |
778 | 778 | self._active_state = True |
779 | 779 | |
780 | 780 | def __button_release_event_cb(self, widget, event): |
… |
… |
class CellRendererIcon(Gtk.CellRenderer): |
876 | 876 | flags): |
877 | 877 | pass |
878 | 878 | |
879 | | def _point_in_cell_renderer(self, tree_view, x=None, y=None): |
| 879 | def point_in_cell_renderer(self, tree_view, x=None, y=None): |
880 | 880 | """Check if the point with coordinates x, y is inside this icon. |
881 | 881 | |
882 | 882 | If the x, y coordinates are not given, they are taken from the |
… |
… |
class CellRendererIcon(Gtk.CellRenderer): |
906 | 906 | context.save() |
907 | 907 | context.add_class("sugar-icon-cell") |
908 | 908 | |
909 | | pointer_inside = self._point_in_cell_renderer(widget) |
| 909 | pointer_inside = self.point_in_cell_renderer(widget) |
910 | 910 | |
911 | 911 | # The context will have prelight state if the mouse pointer is |
912 | 912 | # in the entire row, but we want that state if the pointer is |
diff --git a/src/sugar3/graphics/palettewindow.py b/src/sugar3/graphics/palettewindow.py
index 0407bfc..b4529c2 100644
a
|
b
|
class CellRendererInvoker(Invoker): |
1256 | 1256 | def __motion_notify_event_cb(self, widget, event): |
1257 | 1257 | if event.window != widget.get_bin_window(): |
1258 | 1258 | return |
1259 | | if self._point_in_cell_renderer(event.x, event.y): |
| 1259 | if self._cell_renderer.point_in_cell_renderer(widget, event.x, event.y): |
1260 | 1260 | |
1261 | 1261 | tree_view = self._tree_view |
1262 | 1262 | path, column_, x_, y_ = tree_view.get_path_at_pos(int(event.x), |
… |
… |
class CellRendererInvoker(Invoker): |
1295 | 1295 | return False |
1296 | 1296 | |
1297 | 1297 | def __button_release_event_cb(self, widget, event): |
1298 | | if event.button == 1 and self._point_in_cell_renderer(event.x, |
1299 | | event.y): |
| 1298 | if event.button == 1 and \ |
| 1299 | self._cell_renderer.point_in_cell_renderer(widget, |
| 1300 | event.x, event.y): |
1300 | 1301 | tree_view = self._tree_view |
1301 | 1302 | path, column_, x_, y_ = tree_view.get_path_at_pos(int(event.x), |
1302 | 1303 | int(event.y)) |
1303 | 1304 | self._cell_renderer.emit('clicked', path) |
1304 | 1305 | # So the treeview receives it and knows a drag isn't going on |
1305 | 1306 | return False |
1306 | | if event.button == 3 and self._point_in_cell_renderer(event.x, |
1307 | | event.y): |
| 1307 | if event.button == 3 and \ |
| 1308 | self._cell_renderer.point_in_cell_renderer(widget, |
| 1309 | event.x, event.y): |
1308 | 1310 | self.notify_right_click() |
1309 | 1311 | return True |
1310 | 1312 | else: |
1311 | 1313 | return False |
1312 | 1314 | |
1313 | | def _point_in_cell_renderer(self, event_x, event_y): |
1314 | | pos = self._tree_view.get_path_at_pos(int(event_x), int(event_y)) |
1315 | | if pos is None: |
1316 | | return False |
1317 | | |
1318 | | path_, column, x, y_ = pos |
1319 | | |
1320 | | for cell_renderer in column.get_cells(): |
1321 | | if cell_renderer == self._cell_renderer: |
1322 | | cell_x, cell_width = column.cell_get_position(cell_renderer) |
1323 | | if x > cell_x and x < (cell_x + cell_width): |
1324 | | return True |
1325 | | return False |
1326 | | |
1327 | | return False |
1328 | | |
1329 | 1315 | def get_toplevel(self): |
1330 | 1316 | return self._tree_view.get_toplevel() |
1331 | 1317 | |