aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/applet-main.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/applet-main.c b/src/applet-main.c
index e28009d..74d948a 100644
--- a/src/applet-main.c
+++ b/src/applet-main.c
@@ -87,17 +87,36 @@ load_module (const gchar * name, GtkWidget * menu)
get_label_t lget_label;
g_return_val_if_fail(g_module_symbol(module, INDICATOR_GET_LABEL_S, (gpointer *)(&lget_label)), FALSE);
g_return_val_if_fail(lget_label != NULL, FALSE);
+ GtkLabel * label = lget_label();
get_icon_t lget_icon;
g_return_val_if_fail(g_module_symbol(module, INDICATOR_GET_LABEL_S, (gpointer *)(&lget_icon)), FALSE);
g_return_val_if_fail(lget_icon != NULL, FALSE);
+ GtkImage * icon = lget_icon();
get_menu_t lget_menu;
g_return_val_if_fail(g_module_symbol(module, INDICATOR_GET_LABEL_S, (gpointer *)(&lget_menu)), FALSE);
g_return_val_if_fail(lget_menu != NULL, FALSE);
+ GtkMenu * lmenu = lget_menu();
- GtkWidget * menuitem = GTK_WIDGET(lget_menu());
- g_return_val_if_fail(GTK_MENU_ITEM(menuitem), FALSE);
+ if (label == NULL && icon == NULL) {
+ /* This is the case where there is nothing to display,
+ kinda odd that we'd have a module with nothing. */
+ return FALSE;
+ }
+
+ GtkWidget * menuitem = gtk_menu_item_new();
+ GtkWidget * hbox = gtk_hbox_new(FALSE, 3);
+ if (icon != NULL) {
+ gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(icon), FALSE, FALSE, 0);
+ }
+ if (label != NULL) {
+ gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(label), FALSE, FALSE, 0);
+ }
+
+ if (menu != NULL) {
+ gtk_menu_shell_append(GTK_MENU_SHELL(menuitem), GTK_WIDGET(lmenu));
+ }
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);