diff -r e5b703bc9f03 -r 0c11d752fbe4 pidgin/gtkmain.c --- a/pidgin/gtkmain.c Wed May 08 05:17:30 2013 -0400 +++ b/pidgin/gtkmain.c Wed May 08 21:03:34 2013 -0400 @@ -429,6 +429,8 @@ char *opt_login_arg = NULL; char *opt_session_arg = NULL; char *search_path; + GtkCssProvider *provider; + GdkScreen *screen; GList *accounts; #ifdef HAVE_SIGNAL_H int sig_indx; /* for setting up signal catching */ @@ -440,6 +442,8 @@ #ifndef DEBUG char *segfault_message_tmp; #endif +#endif +#if defined(HAVE_SIGNAL_H) || GTK_CHECK_VERSION(3,0,0) GError *error; #endif int opt; @@ -690,9 +694,11 @@ purple_debug_set_enabled(debug_enabled); +#if !GTK_CHECK_VERSION(3,0,0) search_path = g_build_filename(purple_user_dir(), "gtkrc-2.0", NULL); gtk_rc_add_default_file(search_path); g_free(search_path); +#endif gui_check = gtk_init_check(&argc, &argv); if (!gui_check) { @@ -709,6 +715,26 @@ return 1; } +#if GTK_CHECK_VERSION(3,0,0) + search_path = g_build_filename(purple_user_dir(), "gtk-3.0.css", NULL); + + error = NULL; + provider = gtk_css_provider_new(); + gui_check = gtk_css_provider_load_from_path(provider, search_path, &error); + + if (gui_check && !error) { + screen = gdk_screen_get_default(); + gtk_style_context_add_provider_for_screen(screen, + GTK_STYLE_PROVIDER(provider), + GTK_STYLE_PROVIDER_PRIORITY_USER); + } else { + purple_debug_error("gtk", "Unable to load custom gtk-3.0.css: %s\n", + error ? error->message : "(unknown error)"); + } + + g_free(search_path); +#endif + g_set_application_name(PIDGIN_NAME); #ifdef _WIN32