Example #1
0
static void
gtk_popover_item_activate (GtkWidget *button,
                           gpointer   user_data)
{
  GtkMenuTrackerItem *item = user_data;

  gtk_menu_tracker_item_activated (item);

  if (gtk_menu_tracker_item_get_role (item) == GTK_MENU_TRACKER_ITEM_ROLE_NORMAL)
    gtk_widget_hide (gtk_widget_get_ancestor (button, GTK_TYPE_POPOVER));
}
Example #2
0
static void
gtk_menu_tracker_item_get_property (GObject    *object,
                                    guint       prop_id,
                                    GValue     *value,
                                    GParamSpec *pspec)
{
    GtkMenuTrackerItem *self = GTK_MENU_TRACKER_ITEM (object);

    switch (prop_id)
    {
    case PROP_IS_SEPARATOR:
        g_value_set_boolean (value, gtk_menu_tracker_item_get_is_separator (self));
        break;
    case PROP_LABEL:
        g_value_set_string (value, gtk_menu_tracker_item_get_label (self));
        break;
    case PROP_ICON:
        g_value_take_object (value, gtk_menu_tracker_item_get_icon (self));
        break;
    case PROP_VERB_ICON:
        g_value_take_object (value, gtk_menu_tracker_item_get_verb_icon (self));
        break;
    case PROP_SENSITIVE:
        g_value_set_boolean (value, gtk_menu_tracker_item_get_sensitive (self));
        break;
    case PROP_ROLE:
        g_value_set_enum (value, gtk_menu_tracker_item_get_role (self));
        break;
    case PROP_TOGGLED:
        g_value_set_boolean (value, gtk_menu_tracker_item_get_toggled (self));
        break;
    case PROP_ACCEL:
        g_value_set_string (value, gtk_menu_tracker_item_get_accel (self));
        break;
    case PROP_SUBMENU_SHOWN:
        g_value_set_boolean (value, gtk_menu_tracker_item_get_submenu_shown (self));
        break;
    case PROP_IS_VISIBLE:
        g_value_set_boolean (value, gtk_menu_tracker_item_get_is_visible (self));
        break;
    default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
        break;
    }
}
Example #3
0
static void
gtk_popover_item_activate (GtkWidget *button,
                           gpointer   user_data)
{
  GtkMenuTrackerItem *item = user_data;
  GtkWidget *popover = NULL;

  if (gtk_menu_tracker_item_get_role (item) == GTK_MENU_TRACKER_ITEM_ROLE_NORMAL)
    {
      /* Activating the item could cause the popover
       * to be free'd, for example if it is a Quit item
       */
      popover = g_object_ref (gtk_widget_get_ancestor (button,
                                                       GTK_TYPE_POPOVER));
    }

  gtk_menu_tracker_item_activated (item);

  if (popover != NULL)
    {
      gtk_widget_hide (popover);
      g_object_unref (popover);
    }
}