From 398ba38cfe159ede25edd2cd0c5a14f052b5ebea Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Wed, 11 Apr 2012 10:24:04 -0400 Subject: [PATCH] application-window: try to use the desktop name in the fallback menu Try to fetch the name from the application desktop file for the fallback menu if possible, instead of forcing applications to use g_set_application_name or hardcoding "Application". https://bugzilla.gnome.org/show_bug.cgi?id=673882 --- configure.ac | 3 +++ gtk/gtkapplicationwindow.c | 27 ++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index f94997b726..5f23a73bc7 100644 --- a/configure.ac +++ b/configure.ac @@ -1292,6 +1292,9 @@ GTK_PRIVATE_PACKAGES="" if test "x$enable_x11_backend" = xyes; then GTK_PRIVATE_PACKAGES="$GTK_PRIVATE_PACKAGES pangoft2" fi +if test "$have_gio_unix" = "yes"; then + GTK_PRIVATE_PACKAGES="$GTK_PRIVATE_PACKAGES gio-unix-2.0" +fi GTK_EXTRA_LIBS= GTK_EXTRA_CFLAGS= diff --git a/gtk/gtkapplicationwindow.c b/gtk/gtkapplicationwindow.c index 04b9471094..7037a0a922 100644 --- a/gtk/gtkapplicationwindow.c +++ b/gtk/gtkapplicationwindow.c @@ -35,6 +35,10 @@ #include #endif +#ifdef HAVE_GIO_UNIX +#include +#endif + /** * SECTION:gtkapplicationwindow * @title: GtkApplicationWindow @@ -279,11 +283,32 @@ gtk_application_window_update_shell_shows_app_menu (GtkApplicationWindow *window if (app_menu != NULL) { const gchar *name; + GDesktopAppInfo *app_info = NULL; name = g_get_application_name (); if (name == g_get_prgname ()) - name = _("Application"); + { + const gchar *app_name = NULL; + +#ifdef HAVE_GIO_UNIX + gchar *desktop_name; + + desktop_name = g_strconcat (name, ".desktop", NULL); + app_info = g_desktop_app_info_new (desktop_name); + if (app_info != NULL) + app_name = g_app_info_get_name (G_APP_INFO (app_info)); + + g_free (desktop_name); +#endif /* HAVE_GIO_UNIX */ + + if (app_name != NULL && + g_strcmp0 (app_name, name) != 0) + name = app_name; + else + name = _("Application"); + } g_menu_append_submenu (window->priv->app_menu_section, name, app_menu); + g_clear_object (&app_info); } } }