Created
June 20, 2011 23:53
-
-
Save codebrainz/1036910 to your computer and use it in GitHub Desktop.
Why no "query-tooltip" signal with AppIndicator?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <gtk/gtk.h> | |
| #include <libappindicator/app-indicator.h> | |
| static void on_status_icon_activate(GtkStatusIcon *status_icon, GtkMenu *menu) | |
| { | |
| gtk_menu_popup(menu, NULL, NULL, gtk_status_icon_position_menu, status_icon, | |
| 0, gtk_get_current_event_time()); | |
| } | |
| static gboolean on_menu_item_query_tooltip(GtkWidget *widget, gint x, gint y, | |
| gboolean keyboard_mode, GtkTooltip *tooltip, gpointer user_data) | |
| { | |
| g_print("Received query-tooltip from widget '%s' @ %d x %d\n", | |
| gtk_widget_get_name(widget), x, y); | |
| return TRUE; | |
| } | |
| static GtkWidget *create_menu(void) | |
| { | |
| GtkWidget *menu, *item; | |
| menu = gtk_menu_new(); | |
| item = gtk_menu_item_new_with_label("Test Item"); | |
| gtk_widget_set_name(item, "aiTestItem"); | |
| gtk_widget_set_has_tooltip(item, TRUE); | |
| g_signal_connect(item, "query-tooltip", G_CALLBACK(on_menu_item_query_tooltip), NULL); | |
| gtk_menu_append(GTK_MENU(menu), item); | |
| item = gtk_menu_item_new_with_label("Quit"); | |
| g_signal_connect(item, "activate", G_CALLBACK(gtk_main_quit), NULL); | |
| gtk_menu_append(GTK_MENU(menu), item); | |
| gtk_widget_show_all(menu); | |
| return menu; | |
| } | |
| static void create_appindic_icon(void) | |
| { | |
| GtkWidget *menu; | |
| AppIndicator *indic; | |
| indic = app_indicator_new("aitest", "camera-video", APP_INDICATOR_CATEGORY_HARDWARE); | |
| menu = create_menu(); | |
| app_indicator_set_menu(indic, GTK_MENU(menu)); | |
| app_indicator_set_status(indic, APP_INDICATOR_STATUS_ACTIVE); | |
| } | |
| static void create_status_icon(void) | |
| { | |
| GtkWidget *menu; | |
| GtkStatusIcon *stat; | |
| stat = gtk_status_icon_new_from_icon_name("camera-video"); | |
| menu = create_menu(); | |
| g_signal_connect(stat, "activate", G_CALLBACK(on_status_icon_activate), menu); | |
| } | |
| int main(int argc, char *argv[]) | |
| { | |
| gtk_init(&argc, &argv); | |
| create_appindic_icon(); | |
| create_status_icon(); | |
| gtk_main(); | |
| return 0; | |
| } |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Makefile: