void cd_sound_add_menu_handler (DbusmenuGtkClient * client)
{
  dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
                                    DBUSMENU_VOLUME_MENUITEM_TYPE,
                                    new_volume_slider_widget);
  dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
                                    DBUSMENU_VOIP_INPUT_MENUITEM_TYPE,
                                    new_voip_slider_widget);
  dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
                                    DBUSMENU_TRANSPORT_MENUITEM_TYPE,
                                    new_transport_widget);
  dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
                                    DBUSMENU_METADATA_MENUITEM_TYPE,
                                    new_metadata_widget);
  dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
                                    DBUSMENU_MUTE_MENUITEM_TYPE,
                                    new_mute_widget);

  // Note: Not ideal but all key handling needs to be managed here and then 
  // delegated to the appropriate widget.
  g_signal_connect (myData.pIndicator->pMenu, "key-press-event", G_CALLBACK(key_press_cb), myApplet);
  g_signal_connect (myData.pIndicator->pMenu, "key-release-event", G_CALLBACK(key_release_cb), myApplet);
}
示例#2
0
/* Called when the child is realized, and thus has all of its
   properties and GTK-isms.  We can put it in our menu here. */
static void
child_realized (DbusmenuMenuitem * child, gpointer userdata)
{
	#ifdef MASSIVEDEBUGGING
	g_debug("Root child realized");
	#endif
	g_return_if_fail(DBUSMENU_IS_GTKMENU(userdata));

	DbusmenuGtkMenu * menu = DBUSMENU_GTKMENU(userdata);
	DbusmenuGtkMenuPrivate * priv = DBUSMENU_GTKMENU_GET_PRIVATE(menu);

	GtkWidget * child_widget = GTK_WIDGET(dbusmenu_gtkclient_menuitem_get(priv->client, child));

	if (child_widget != NULL) {
		gtk_menu_shell_append(GTK_MENU_SHELL(menu), child_widget);
		gtk_menu_reorder_child(GTK_MENU(menu), child_widget, dbusmenu_menuitem_get_position_realized(child, dbusmenu_client_get_root(DBUSMENU_CLIENT(priv->client))));
	} else {
		g_warning("Child is realized, but doesn't have a GTK Widget!");
	}

	return;
}