Add right click menu on status icon with a Quit item

This commit is contained in:
Mike Massonnet
2010-06-10 01:31:37 +02:00
parent f66c0e8fd6
commit 20dbcee075

View File

@@ -34,6 +34,24 @@ status_icon_activated (void)
gtk_widget_hide (window); gtk_widget_hide (window);
} }
static void
status_icon_popup_menu (GtkStatusIcon *_status_icon, guint button, guint activate_time)
{
static GtkWidget *menu = NULL;
if (menu == NULL)
{
GtkWidget *mi;
menu = gtk_menu_new ();
mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_QUIT, NULL);
g_signal_connect (mi, "activate", G_CALLBACK (gtk_main_quit), NULL);
gtk_container_add (GTK_CONTAINER (menu), mi);
gtk_widget_show_all (menu);
}
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, gtk_status_icon_position_menu, _status_icon, button, activate_time);
}
static void static void
show_hide_status_icon (void) show_hide_status_icon (void)
{ {
@@ -45,7 +63,8 @@ show_hide_status_icon (void)
static void static void
destroy_window (void) destroy_window (void)
{ {
gtk_main_quit (); if (gtk_main_level () > 0)
gtk_main_quit ();
} }
static gboolean static gboolean
@@ -141,6 +160,7 @@ int main (int argc, char *argv[])
status_icon = gtk_status_icon_new_from_icon_name ("utilities-system-monitor"); status_icon = gtk_status_icon_new_from_icon_name ("utilities-system-monitor");
show_hide_status_icon (); show_hide_status_icon ();
g_signal_connect (status_icon, "activate", G_CALLBACK (status_icon_activated), NULL); g_signal_connect (status_icon, "activate", G_CALLBACK (status_icon_activated), NULL);
g_signal_connect (status_icon, "popup-menu", G_CALLBACK (status_icon_popup_menu), NULL);
window = xtm_process_window_new (); window = xtm_process_window_new ();
gtk_widget_show (window); gtk_widget_show (window);