static void applet_change_orientation (PanelApplet *applet, PanelAppletOrient orient, AppletData *data) { na_tray_set_orientation (data->tray, get_orientation_from_applet (applet)); }
static gboolean applet_factory (PanelApplet *applet, const gchar *iid, gpointer user_data) { NaTray *tray; AppletData *data; AtkObject *atko; if (!(strcmp (iid, "OAFIID:GNOME_NotificationAreaApplet") == 0 || strcmp (iid, "OAFIID:GNOME_SystemTrayApplet") == 0)) return FALSE; tray = na_tray_new_for_screen (gtk_widget_get_screen (GTK_WIDGET (applet)), get_orientation_from_applet (applet)); data = g_slice_new (AppletData); data->applet = applet; data->tray = tray; data->about_dialog = NULL; g_object_set_data_full (G_OBJECT (applet), "system-tray-data", data, (GDestroyNotify) free_applet_data); atko = gtk_widget_get_accessible (GTK_WIDGET (applet)); atk_object_set_name (atko, _("Panel Notification Area")); panel_applet_set_flags (applet, PANEL_APPLET_HAS_HANDLE|PANEL_APPLET_EXPAND_MINOR); g_signal_connect (applet, "change_orient", G_CALLBACK (applet_change_orientation), data); g_signal_connect (applet, "change_background", G_CALLBACK (applet_change_background), data); g_signal_connect (applet, "destroy", G_CALLBACK (applet_destroy), data); panel_applet_set_background_widget (applet, GTK_WIDGET (applet)); gtk_container_add (GTK_CONTAINER (applet), GTK_WIDGET (tray)); #ifndef NOTIFICATION_AREA_INPROCESS gtk_window_set_default_icon_name (NOTIFICATION_AREA_ICON); #endif gtk_widget_show_all (GTK_WIDGET (applet)); panel_applet_setup_menu_from_file (applet, NULL, "GNOME_NotificationAreaApplet.xml", NULL, menu_verbs, data); return TRUE; }
static void on_applet_realized(GtkWidget* widget, gpointer user_data) { MatePanelApplet* applet; AppletData* data; NaTray* tray; GtkActionGroup* action_group; gchar* ui_path; applet = MATE_PANEL_APPLET(widget); data = g_object_get_data(G_OBJECT(widget), "system-tray-data"); if (data != NULL) { return; } tray = na_tray_new_for_screen(gtk_widget_get_screen(GTK_WIDGET(applet)), get_orientation_from_applet(applet)); data = g_slice_new(AppletData); data->applet = applet; data->tray = tray; g_object_set_data_full(G_OBJECT(applet), "system-tray-data", data, (GDestroyNotify) free_applet_data); g_signal_connect(applet, "change_orient", G_CALLBACK (applet_change_orientation), data); g_signal_connect(applet, "change_background", G_CALLBACK (applet_change_background), data); g_signal_connect(applet, "destroy", G_CALLBACK (applet_destroy), data); gtk_container_add(GTK_CONTAINER (applet), GTK_WIDGET (tray)); gtk_widget_show(GTK_WIDGET(tray)); action_group = gtk_action_group_new("ClockApplet Menu Actions"); gtk_action_group_set_translation_domain(action_group, GETTEXT_PACKAGE); gtk_action_group_add_actions(action_group, menu_actions, G_N_ELEMENTS(menu_actions), data); ui_path = g_build_filename(NOTIFICATION_AREA_MENU_UI_DIR, "notification-area-menu.xml", NULL); mate_panel_applet_setup_menu_from_file(applet, ui_path, action_group); g_free(ui_path); g_object_unref(action_group); }