void init_clock_indicator(void)
{
    if(!config.clock.enabled)
    {
        gtk_widget_hide(greeter.ui.clock.time_box);
        return;
    }

    if(config.clock.calendar && GTK_IS_MENU_SHELL(greeter.ui.clock.time_menu))
    {
        GtkWidget* calendar_menuitem = NULL;

        #ifdef CLOCK_USE_IDO_CALENDAR
        calendar_menuitem = ido_calendar_menu_item_new();
        greeter.ui.clock.calendar_widget = ido_calendar_menu_item_get_calendar(IDO_CALENDAR_MENU_ITEM(calendar_menuitem));
        #else
        calendar_menuitem = create_simple_calendar_item(&greeter.ui.clock.calendar_widget);
        #endif

        if(!greeter.ui.clock.date_widget)
            greeter.ui.clock.date_widget = gtk_menu_item_new_with_label("");
        gtk_menu_shell_append(GTK_MENU_SHELL(greeter.ui.clock.time_menu), greeter.ui.clock.date_widget);
        gtk_menu_shell_append(GTK_MENU_SHELL(greeter.ui.clock.time_menu), calendar_menuitem);

        gtk_widget_add_events(greeter.ui.clock.date_widget, GDK_VISIBILITY_NOTIFY_MASK);
        visibility_notify_id = g_signal_connect(greeter.ui.clock.date_widget,
                                                "visibility-notify-event",
                                                G_CALLBACK(on_visibility_notify),
                                                NULL);

        gtk_widget_show_all(greeter.ui.clock.time_menu);
        if(GTK_IS_MENU_ITEM(greeter.ui.clock.time_widget))
            gtk_menu_item_set_submenu(GTK_MENU_ITEM(greeter.ui.clock.time_widget), greeter.ui.clock.time_menu);
    }
    else if(GTK_IS_MENU_ITEM(greeter.ui.clock.time_widget))
        gtk_menu_item_set_submenu(GTK_MENU_ITEM(greeter.ui.clock.time_widget), NULL);
    else
        gtk_widget_hide(greeter.ui.clock.time_menu);

    if(greeter.ui.clock.time_widget)
    {
        clock_handler(NULL);
        g_timeout_add_seconds(1, (GSourceFunc)clock_handler, (gpointer)TRUE);
        gtk_widget_show(greeter.ui.clock.time_widget);
    }
}
TEST_F(TestMenuitems, BuildCalendar) {
	GtkWidget * cal = ido_calendar_menu_item_new();

	EXPECT_TRUE(cal != NULL);
	EXPECT_TRUE(IDO_IS_CALENDAR_MENU_ITEM(cal));
	EXPECT_TRUE(GTK_IS_MENU_ITEM(cal));

	GtkWidget * menu = gtk_menu_new();
	gtk_widget_show(menu);
	gtk_menu_shell_append(GTK_MENU_SHELL(menu), cal);

	gtk_widget_show(cal);
	gtk_widget_realize(cal);

	EXPECT_TRUE(gtk_widget_get_realized(cal));

	g_object_ref_sink(menu);
	g_object_unref(menu);
	return;
}