Allow for having the popup positioning logic in PopupContext.
This commit is contained in:
parent
bbfe539429
commit
111da5911a
@ -86,24 +86,32 @@ class Button(hippo.CanvasBox):
|
|||||||
return
|
return
|
||||||
|
|
||||||
popup_context = self.get_popup_context()
|
popup_context = self.get_popup_context()
|
||||||
if popup_context:
|
|
||||||
popup_context.popped_up(popup)
|
|
||||||
|
|
||||||
|
[x, y] = [None, None]
|
||||||
|
if popup_context:
|
||||||
|
[x, y] = popup_context.get_position(self._icon, popup)
|
||||||
|
|
||||||
|
if (not x) or (not y):
|
||||||
|
context = self._icon.get_context()
|
||||||
|
#[x, y] = context.translate_to_screen(self._icon)
|
||||||
|
[x, y] = context.translate_to_widget(self._icon)
|
||||||
|
|
||||||
|
# TODO: Any better place to do this?
|
||||||
|
popup.props.box_width = max(popup.props.box_width,
|
||||||
|
self.get_width_request())
|
||||||
|
|
||||||
|
[width, height] = self._icon.get_allocation()
|
||||||
|
y += height
|
||||||
|
position = [x, y]
|
||||||
|
|
||||||
|
popup.popup(x, y)
|
||||||
popup.connect('motion-notify-event',
|
popup.connect('motion-notify-event',
|
||||||
self._popup_motion_notify_event_cb)
|
self._popup_motion_notify_event_cb)
|
||||||
popup.connect('action-completed',
|
popup.connect('action-completed',
|
||||||
self._popup_action_completed_cb)
|
self._popup_action_completed_cb)
|
||||||
|
|
||||||
context = self._icon.get_context()
|
if popup_context:
|
||||||
#[x, y] = context.translate_to_screen(self._icon)
|
popup_context.popped_up(popup)
|
||||||
[x, y] = context.translate_to_widget(self._icon)
|
|
||||||
|
|
||||||
# TODO: Any better place to do this?
|
|
||||||
popup.props.box_width = max(popup.props.box_width,
|
|
||||||
self.get_width_request())
|
|
||||||
|
|
||||||
[width, height] = self._icon.get_allocation()
|
|
||||||
popup.popup(x, y + height)
|
|
||||||
|
|
||||||
self._popup = popup
|
self._popup = popup
|
||||||
|
|
||||||
|
@ -42,3 +42,6 @@ class PopupContext(gobject.GObject):
|
|||||||
|
|
||||||
def is_active(self):
|
def is_active(self):
|
||||||
return self._active_control != None
|
return self._active_control != None
|
||||||
|
|
||||||
|
def get_position(self, control, popup):
|
||||||
|
return [None, None]
|
||||||
|
Loading…
Reference in New Issue
Block a user