Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/view/frame/MenuStrategy.py
blob: 34353f835337bdf9638dcecbc1c166d0aab48cf8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import hippo

from sugar.graphics.grid import Grid

class MenuStrategy:
	def get_menu_position(self, menu, item):
		[x, y] = item.get_context().translate_to_widget(item)

		canvas = item
		while (not isinstance(canvas, hippo.Canvas)):
			canvas = canvas.get_context()

		[origin_x, origin_y] = canvas.window.get_origin()
		x += origin_x
		y += origin_y

		[width, height] = item.get_allocation()

		grid = Grid()

		[grid_x1, grid_y1] = grid.fit_point(x, y)
		[grid_x2, grid_y2] = grid.fit_point(x + width, y + height)

		menu_grid_x = grid_x1
		menu_grid_y = grid_y2

		[menu_x, menu_y] = grid.point(menu_grid_x, menu_grid_y)

		return [menu_x, menu_y]