From be08535ab4dda07a6307d37a9abddb0a48dd1b97 Mon Sep 17 00:00:00 2001 From: Gilbert Ashley Date: Wed, 26 Nov 2008 16:27:19 +0100 Subject: [PATCH] Show app name in Kill Application dialog The "Kill Application" dialog window doesn't always show the application name when killing DockApps. It shows its wm_class instead, which is not always the same as the app name. This patch allows the Kill Application dialog window to show the application name in the window -- as expressed by using the basename of the path to the application. [crmafra: Added wtokensplit() to get only the app name] --- src/appicon.c | 6 +++++- src/dock.c | 12 ++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/appicon.c b/src/appicon.c index e3164b73..4437e58f 100644 --- a/src/appicon.c +++ b/src/appicon.c @@ -383,6 +383,8 @@ static void killCallback(WMenu * menu, WMenuEntry * entry) WApplication *wapp = (WApplication *) entry->clientdata; WFakeGroupLeader *fPtr; char *buffer; + char *shortname; + char *basename(const char *shortname); if (!WCHECK_STATE(WSTATE_NORMAL)) return; @@ -391,7 +393,9 @@ static void killCallback(WMenu * menu, WMenuEntry * entry) assert(entry->clientdata != NULL); - buffer = wstrconcat(wapp->app_icon ? wapp->app_icon->wm_class : NULL, + shortname = basename(wapp->app_icon->wm_instance); + + buffer = wstrconcat(wapp->app_icon ? shortname : NULL, _(" will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm.")); diff --git a/src/dock.c b/src/dock.c index 9f528ffd..1d82a371 100644 --- a/src/dock.c +++ b/src/dock.c @@ -206,7 +206,9 @@ static void killCallback(WMenu * menu, WMenuEntry * entry) WScreen *scr = menu->menu->screen_ptr; WAppIcon *icon; WFakeGroupLeader *fPtr; - char *buffer; + char *buffer, *shortname, **argv; + char *basename(const char *shortname); + int argc; if (!WCHECK_STATE(WSTATE_NORMAL)) return; @@ -219,7 +221,12 @@ static void killCallback(WMenu * menu, WMenuEntry * entry) WCHANGE_STATE(WSTATE_MODAL); - buffer = wstrconcat(icon->wm_class, + /* strip away dir names */ + shortname = basename(icon->command); + /* separate out command options */ + wtokensplit(shortname, &argv, &argc); + + buffer = wstrconcat(argv[0], _(" will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm.")); @@ -257,6 +264,7 @@ static void killCallback(WMenu * menu, WMenuEntry * entry) } wfree(buffer); + wtokenfree(argv, argc); icon->editing = 0;