-hildon_app_menu_button_press (GtkWidget *widget,
- GdkEventButton *event)
-{
- int x, y;
- HildonAppMenuPrivate *priv = HILDON_APP_MENU_GET_PRIVATE(widget);
-
- gdk_window_get_position (widget->window, &x, &y);
-
- /* Whether the button has been pressed outside the widget */
- priv->pressed_outside = (event->x_root < x || event->x_root > x + widget->allocation.width ||
- event->y_root < y || event->y_root > y + widget->allocation.height);
-
- if (GTK_WIDGET_CLASS (hildon_app_menu_parent_class)->button_press_event) {
- return GTK_WIDGET_CLASS (hildon_app_menu_parent_class)->button_press_event (widget, event);
- } else {
- return FALSE;
- }
-}
-
-static gboolean
-hildon_app_menu_button_release (GtkWidget *widget,
- GdkEventButton *event)
-{
- HildonAppMenuPrivate *priv = HILDON_APP_MENU_GET_PRIVATE(widget);
-
- if (priv->pressed_outside) {
- int x, y;
- gboolean released_outside;
-
- gdk_window_get_position (widget->window, &x, &y);
-
- /* Whether the button has been released outside the widget */
- released_outside = (event->x_root < x || event->x_root > x + widget->allocation.width ||
- event->y_root < y || event->y_root > y + widget->allocation.height);
-
- if (released_outside) {
- gtk_widget_hide (widget);
- }
-
- priv->pressed_outside = FALSE; /* Always reset pressed_outside to FALSE */
- } else if (priv->last_pressed_button) {
- menu_item_button_event (NULL, event, widget);
- }
-
- if (GTK_WIDGET_CLASS (hildon_app_menu_parent_class)->button_release_event) {
- return GTK_WIDGET_CLASS (hildon_app_menu_parent_class)->button_release_event (widget, event);
- } else {
- return FALSE;
- }
-}
-
-static gboolean