Browse Source

dtwm: add a new feature -- window rename.

hyousatsu 1 year ago
parent
commit
e201ef0a7b
49 changed files with 927 additions and 64 deletions
  1. 33 0
      cde/doc/de_DE.UTF-8/help/FPanel/Ref.sgm
  2. 29 0
      cde/doc/en_US.UTF-8/help/FPanel/Ref.sgm
  3. 35 0
      cde/doc/es_ES.UTF-8/help/FPanel/Ref.sgm
  4. 34 0
      cde/doc/fr_FR.UTF-8/help/FPanel/Ref.sgm
  5. 34 0
      cde/doc/it_IT.UTF-8/help/FPanel/Ref.sgm
  6. 29 0
      cde/doc/ja_JP.UTF-8/help/FPanel/Ref.sgm
  7. 6 0
      cde/programs/dtwm/Dtwm.defs.src
  8. 3 3
      cde/programs/dtwm/Makefile.am
  9. 4 3
      cde/programs/dtwm/WmCDecor.c
  10. 20 0
      cde/programs/dtwm/WmFunction.c
  11. 1 0
      cde/programs/dtwm/WmFunction.h
  12. 19 0
      cde/programs/dtwm/WmGlobal.h
  13. 1 0
      cde/programs/dtwm/WmHelp.h
  14. 5 5
      cde/programs/dtwm/WmIDecor.c
  15. 1 0
      cde/programs/dtwm/WmInitWs.c
  16. 333 0
      cde/programs/dtwm/WmInstantTitle.c
  17. 32 0
      cde/programs/dtwm/WmInstantTitle.h
  18. 8 0
      cde/programs/dtwm/WmManage.c
  19. 2 2
      cde/programs/dtwm/WmPresence.c
  20. 50 0
      cde/programs/dtwm/WmProperty.c
  21. 3 1
      cde/programs/dtwm/WmProperty.h
  22. 2 0
      cde/programs/dtwm/WmResNames.h
  23. 5 0
      cde/programs/dtwm/WmResParse.c
  24. 21 2
      cde/programs/dtwm/WmResource.c
  25. 27 23
      cde/programs/dtwm/WmWinInfo.c
  26. 51 0
      cde/programs/dtwm/WmXSMP.c
  27. 1 0
      cde/programs/dtwm/WmXSMP.h
  28. 9 3
      cde/programs/dtwm/dtwm.msg
  29. 3 0
      cde/programs/localized/C/app-defaults/Dtwm.tmsg
  30. 3 0
      cde/programs/localized/de_DE.UTF-8/app-defaults/Dtwm.tmsg
  31. 11 1
      cde/programs/localized/de_DE.UTF-8/msg/dtwm.msg
  32. 3 0
      cde/programs/localized/el_GR.UTF-8/app-defaults/Dtwm.tmsg
  33. 9 2
      cde/programs/localized/el_GR.UTF-8/msg/dtwm.msg
  34. 3 0
      cde/programs/localized/es_ES.UTF-8/app-defaults/Dtwm.tmsg
  35. 11 1
      cde/programs/localized/es_ES.UTF-8/msg/dtwm.msg
  36. 3 0
      cde/programs/localized/fr_FR.UTF-8/app-defaults/Dtwm.tmsg
  37. 11 1
      cde/programs/localized/fr_FR.UTF-8/msg/dtwm.msg
  38. 3 0
      cde/programs/localized/it_IT.UTF-8/app-defaults/Dtwm.tmsg
  39. 9 3
      cde/programs/localized/it_IT.UTF-8/msg/dtwm.msg
  40. 3 0
      cde/programs/localized/ja_JP.UTF-8/app-defaults/Dtwm.tmsg
  41. 9 3
      cde/programs/localized/ja_JP.UTF-8/msg/dtwm.msg
  42. 3 0
      cde/programs/localized/ko_KR.UTF-8/app-defaults/Dtwm.tmsg
  43. 9 2
      cde/programs/localized/ko_KR.UTF-8/msg/dtwm.msg
  44. 3 0
      cde/programs/localized/sv_SE.UTF-8/app-defaults/Dtwm.tmsg
  45. 9 3
      cde/programs/localized/sv_SE.UTF-8/msg/dtwm.msg
  46. 3 0
      cde/programs/localized/zh_CN.UTF-8/app-defaults/Dtwm.tmsg
  47. 9 3
      cde/programs/localized/zh_CN.UTF-8/msg/dtwm.msg
  48. 3 0
      cde/programs/localized/zh_TW.UTF-8/app-defaults/Dtwm.tmsg
  49. 9 3
      cde/programs/localized/zh_TW.UTF-8/msg/dtwm.msg

+ 33 - 0
cde/doc/de_DE.UTF-8/help/FPanel/Ref.sgm

@@ -700,6 +700,39 @@ indem im Dialogfenster 'Neustart' des Umgebungsmanagers die Option 'Standardsitz
 festlegen' ausgewählt wird.</para>
 <!-- MODULE SEConfirmLogoutWithChoiceDE SElogch.DEa -->
 </sect2>
+<Sect2 Id="WMWindowRenameDialogDE">
+<Title>Dialogfeld zum Umbenennen von Fenstern</Title>
+<Para><Anchor Id="WindowRename">
+</Para>
+<Para>
+Geben Sie den neuen Namen in das Textfeld ein (lassen Sie es leer, um
+den Standardfenstertitel wiederherzustellen).
+</Para>
+<VariableList>
+<VarListEntry>
+<Term>OK</Term>
+<ListItem>
+<Para>
+Benennen Sie das Fenster um und schließen Sie den Umbenennen Dialog.
+</Para>
+</ListItem>
+</VarListEntry>
+<VarListEntry>
+<Term>Abbrechen</Term>
+<ListItem>
+<Para>
+Brechen Sie das Umbenennen ab und schließen Sie den Umbenennen Dialog.
+</Para>
+</ListItem>
+</VarListEntry>
+<VarListEntry>
+<Term>Hilfe</Term>
+<ListItem>
+<Para>Zeigt dieses Hilfethema an.</Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</Sect2>
 </sect1>
 <sect1 id="ConfirmSessionCreateDE">
 <title>Bestätigung der Sitzungserstellung<anchor id="ConfirmSessionCreation"></title>

+ 29 - 0
cde/doc/en_US.UTF-8/help/FPanel/Ref.sgm

@@ -814,6 +814,35 @@ to keep returning. Save a home session by choosing
 Set Home Session in Style Manager's Startup dialog box.</Para>
 <!-- MODULE SEConfirmLogoutWithChoiceDE SElogch.DEa -->
 </Sect2>
+<Sect2 Id="WMWindowRenameDialogDE">
+<Title>Window Rename Dialog</Title>
+<Para><Anchor Id="WindowRename">
+</Para>
+<Para>
+Type the new name in the text field (leave it blank to restore the
+default window title).
+</Para>
+<VariableList>
+<VarListEntry>
+<Term>OK</Term>
+<ListItem>
+<Para>Rename the window and close the rename dialog.</Para>
+</ListItem>
+</VarListEntry>
+<VarListEntry>
+<Term>Cancel</Term>
+<ListItem>
+<Para>Cancel renaming and close the rename dialog.</Para>
+</ListItem>
+</VarListEntry>
+<VarListEntry>
+<Term>Help</Term>
+<ListItem>
+<Para>Displays this help topic.</Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</Sect2>
 </Sect1>
 
 <Sect1 Id="ConfirmSessionCreateDE">

+ 35 - 0
cde/doc/es_ES.UTF-8/help/FPanel/Ref.sgm

@@ -670,6 +670,41 @@ Establecer sesión de inicio en el cuadro de diálogo Arranque
 del Gestor de estilos.</para>
 <!-- MODULE SEConfirmLogoutWithChoiceDE SElogch.DEa -->
 </sect2>
+<Sect2 Id="WMWindowRenameDialogDE">
+<Title>Cuadro de diálogo Cambiar nombre de ventana</Title>
+<Para><Anchor Id="WindowRename">
+</Para>
+<Para>
+Escriba el nuevo nombre en el campo de texto (déjalo en blanco para
+restaurar el título de ventana predeterminado).
+</Para>
+<VariableList>
+<VarListEntry>
+<Term>OK</Term>
+<ListItem>
+<Para>
+Cambie el nombre de la ventana y cierre el cuadro de diálogo de
+cambio de nombre.
+</Para>
+</ListItem>
+</VarListEntry>
+<VarListEntry>
+<Term>Cancelar</Term>
+<ListItem>
+<Para>
+Cancele el cambio de nombre y cierre el cuadro de diálogo de cambio
+de nombre.
+</Para>
+</ListItem>
+</VarListEntry>
+<VarListEntry>
+<Term>Ayuda</Term>
+<ListItem>
+<Para>Muestra este tema de ayuda.</Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</Sect2>
 </sect1>
 <sect1 id="ConfirmSessionCreateDE">
 <title>Confirmación de la creación de una sesión <anchor

+ 34 - 0
cde/doc/fr_FR.UTF-8/help/FPanel/Ref.sgm

@@ -731,6 +731,40 @@ session initiale dans la boîte de dialogue Lancement du Gestionnaire
 de configuration.</para>
 <!-- MODULE SEConfirmLogoutWithChoiceDE SElogch.DEa -->
 </sect2>
+<Sect2 Id="WMWindowRenameDialogDE">
+<Title>Boîte de dialogue Renommer la fenêtre</Title>
+<Para><Anchor Id="WindowRename">
+</Para>
+<Para>
+Tapez le nouveau nom dans le champ de texte (laissez-le vide pour
+restaurer le titre de fenêtre par défaut).
+</Para>
+<VariableList>
+<VarListEntry>
+<Term>OK</Term>
+<ListItem>
+<Para>
+Renommez la fenêtre et fermez la boîte de dialogue de renommage.
+</Para>
+</ListItem>
+</VarListEntry>
+<VarListEntry>
+<Term>Annuler</Term>
+<ListItem>
+<Para>
+Annuler le changement de nom et fermez la boîte de dialogue de
+changement de nom.
+</Para>
+</ListItem>
+</VarListEntry>
+<VarListEntry>
+<Term>Aide</Term>
+<ListItem>
+<Para>Affiche l'aide.</Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</Sect2>
 </sect1>
 <sect1 id="ConfirmSessionCreateDE">
 <title>Confirmation de création de session<anchor id="ConfirmSessionCreation"></title>

+ 34 - 0
cde/doc/it_IT.UTF-8/help/FPanel/Ref.sgm

@@ -664,6 +664,40 @@ scegliere Impostare sessione iniziale nel riquadro di dialogo Avvio della
 Gestione degli stili.</para>
 <!-- MODULE SEConfirmLogoutWithChoiceDE SElogch.DEa -->
 </sect2>
+<Sect2 Id="WMWindowRenameDialogDE">
+<Title>Finestra di dialogo Rinomina finestra</Title>
+<Para><Anchor Id="WindowRename">
+</Para>
+<Para>
+Digitare il nuovo nome nel campo di testo (lasciarlo vuoto per
+ripristinare il titolo predefinito della finestra).
+</Para>
+<VariableList>
+<VarListEntry>
+<Term>OK</Term>
+<ListItem>
+<Para>
+Rinominare la finestra e chiudere la finestra di dialogo Rinomina.
+</Para>
+</ListItem>
+</VarListEntry>
+<VarListEntry>
+<Term>Annullare</Term>
+<ListItem>
+<Para>
+Annulla la ridenominazione e chiudi la finestra di dialogo per la
+ridenominazione.
+</Para>
+</ListItem>
+</VarListEntry>
+<VarListEntry>
+<Term>Aiuto</Term>
+<ListItem>
+<Para>Visualizza queste informazioni di aiuto.</Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</Sect2>
 </sect1>
 <sect1 id="confirmsessioncreatede">
 <title>Conferma della creazione di una sessione<anchor id="confirmsessioncreation"></title>

+ 29 - 0
cde/doc/ja_JP.UTF-8/help/FPanel/Ref.sgm

@@ -764,6 +764,35 @@
 [スタイル・マネージャの起動] ダイアログ・ボックスの [ホームセッションを設定] を選択して、ホーム・セッションを保存してください。</Para>
 <!-- MODULE SEConfirmLogoutWithChoiceDE SElogch.DEa -->
 </Sect2>
+<Sect2 Id="WMWindowRenameDialogDE">
+<Title>ウィンドウの名前の変更・ダイアログ</Title>
+<Para><Anchor Id="WindowRename">
+</Para>
+<Para>
+テキストフィールドに新しい名前を入力します(空白のままにすると、
+デフォルトのウィンドウ タイトルが復元されます)。
+</Para>
+<VariableList>
+<VarListEntry>
+<Term>了解</Term>
+<ListItem>
+<Para>ウィンドウの名前を変更し、名前の変更ダイアログを閉じます。</Para>
+</ListItem>
+</VarListEntry>
+<VarListEntry>
+<Term>取消し</Term>
+<ListItem>
+<Para>名前の変更をキャンセルし、名前の変更ダイアログを閉じます。</Para>
+</ListItem>
+</VarListEntry>
+<VarListEntry>
+<Term>ヘルプ</Term>
+<ListItem>
+<Para>ヘルプ・トピックを表示します。</Para>
+</ListItem>
+</VarListEntry>
+</VariableList>
+</Sect2>
 </Sect1>
 
 <Sect1 Id="ConfirmSessionCreateDE">

+ 6 - 0
cde/programs/dtwm/Dtwm.defs.src

@@ -246,6 +246,12 @@ Dtwm*iconPlacement:	                      Top Left
 Dtwm*iconBoxGeometry:			      1x4+16+20
 Dtwm*iconBoxSBDisplayPolicy:        	      horizontal
 
+!####
+!#
+!# Specify the title for instant title dialog.
+!#
+!####
+Dtwm*instantTitleDialogShell.title: %|nls-21-#Rename#|
 
 !####
 !#

+ 3 - 3
cde/programs/dtwm/Makefile.am

@@ -34,9 +34,9 @@ dtwm_SOURCES = WmCDInfo.c      WmCDecor.c      WmCEvent.c \
                Clock.c         DataBaseLoad.c  PanelS.c \
                Parse.c         PopupMenu.c     Session.c \
                UI.c            WmBackdrop.c    WmFP.c \
-               WmHelp.c        WmIPC.c         WmOL.c \
-               WmParse.c       WmParseP.c      WmPresence.c \
-               WmWrkspace.c    WmXSMP.c
+               WmHelp.c        WmIPC.c         WmInstantTitle.c \
+               WmOL.c          WmParse.c       WmParseP.c \
+               WmPresence.c    WmWrkspace.c    WmXSMP.c
 
 dtfplist_SOURCES = Print.c Parse.c DataBaseLoad.c WmParse.c Session.c
 

+ 4 - 3
cde/programs/dtwm/WmCDecor.c

@@ -1159,7 +1159,7 @@ void GetTextBox (ClientData *pcd, XRectangle *pBox)
 	    fontList = CLIENT_TITLE_APPEARANCE(pcd).fontList;
 	else
 	    fontList = CLIENT_APPEARANCE(pcd).fontList;
-	textWidth = XmStringWidth(fontList, pcd->clientTitle);
+	textWidth = XmStringWidth(fontList, CLIENT_DISPLAY_TITLE(pcd));
 
 	offset = TitleBarHeight(pcd)/2;
 
@@ -1227,6 +1227,7 @@ void DrawWindowTitle (ClientData *pcd, Boolean eraseFirst)
     XRectangle textBox;
     Window win;
     XmFontList  fontList;
+    XmString title = CLIENT_DISPLAY_TITLE(pcd);
 
     /* make sure there is a title bar first */
     if (!(decoration & MWM_DECOR_TITLE))
@@ -1276,11 +1277,11 @@ void DrawWindowTitle (ClientData *pcd, Boolean eraseFirst)
     }
 
 #ifdef  DT_LEFT_JUSTIFIED_TITLE
-    WmDrawXmString(DISPLAY, win, fontList, pcd->clientTitle, clientGC,
+    WmDrawXmString(DISPLAY, win, fontList, title, clientGC,
 		   textBox.x, textBox.y, textBox.width, &textBox,
 		   ((wmGD.frameStyle == WmSLAB) ? False : True));
 #else /* DT_LEFT_JUSTIFIED_TITLE */
-    WmDrawXmString(DISPLAY, win, fontList, pcd->clientTitle, clientGC,
+    WmDrawXmString(DISPLAY, win, fontList, title, clientGC,
 		   textBox.x, textBox.y, textBox.width, &textBox,
 		   True);
 #endif /* DT_LEFT_JUSTIFIED_TITLE */

+ 20 - 0
cde/programs/dtwm/WmFunction.c

@@ -66,6 +66,7 @@
 #include "WmIPC.h"
 #include "WmIPlace.h"
 #include "WmIconBox.h"
+#include "WmInstantTitle.h"
 #include "WmKeyFocus.h"
 #include "WmMenu.h"
 #include "WmPresence.h"
@@ -4514,6 +4515,25 @@ Boolean F_Workspace_Presence (String args, ClientData *pCD, XEvent *event)
 
 } /* END OF FUNCTION F_Workspace_Presence */
 
+/**
+* @brief This function pops up the instant title dialog.
+*
+* @param args
+* @param pCD
+* @param event
+*
+* @return False
+*/
+Boolean F_Rename (String args, ClientData *pCD, XEvent *event)
+{
+    if (pCD && (pCD->dtwmFunctions & DtWM_FUNCTION_OCCUPY_WS))
+    {
+	InstantTitleShowDialog (pCD);
+    }
+
+    return False;
+}
+
 #ifdef DEBUG
 void
 DumpWindowList ()

+ 1 - 0
cde/programs/dtwm/WmFunction.h

@@ -93,6 +93,7 @@ extern Boolean F_Next_Workspace (String args, ClientData *pCD, XEvent *event);
 extern Boolean F_Prev_Workspace (String args, ClientData *pCD, XEvent *event);
 extern Boolean F_Workspace_Presence (String args, ClientData *pCD, 
 				     XEvent *event);
+extern Boolean F_Rename (String args, ClientData *pCD, XEvent *event);
 #if defined(DEBUG)
 extern Boolean F_ZZ_Debug (String, ClientData *, XEvent *);
 #endif /* DEBUG */

+ 19 - 0
cde/programs/dtwm/WmGlobal.h

@@ -1106,6 +1106,19 @@ typedef struct _FrameInfo
 
 } FrameInfo;
 
+/**
+ * @brief Specific data for instant title dialog
+ */
+typedef struct _InstantTitleData
+{
+    Boolean		widgetsInitialized;
+    struct _ClientData	*pCDforClient;
+    Context		contextForClient;
+    Widget		dialogShellW;
+    Widget		dialogBoxW;
+    Widget		formW;
+    Widget		textFieldW;
+} InstantTitleData, *PtrInstantTitleData;
 
 
 /*************************************<->*************************************
@@ -1132,6 +1145,7 @@ typedef struct _WmScreenData
     Widget      confirmboxW[4];
     Widget	wPanelist;		/* panel object */
     WsPresenceData	presence;	/* workspace presence dialog*/
+    InstantTitleData instantTitleData;	/* instant title dialog */
     Widget	switcherW;		/* workspace switcher */
     Widget	switcherShellW;		/* shell for ws switcher */
     Window	wmWorkspaceWin;		/* holds wm properties */
@@ -1310,6 +1324,8 @@ typedef struct _WmScreenData *PtrScreenData;
 /*
 #define ICON_DEFAULT_TITLE(pcd) ((pcd)->iconDefaultTitle)
 */
+#define ICON_DISPLAY_TITLE(pcd) \
+	((pcd)->instantTitle ? (pcd)->instantTitle : (pcd)->iconTitle)
 #define ICON_DECORATION(pcd) ((pcd)->pSD->iconDecoration)
 #define ICON_HEIGHT(pcd) ((pcd)->pSD->iconHeight)
 #define ICON_WIDTH(pcd) ((pcd)->pSD->iconWidth)
@@ -1465,6 +1481,8 @@ typedef struct _WmWorkspaceData *PtrWorkspaceData;
 /*
 #define CLIENT_DEFAULT_TITLE(pcd) ((pcd)->pSD->clientDefaultTitle)
 */
+#define CLIENT_DISPLAY_TITLE(pcd) \
+	((pcd)->instantTitle ? (pcd)->instantTitle : (pcd)->clientTitle)
 #define MAX_MAX_SIZE(pcd) ((pcd)->pSD->maximumMaximumSize)
 #define SHOW_RESIZE_CURSORS(pcd) ((pcd)->pSD->resizeCursors)
 #define JOIN_BEVEL(pcd) ((pcd)->pSD->joinBevel)
@@ -1636,6 +1654,7 @@ typedef struct _ClientData
     int		monitorY;			/* monitor Y loc */
     int		monitorWidth;			/* monitor width */
     int		monitorHeight;			/* monitor height */
+    XmString	instantTitle;			/* instant title */
 
     /* client window frame graphic data: */
 

+ 1 - 0
cde/programs/dtwm/WmHelp.h

@@ -38,6 +38,7 @@
 #define WM_DT_WSRENAMEERROR_HELP_TOPIC 		"WSRENAMEERROR"
 #define WM_DT_ICONBOX_TOPIC  			"ICONBOX"
 #define WM_DT_WSPRESENCE_TOPIC  		"WSPRESENCE"
+#define WM_DT_WINDOWRENAME_TOPIC		"WINDOWRENAME"
 
 typedef struct _WmHelpTopicData
 {

+ 5 - 5
cde/programs/dtwm/WmIDecor.c

@@ -868,7 +868,7 @@ void DrawIconTitle (ClientData *pcd)
 
     /* paint the text */
     WmDrawXmString(DISPLAY, ICON_FRAME_WIN(pcd), ICON_APPEARANCE(pcd).fontList,
-		   pcd->iconTitle, iconGC, 
+		   ICON_DISPLAY_TITLE(pcd), iconGC,
 		   textBox.x, textBox.y, textBox.width, &textBox, True);
 
 } /* END OF FUNCTION DrawIconTitle */
@@ -950,7 +950,7 @@ void RedisplayIconTitle (ClientData *pcd)
 	/* in with the new */
 	WmDrawXmString(DISPLAY, ICON_FRAME_WIN(pcd), 
 		       ICON_APPEARANCE(pcd).fontList,
-		       pcd->iconTitle, iconGC, 
+		       ICON_DISPLAY_TITLE(pcd), iconGC,
 		       textBox.x, textBox.y, textBox.width, &textBox,
 		       True);
 
@@ -1768,7 +1768,7 @@ void PaintActiveIconText (ClientData *pcd, Boolean erase)
 
     WmDrawXmString(DISPLAY, pcd->pSD->activeIconTextWin, 
 		   ICON_APPEARANCE(pcd).fontList,
-		   pcd->iconTitle, iconGC, 
+		   ICON_DISPLAY_TITLE(pcd), iconGC,
 		   textBox.x, textBox.y, textBox.width, &textBox, True);
 
 
@@ -1821,7 +1821,7 @@ void ShowActiveIconText (ClientData *pcd)
 
 	/* set up geometry for the window */
 
-	XmStringExtent (ICON_APPEARANCE(pcd).fontList, pcd->iconTitle,
+	XmStringExtent (ICON_APPEARANCE(pcd).fontList, ICON_DISPLAY_TITLE(pcd),
 			&dWidth, &dHeight);
 
 	activeIconTextHeight =  (unsigned int) dHeight + 
@@ -2004,7 +2004,7 @@ void MoveActiveIconText (ClientData *pcd)
     if (pcd->pSD->activeIconTextWin && wmGD.activeIconTextDisplayed) {
 	/* set up geometry for the window */
 
-	XmStringExtent (ICON_APPEARANCE(pcd).fontList, pcd->iconTitle,
+	XmStringExtent (ICON_APPEARANCE(pcd).fontList, ICON_DISPLAY_TITLE(pcd),
 			&dWidth, &dHeight);
 
 	activeIconTextHeight =  (unsigned int) dHeight +

+ 1 - 0
cde/programs/dtwm/WmInitWs.c

@@ -1240,6 +1240,7 @@ InitWmScreen (WmScreenData *pSD, int sNum)
     pSD->presence.shellW = NULL;
     pSD->presence.onScreen = False;
     pSD->presence.userDismissed = True;
+    pSD->instantTitleData.widgetsInitialized = False;
     pSD->workspaceList = NULL;
     pSD->numWorkspaces = 0;
     pSD->numWsDataAllocated = 0;

+ 333 - 0
cde/programs/dtwm/WmInstantTitle.c

@@ -0,0 +1,333 @@
+/*
+ * CDE - Common Desktop Environment
+ *
+ * (c) Copyright 1993-2012 The Open Group
+ * (c) Copyright 2012-2022 CDE Project contributors, see
+ * CONTRIBUTORS for details
+ *
+ * These libraries and programs are free software; you can
+ * redistribute them and/or modify them under the terms of the GNU
+ * Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * These libraries and programs are distributed in the hope that
+ * they will be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with these libraries and programs; if not, write
+ * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
+ * Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <Xm/DialogS.h>
+#include <Xm/Form.h>
+#include <Xm/Text.h>
+#include <Xm/TextF.h>
+#include <Dt/DialogBox.h>
+#include <Dt/SharedProcs.h>
+
+#include "WmGlobal.h"
+#include "WmCDecor.h"
+#include "WmError.h"
+#include "WmHelp.h"
+#include "WmIDecor.h"
+#include "WmInstantTitle.h"
+#include "WmPanelP.h"
+#include "WmProperty.h"
+#include "WmWinList.h"
+#include "WmWrkspace.h"
+
+extern XtPointer _XmStringUngenerate(XmString, XmStringTag,
+				     XmTextType, XmTextType);
+
+static void InstantTitleGetTitle(PtrInstantTitleData pITD) {
+    String value;
+    Widget textFieldW = pITD->textFieldW;
+    ClientData *pCD = pITD->pCDforClient;
+    XmString title = pITD->contextForClient == F_CONTEXT_ICON ?
+		     ICON_DISPLAY_TITLE(pCD) : CLIENT_DISPLAY_TITLE(pCD);
+
+    if (!title) return;
+
+    value = _XmStringUngenerate(title, NULL, XmCHARSET_TEXT, XmCHARSET_TEXT);
+
+    if (!value) return;
+
+    XtVaSetValues(textFieldW, XmNvalue, value, NULL);
+
+    XtFree(value);
+
+    XtVaSetValues(textFieldW, XmNcursorPosition,
+		  XmTextFieldGetLastPosition(textFieldW), NULL);
+}
+
+static void InstantTitleSetTitle(PtrInstantTitleData pITD) {
+    char *str = XmTextFieldGetString(pITD->textFieldW);
+    ClientData *pCD = pITD->pCDforClient;
+    Context context = pITD->contextForClient;
+    XmString *title = &pCD->instantTitle;
+    Window client = pCD->client;
+    Atom name = wmGD.xa__NET_WM_VISIBLE_NAME;
+    Atom iconName = wmGD.xa__NET_WM_VISIBLE_ICON_NAME;
+
+    if (*title) XmStringFree(*title);
+
+    _DtStripSpaces(str);
+
+    if (str[0]) {
+	*title = XmStringCreateLocalized(str);
+	SetUtf8String (DISPLAY, client, name, str);
+	SetUtf8String (DISPLAY, client, iconName, str);
+    }
+    else {
+	*title = NULL;
+	XDeleteProperty(DISPLAY, client, name);
+	XDeleteProperty(DISPLAY, client, iconName);
+    }
+
+    XtFree(str);
+
+    if (context == F_CONTEXT_ICON || pCD->pSD->useIconBox)
+	RedisplayIconTitle(pCD);
+
+    if (context != F_CONTEXT_ICON) DrawWindowTitle(pCD, True);
+}
+
+/**
+ * @brief Hides the instant title dialog.
+ *
+ * @param pClientData
+ */
+void InstantTitleHideDialog(ClientData *pClientData) {
+    PtrInstantTitleData pITD = &pClientData->pSD->instantTitleData;
+
+    if (pITD->widgetsInitialized && pITD->pCDforClient == pClientData)
+	XtUnmanageChild(pITD->dialogBoxW);
+}
+
+static void InstantTitleButtonCB(Widget w, XtPointer client_data,
+				 XtPointer call_data)
+{
+    PtrInstantTitleData pITD = client_data;
+    DtDialogBoxCallbackStruct *cb = call_data;
+
+    switch (cb->button_position) {
+	case 1:
+	    InstantTitleSetTitle(pITD);
+
+	case 2:
+	    InstantTitleHideDialog(pITD->pCDforClient);
+	    break;
+
+	case 3:
+	    XtCallCallbacks(pITD->dialogBoxW, XmNhelpCallback, NULL);
+	    break;
+
+	default:
+	    break;
+    }
+}
+
+static void InstantTitleWorkspaceModifyCB(Widget w, Atom atom_name, int type,
+					  XtPointer client_data)
+{
+    PtrInstantTitleData pITD = client_data;
+    ClientData *pCD = pITD->pCDforClient;
+
+    if (type == DtWSM_REASON_CURRENT &&
+	pITD->contextForClient == F_CONTEXT_ICON &&
+	XtIsManaged(pITD->dialogBoxW) && ClientInWorkspace(ACTIVE_WS, pCD))
+	InstantTitleShowDialog(pCD);
+}
+
+static Boolean InstantTitleMakeDialog(PtrInstantTitleData pITD) {
+    Cardinal n;
+    Arg args[10];
+    XmString buttonStrings[3];
+    Widget dialogShellW, dialogBoxW, formW, cancelW, textFieldW;
+    Boolean *widgetsInitialized = &pITD->widgetsInitialized;
+
+    if (*widgetsInitialized) return True;
+
+    n = 0;
+
+    XtSetArg(args[n], XmNallowShellResize, True); ++n;
+    XtSetArg(args[n], XmNmwmFunctions,
+	     MWM_FUNC_ALL | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE); ++n;
+
+    dialogShellW = pITD->dialogShellW = XtCreatePopupShell(
+		   "instantTitleDialogShell", xmDialogShellWidgetClass,
+		   pITD->pCDforClient->pSD->screenTopLevelW1, args, n);
+
+    if (!dialogShellW) goto err;
+
+    if (!DtWsmAddWorkspaceModifiedCallback(dialogShellW,
+	    InstantTitleWorkspaceModifyCB, pITD)) goto err;
+
+    buttonStrings[0] = XmStringCreateLocalized((char *)_DtOkString);
+    buttonStrings[1] = XmStringCreateLocalized((char *)_DtCancelString);
+    buttonStrings[2] = XmStringCreateLocalized((char *)_DtHelpString);
+
+    n = 0;
+
+    XtSetArg(args[n], XmNallowOverlap, False); ++n;
+    XtSetArg(args[n], XmNdefaultPosition, False); ++n;
+    XtSetArg(args[n], XmNbuttonCount, 3); ++n;
+    XtSetArg(args[n], XmNbuttonLabelStrings, buttonStrings); ++n;
+
+    dialogBoxW = pITD->dialogBoxW = _DtCreateDialogBox(dialogShellW,
+				    "instantTitleDialogBox", args, n);
+
+    XmStringFree(buttonStrings[0]);
+    XmStringFree(buttonStrings[1]);
+    XmStringFree(buttonStrings[2]);
+
+    if (!dialogBoxW) goto err;
+
+    XtAddCallback(dialogBoxW, XmNcallback, InstantTitleButtonCB, pITD);
+    XtAddCallback(dialogBoxW, XmNhelpCallback, WmDtWmTopicHelpCB,
+		  WM_DT_WINDOWRENAME_TOPIC);
+
+    cancelW = _DtDialogBoxGetButton(dialogBoxW, 2);
+
+    if (!cancelW) goto err;
+
+    n = 0;
+
+    XtSetArg(args[n], XmNautoUnmanage, False); ++n;
+    XtSetArg(args[n], XmNcancelButton, cancelW); ++n;
+
+    XtSetValues (dialogBoxW, args, n);
+
+    formW = pITD->formW = XmCreateForm(dialogBoxW, "instantTitleForm", NULL, 0);
+
+    if (!formW) goto err;
+
+    n = 0;
+
+    XtSetArg(args[n], XmNtopAttachment, XmATTACH_POSITION); ++n;
+    XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); ++n;
+    XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); ++n;
+    XtSetArg(args[n], XmNbottomAttachment, XmATTACH_NONE); ++n;
+    XtSetArg(args[n], XmNmaxLength, FILENAME_MAX); ++n;
+
+    textFieldW = pITD->textFieldW = XmCreateTextField(formW,
+				    "instantTitleTextField", args, n);
+
+    if (!textFieldW) goto err;
+
+    XtManageChild(dialogShellW);
+    XtManageChild(dialogBoxW);
+    XtManageChild(formW);
+    XtManageChild(cancelW);
+    XtManageChild(textFieldW);
+
+    DtWsmRemoveWorkspaceFunctions(DISPLAY1, XtWindow(dialogShellW));
+
+    *widgetsInitialized = True;
+
+    return True;
+
+err:
+    if (dialogShellW) {
+	XtDestroyWidget(dialogShellW);
+	*widgetsInitialized = False;
+    }
+
+    Warning(GETMESSAGE(88, 1, "1 Unable to create instant title dialog."));
+
+    return False;
+}
+
+static void InstantTitleSetPosition(PtrInstantTitleData pITD) {
+    int x, y;
+    Dimension height;
+    Cardinal n;
+    Arg args[10];
+    XFontStruct *font;
+    Window windowGroup;
+    Widget dialogShellW = pITD->dialogShellW;
+    Context context = pITD->contextForClient;
+    ClientData *pCD = pITD->pCDforClient;
+    WmScreenData *pSD = pCD->pSD;
+
+    XtVaGetValues(dialogShellW, XmNheight, &height, NULL);
+
+    if (wmGD.positionIsFrame) {
+	if (pSD->decoupleTitleAppearance)
+	    font = pSD->clientTitleAppearance.font;
+	else
+	    font = pSD->clientAppearance.font;
+
+	height += TEXT_HEIGHT(font) + (2 * pSD->frameBorderWidth);
+    }
+
+    GetSystemMenuPosition(pCD, &x, &y, height, context);
+
+    if (context == F_CONTEXT_ICON) {
+	if (pSD->useIconBox && P_ICON_BOX(pCD))
+	    windowGroup = P_ICON_BOX(pCD)->pCD_iconBox->client;
+	else
+	    windowGroup = XtUnspecifiedWindowGroup;
+    }
+    else {
+	windowGroup = pCD->client;
+    }
+
+    n = 0;
+
+    XtSetArg(args[n], XmNx, x); ++n;
+    XtSetArg(args[n], XmNy, y); ++n;
+    XtSetArg(args[n], XmNtransientFor, NULL); ++n;
+    XtSetArg(args[n], XmNwindowGroup, windowGroup); ++n;
+
+    XtSetValues(dialogShellW, args, n);
+}
+
+/**
+ * @brief Shows the instant title dialog.
+ *
+ * @param pClientData
+ * @param context
+ */
+void InstantTitleShowDialog(ClientData *pClientData) {
+    Widget dialogBoxW, textFieldW;
+    Context context;
+    ClientData *pCD = pClientData->transientLeader ?
+		      FindTransientTreeLeader(pClientData) : pClientData;
+    WmScreenData *pSD = pCD->pSD;
+    PtrInstantTitleData pITD = &pSD->instantTitleData;
+
+    switch (pCD->clientState) {
+	case MINIMIZED_STATE:
+	    context = F_CONTEXT_ICON;
+	    break;
+	case NORMAL_STATE:
+	case MAXIMIZED_STATE:
+	    context = F_CONTEXT_WINDOW;
+	    break;
+	default:
+	    return;
+    }
+
+    pITD->pCDforClient = pCD;
+    pITD->contextForClient = context;
+
+    if (!InstantTitleMakeDialog(pITD)) return;
+
+    InstantTitleGetTitle(pITD);
+    InstantTitleSetPosition(pITD);
+
+    dialogBoxW = pITD->dialogBoxW;
+    XtUnmanageChild(dialogBoxW);
+    XtManageChild(dialogBoxW);
+
+    textFieldW = pITD->textFieldW;
+    XmProcessTraversal(textFieldW, XmTRAVERSE_CURRENT);
+    XmTextSetSelection(textFieldW, 0, XmTextGetLastPosition(textFieldW),
+		       CurrentTime);
+}

+ 32 - 0
cde/programs/dtwm/WmInstantTitle.h

@@ -0,0 +1,32 @@
+/*
+ * CDE - Common Desktop Environment
+ *
+ * (c) Copyright 1993-2012 The Open Group
+ * (c) Copyright 2012-2022 CDE Project contributors, see
+ * CONTRIBUTORS for details
+ *
+ * These libraries and programs are free software; you can
+ * redistribute them and/or modify them under the terms of the GNU
+ * Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * These libraries and programs are distributed in the hope that
+ * they will be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with these libraries and programs; if not, write
+ * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
+ * Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef WMINSTANTTITLE_H
+#define WMINSTANTTITLE_H
+
+void InstantTitleHideDialog(ClientData *pClientData);
+void InstantTitleShowDialog(ClientData *pClientData);
+
+#endif

+ 8 - 0
cde/programs/dtwm/WmManage.c

@@ -50,6 +50,7 @@
 #include "WmIDecor.h"
 #include "WmIconBox.h"
 #include "WmImage.h"
+#include "WmInstantTitle.h"
 #include "WmKeyFocus.h"
 #include "WmPanelP.h"	/* typedef needed in WmManage.h */
 #include <Dt/Message.h>
@@ -957,6 +958,8 @@ void WithdrawWindow (ClientData *pCD)
 	pCD->pSD->presence.pCDforClient = NULL;
     }
 
+    InstantTitleHideDialog (pCD);
+
     /*
      * Check to see if the window is being unmanaged because the window
      * was destroyed.
@@ -1136,6 +1139,11 @@ void WithdrawWindow (ClientData *pCD)
 	XmStringFree (pCD->iconTitle);
     }
 
+    if (pCD->instantTitle)
+    {
+	XmStringFree (pCD->instantTitle);
+    }
+
     if (pCD->clientCmapCount > 0)
     {
 	for (i = 0; i < pCD->clientCmapCount; i++)

+ 2 - 2
cde/programs/dtwm/WmPresence.c

@@ -323,14 +323,14 @@ wspSetWindowName(
     if (pPres->contextForClient == F_CONTEXT_ICON)
     {
 	XtSetArg (nameArgs[nameN], XmNlabelString, 
-		  pPres->pCDforClient->iconTitle);	nameN++;
+		  ICON_DISPLAY_TITLE(pPres->pCDforClient));	nameN++;
 	XtSetArg (labelArgs[labelN], XmNlabelString, 
 		  iconLabelString);	                labelN++;
     }
     else
     {
 	XtSetArg (nameArgs[nameN], XmNlabelString, 
-		  pPres->pCDforClient->clientTitle);	nameN++;
+		  CLIENT_DISPLAY_TITLE(pPres->pCDforClient));	nameN++;
 	XtSetArg (labelArgs[labelN], XmNlabelString, 
 		  windowLabelString);	                labelN++;
     }

+ 50 - 0
cde/programs/dtwm/WmProperty.c

@@ -36,6 +36,7 @@
 
 #include "WmGlobal.h"
 #include "WmICCC.h"
+#include <limits.h>
 #include <stdio.h>
 #include <Dt/WsmP.h>
 #include <X11/Xatom.h>
@@ -1887,6 +1888,55 @@ HasProperty (
 
 } /* END OF FUNCTION HasProperty */
 
+/**
+ * @brief This function calls XGetWindowProperty to get the UTF8_STRING
+ *        property.
+ *
+ * @param display
+ * @param w
+ * @param property
+ *
+ * @return A string or NULL.
+ */
+char *GetUtf8String (Display *display, Window w, Atom property)
+{
+    int actualFormat;
+    char *propReturn;
+    unsigned long nitems, leftover;
+    Atom actualType;
+    Atom reqType = wmGD.xa_UTF8_STRING;
+
+    if (XGetWindowProperty (display, w, property, 0L, USHRT_MAX, False, reqType,
+			    &actualType, &actualFormat, &nitems, &leftover,
+			    (unsigned char **) &propReturn) != Success)
+	goto err;
+
+    if (!nitems) goto err;
+    if (actualType != reqType) goto err;
+
+    return propReturn;
+
+err:
+    if (propReturn) XFree (propReturn);
+    return NULL;
+}
+
+/**
+ * @brief This function calls XChangeProperty to set the UTF8_STRING property.
+ *
+ * @param display
+ * @param w
+ * @param property
+ * @param s
+ */
+void SetUtf8String (Display *display, Window w, Atom property, const char *s)
+{
+    size_t len;
 
+    if (!(s && s[0])) return;
 
+    len = strnlen (s, USHRT_MAX);
 
+    XChangeProperty (display, w, property, wmGD.xa_UTF8_STRING, 8,
+		     PropModeReplace, (unsigned char *)s, len);
+}

+ 3 - 1
cde/programs/dtwm/WmProperty.h

@@ -58,4 +58,6 @@ extern void SetCurrentWorkspaceProperty (WmScreenData *pSD);
 extern void SetWorkspaceInfoProperty (WmWorkspaceData *pWS);
 extern void DeleteWorkspaceInfoProperty (WmWorkspaceData *pWS);
 extern char *WorkspacePropertyName (WmWorkspaceData *pWS);
-
+extern char *GetUtf8String (Display *display, Window w, Atom property);
+extern void SetUtf8String (Display *display, Window w, Atom property,
+			   const char *s);

+ 2 - 0
cde/programs/dtwm/WmResNames.h

@@ -194,6 +194,7 @@
 #define WmNworkspaceController		"workspaceController"
 #define WmNworkspacePresence		"workspacePresence"
 #define WmNworkspaceSwitch		"workspaceSwitch"
+#define WmNinstantTitle			"instantTitle"
 
 /* window manager client resource names: */
 
@@ -356,6 +357,7 @@
 #define WmCWorkspaceController		"WorkspaceController"
 #define WmCWorkspacePresence		"WorkspacePresence"
 #define WmCWorkspaceSwitch		"WorkspaceSwitch"
+#define WmCInstantTitle			"InstantTitle"
 
 /* window manager client resource names: */
 

+ 5 - 0
cde/programs/dtwm/WmResParse.c

@@ -492,6 +492,11 @@ FunctionTableEntry functionTable[] = {
 			DtWM_FUNC_OCCUPY_WS,
 			F_Remove,
 			ParseWmFuncNoArg},
+    {"f.rename",	F_CONTEXT_ROOT|F_CONTEXT_ICONBOX|F_SUBCONTEXT_IB_WICON,
+			CRS_ANY,
+			DtWM_FUNC_OCCUPY_WS,
+			F_Rename,
+			ParseWmFuncNoArg},
     {"f.resize",	F_CONTEXT_ICON|F_CONTEXT_ROOT|
                                  F_SUBCONTEXT_IB_IICON|F_SUBCONTEXT_IB_WICON,
 			CRS_ANY,

+ 21 - 2
cde/programs/dtwm/WmResource.c

@@ -164,6 +164,7 @@ char *builtinSystemMenu = BUILTINSYSTEMMENU;
 	Maximize	_x	f.maximize\n\
 	Lower		_L	f.lower\n\
 	no-label		f.separator\n\
+      \"Rename...\"		_a	f.rename\n\
       \"Occupy Workspace...\"	_O	f.workspace_presence\n\
       \"Occupy All Workspaces\"	_A	f.occupy_all\n\
       \"Unoccupy Workspace\"	_U	f.remove\n\
@@ -180,6 +181,7 @@ void InitBuiltinSystemMenu(void)
     char *MinString = NULL;
     char *MaxString = NULL;
     char *LowString = NULL;
+    char *RenString = NULL;
     char *OcpString = NULL;
     char *OcaString = NULL;
     char *RemString = NULL;
@@ -299,6 +301,21 @@ void InitBuiltinSystemMenu(void)
 
     if (DtwmBehavior)
     {
+	if(gotItAll)
+	{
+	    tmpString = ((char *)GETMESSAGE(62, 70, "Rename\\.\\.\\. _a  f.rename"));
+	    if ((RenString =
+		 (char *)XtMalloc ((unsigned int)
+				 (strlen(tmpString) + 1))) == NULL)
+	    {
+		Warning (((char *)GETMESSAGE(62, 14, "Insufficient memory for local default menu.")));
+		gotItAll = False;
+	    }
+	    else
+	    {
+		strcpy(RenString, tmpString);
+	    }
+	}
 	if(gotItAll)
 	{
 	    tmpString = ((char *)GETMESSAGE(62, 55, "Occupy\\ Workspace\\.\\.\\. _O  f.workspace_presence"));
@@ -382,8 +399,8 @@ void InitBuiltinSystemMenu(void)
                  SizString, MinString, MaxString, LowString);
 	if (DtwmBehavior)
 	{
-	    snprintf(dsmtemp, sizeof(dsmtemp), "%s%s\n%s\n%s\n no-label  f.separator\n",
-	             dsm, OcpString, OcaString, RemString);
+	    snprintf(dsmtemp, sizeof(dsmtemp), "%s%s\n%s\n%s\n%s\n no-label  f.separator\n",
+	             dsm, RenString, OcpString, OcaString, RemString);
 	    strcpy(dsm, dsmtemp);
 	}
         snprintf(dsmtemp, sizeof(dsmtemp), "%s%s\n}", dsm, CloString);
@@ -422,6 +439,8 @@ void InitBuiltinSystemMenu(void)
        XtFree(MaxString);
     if (LowString != NULL)
        XtFree(LowString);
+    if (RenString != NULL)
+       XtFree(RenString);
     if (OcpString != NULL)
        XtFree(OcpString);
     if (OcaString != NULL)

+ 27 - 23
cde/programs/dtwm/WmWinInfo.c

@@ -221,6 +221,8 @@ InitClientData (Window clientWindow)
     pCD->fullscreen = False;
     pCD->monitorSizeIsSet = False;
 
+    pCD->instantTitle = NULL;
+
     for (i = 0; i < STRETCH_COUNT; ++i) pCD->clientStretchWin[i] = (Window)0L;
 
     return (pCD);
@@ -2201,11 +2203,7 @@ WmICCCMToXmString (XTextProperty *wmNameProp)
 void 
 ProcessWmWindowTitle (ClientData *pCD, Boolean firstTime)
 {
-    Atom actualType;
-    int actualFormat;
-    unsigned long nitems;
-    unsigned long leftover;
-    char *netWmNameProp;
+    char *netStr;
     XTextProperty wmNameProp;
     XmString title_xms = NULL;
     Window win = pCD->client;
@@ -2216,13 +2214,10 @@ ProcessWmWindowTitle (ClientData *pCD, Boolean firstTime)
 	(!firstTime || hasWmName || hasNetWmName))
     {
 	if ((!firstTime || hasNetWmName) &&
-	    XGetWindowProperty (DISPLAY, win, wmGD.xa__NET_WM_NAME, 0L,
-				1000000L, False, wmGD.xa_UTF8_STRING,
-				&actualType, &actualFormat, &nitems, &leftover,
-				(unsigned char **) &netWmNameProp) == Success)
+	    (netStr = GetUtf8String (DISPLAY, win, wmGD.xa__NET_WM_NAME)))
 	{
-	    title_xms = XmStringCreateLocalized (netWmNameProp);
-	    XFree (netWmNameProp);
+	    title_xms = XmStringCreateLocalized (netStr);
+	    XFree (netStr);
 	}
 	else if ((!firstTime || hasWmName) &&
 		 XGetWMName(DISPLAY, win, &wmNameProp))
@@ -2275,6 +2270,14 @@ ProcessWmWindowTitle (ClientData *pCD, Boolean firstTime)
         }
     }
 
+    if (firstTime && pCD->instantTitle == NULL &&
+	HasProperty (pCD, wmGD.xa__NET_WM_VISIBLE_NAME) &&
+	(netStr = GetUtf8String (DISPLAY, win, wmGD.xa__NET_WM_VISIBLE_NAME)))
+    {
+	pCD->instantTitle = XmStringCreateLocalized (netStr);
+	XFree (netStr);
+    }
+
     /*
      * If this is a tear-off menu, then make sure title text is not clipped
      */
@@ -2295,7 +2298,7 @@ ProcessWmWindowTitle (ClientData *pCD, Boolean firstTime)
 	/*
 	 * Calculations derived from GetTextBox() and GetFramePartInfo()
 	 */
-	minWidth = XmStringWidth(fontList, pCD->clientTitle) +
+	minWidth = XmStringWidth(fontList, CLIENT_DISPLAY_TITLE(pCD)) +
 	    ((pCD->dtwmBehaviors & DtWM_BEHAVIOR_SUBPANEL) ? 4 : 0) +
 			    ((decor & MWM_DECOR_MENU) ? boxdim : 0) +
 			    ((decor & MWM_DECOR_MINIMIZE) ? boxdim : 0) +
@@ -2434,11 +2437,7 @@ FixSubpanelEmbeddedClientGeometry (ClientData *pCD)
 void 
 ProcessWmIconTitle (ClientData *pCD, Boolean firstTime)
 {
-  Atom actualType;
-  int actualFormat;
-  unsigned long nitems;
-  unsigned long leftover;
-  char *netWmIconNameProp;
+  char *netStr;
   XTextProperty wmIconNameProp;
   XmString icon_xms = NULL;
   Window win = pCD->client;
@@ -2450,13 +2449,10 @@ ProcessWmIconTitle (ClientData *pCD, Boolean firstTime)
       (!firstTime || hasWmIconName || hasNetWmIconName))
   {
     if ((!firstTime || hasNetWmIconName) &&
-	XGetWindowProperty (DISPLAY, win, wmGD.xa__NET_WM_ICON_NAME, 0L,
-			    1000000L, False, wmGD.xa_UTF8_STRING, &actualType,
-			    &actualFormat, &nitems, &leftover,
-			    (unsigned char **) &netWmIconNameProp) == Success)
+	(netStr = GetUtf8String (DISPLAY, win, wmGD.xa__NET_WM_ICON_NAME)))
     {
-      icon_xms = XmStringCreateLocalized (netWmIconNameProp);
-      XFree (netWmIconNameProp);
+      icon_xms = XmStringCreateLocalized (netStr);
+      XFree (netStr);
     }
     else if ((!firstTime || hasWmIconName) &&
 	     XGetWMIconName (DISPLAY, win, &wmIconNameProp))
@@ -2498,6 +2494,14 @@ ProcessWmIconTitle (ClientData *pCD, Boolean firstTime)
     }
   }
 
+  if (firstTime && pCD->instantTitle == NULL &&
+      HasProperty (pCD, wmGD.xa__NET_WM_VISIBLE_ICON_NAME) &&
+      (netStr = GetUtf8String (DISPLAY, win,
+			       wmGD.xa__NET_WM_VISIBLE_ICON_NAME)))
+  {
+    pCD->instantTitle = XmStringCreateLocalized (netStr);
+    XFree (netStr);
+  }
 } /* END OF FUNCTION ProcessWmIconTitle */
 
 

+ 51 - 0
cde/programs/dtwm/WmXSMP.c

@@ -44,6 +44,9 @@
 #include "WmWrkspace.h"
 #include <Dt/Session.h>
 
+extern XtPointer _XmStringUngenerate(XmString, XmStringTag,
+				     XmTextType, XmTextType);
+
 typedef struct _ProxyClientInfo
 {
     int screen;
@@ -72,6 +75,7 @@ static char *screenStr = "%s.screen";
 static char *workspacesStr = "%s.workspaces";
 static char *iconXPosStr = "%s.iconPos.x.%s";
 static char *iconYPosStr = "%s.iconPos.y.%s";
+static char *instantTitleStr = "%s.instantTitle";
 
 /* Header for private database. */
 static char *dbHeader = "\
@@ -109,6 +113,9 @@ static void buildDBFileName(char [MAXPATHLEN], Boolean);
 /* Get string of client's workspaces. */
 static char *getClientWorkspaces(ClientData *);
 
+/* Get string of client's instant title. */
+static char *getClientInstantTitle(ClientData *);
+
 /* List-of-clients utilities. */
 static Boolean addClientToList(ClientData ***, int *, ClientData *);
 static int clientWorkspaceCompare(const void *, const void *);
@@ -292,6 +299,15 @@ getClientWorkspaces(ClientData *pCD)
     return cwsP;
 }
 
+static char *
+getClientInstantTitle(ClientData *pCD)
+{
+    if (!pCD->instantTitle) return NULL;
+
+    return _XmStringUngenerate(pCD->instantTitle, NULL, XmCHARSET_TEXT,
+			       XmCHARSET_TEXT);
+}
+
 static Boolean
 addClientToList(ClientData ***cdList, int *nClients, ClientData *pCD)
 {
@@ -421,6 +437,13 @@ findXSMPClientDBMatch(ClientData *pCD, char **workSpaceNamesP)
 	    {
 		*workSpaceNamesP = XtNewString(resourcePtr);
 	    }
+
+	    if ((resourcePtr = getXSMPResource(pCD, WMSAVE_INSTANT_TITLE,
+					       instantTitleStr))
+		!= (char *)NULL)
+	    {
+		pCD->instantTitle = XmStringCreateLocalized(resourcePtr);
+	    }
 	}
 
 	/* Always return True for XSMP clients. */
@@ -611,6 +634,13 @@ findProxyClientDBMatch(ClientData *pCD, char **workSpaceNamesP)
 		*workSpaceNamesP = XtNewString(resourcePtr);
 	    }
 
+	    if ((resourcePtr =
+		 getClientResource(proxyClientID, instantTitleStr))
+		!= (char *)NULL)
+	    {
+		pCD->instantTitle = XmStringCreateLocalized(resourcePtr);
+	    }
+
 	    return True;
 	}
     }
@@ -722,6 +752,18 @@ saveXSMPClient(FILE *fp, ClientData *pCD)
 	}
     }
 
+    if (SAVE_RESOURCE(pCD, WMSAVE_INSTANT_TITLE))
+    {
+	char *title = getClientInstantTitle(pCD);
+
+	if (title)
+	{
+	    fprintf(fp, instantTitleStr, clientID);
+	    fprintf(fp, strArg, title);
+	    XtFree(title);
+	}
+    }
+
     return True;
 }
 
@@ -737,6 +779,7 @@ saveProxyClient(FILE *fp, ClientData *pCD, int clientIDNum)
     int clientX, clientY;
     unsigned int clientWd, clientHt;
     char *clientWorkspaces;
+    char *instantTitle;
 
     if (!getProxyClientInfo(pCD, &proxyClientInfo))
 	return False;
@@ -806,6 +849,14 @@ saveProxyClient(FILE *fp, ClientData *pCD, int clientIDNum)
 	XtFree(clientWorkspaces);
     }
 
+    instantTitle = getClientInstantTitle(pCD);
+    if (instantTitle)
+    {
+	fprintf(fp, instantTitleStr, clientID);
+	fprintf(fp, strArg, instantTitle);
+	XtFree(instantTitle);
+    }
+
     return True;
 }
 

+ 1 - 0
cde/programs/dtwm/WmXSMP.h

@@ -49,6 +49,7 @@
 #define WMSAVE_WORKSPACES	(1L << 5)
 #define WMSAVE_ICON_X		(1L << 6)
 #define WMSAVE_ICON_Y		(1L << 7)
+#define WMSAVE_INSTANT_TITLE	(1L << 8)
 
 extern void AddSMCallbacks(void);
 extern void ResignFromSM(void);

+ 9 - 3
cde/programs/dtwm/dtwm.msg

@@ -1,4 +1,3 @@
-
 $ "$TOG: dtwm.msg /main/6 1999/09/20 15:18:52 mgreess $";
 
 $ *************************************<+>*************************************
@@ -487,7 +486,7 @@ $ Messages 1, 3, 5, 7, 9, 11, 13, 15, 17 and 19 are not used.
 $ Messages 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 to 29, 31, 33 to 38, 66-68,
 $          go to an errorlog and do NOT need to be localized.
 $ Messages 30 and 39-47 are not used.
-$ Only messages 32, 48-57 and 59 need to be localized.
+$ Only messages 32, 48-57, 59 and 70 need to be localized.
 
 $    This message goes to an error file.
 $ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
@@ -629,6 +628,9 @@ $ YOU DON'T NEED TO LOCALIZE MESSAGES 66 TO 68.
 67 Key bindings %s not found, using builtin key bindings\n
 68 Button bindings %s not found, using builtin button bindings\n
 
+$    This item renames the title of a window
+70 Rename\\.\\.\\. _a  f.rename
+
 $set 70
 $    THIS COMMENT FOR DTWM TEAM ONLY -- WmWinInfo.c --
 $    This entire set is written to an error file.
@@ -784,6 +786,11 @@ $ Messages 5 and 6 are old. They are replaced by messaged 8 and 9.
 8 There is already an icon of this name.
 9 Workspace Manager - Icon Action Error
 
+$set 88
+$    THIS COMMENT FOR DTWM TEAM ONLY -- WmInstantTitle.c --
+$    This message goes to an error file.
+$ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
+1 Unable to create instant title dialog.
 
 $set 99
 $    DO NOT TRANSLATE THESE MESSAGES
@@ -793,4 +800,3 @@ $    These messages are used for the version information.
 $quote "
 1 "@(#)version_goes_here"
 2 "\n@(#)_DtMessage catalog source $TOG: dtwm.msg /main/6 1999/09/20 15:18:52 mgreess $"
-

+ 3 - 0
cde/programs/localized/C/app-defaults/Dtwm.tmsg

@@ -94,3 +94,6 @@ $ Dtwm*FrontPanel*lowResFontList
 19 -dt-interface system-medium-r-normal-xs*-*-*-*-*-*-*-*-*:
 $ Dtwm*icon*fontList
 20 -dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-*:
+
+$ Dtwm*instantTitleDialogShell.title
+21 Rename

+ 3 - 0
cde/programs/localized/de_DE.UTF-8/app-defaults/Dtwm.tmsg

@@ -114,3 +114,6 @@ $ Dtwm*FrontPanel*lowResFontList
 $ Dtwm*icon*fontList 
 
 20 "-dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-*:"
+
+$ Dtwm*instantTitleDialogShell.title
+21 Umbenennen

+ 11 - 1
cde/programs/localized/de_DE.UTF-8/msg/dtwm.msg

@@ -595,7 +595,8 @@ $ Messages 1, 3, 5, 7, 9, 11, 13, 15, 17 and 19 are not used.
 $ Messages 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 to 29, 31, 33 to 38, go to   
 $          an errorlog and do NOT need to be localized.  
 $ Messages 30 and 39-47 are not used.  
-$ Only messages 32, 48-57 and 59 need to be localized.  
+$ Only messages 32, 48-57, 59 and 70 need to be localized.
+
 $    This message goes to an error file.  
 $ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.  
 
@@ -753,6 +754,9 @@ $ YOU DON'T NEED TO LOCALIZE MESSAGES 66 TO 68.
 
 68 "Button bindings %s not found, using builtin button bindings\n"
 
+$    This item renames the title of a window
+70 Umbenennen\\.\\.\\. _a  f.rename
+
 $set 70        Redefine set#
 
 $    THIS COMMENT FOR DTWM TEAM ONLY -- WmWinInfo.c --  
@@ -973,6 +977,12 @@ $ Messages 5 and 6 are old. They are replaced by messaged 8 and 9.
 
 9 "Arbeitsbereichssteuerung - Fehler bei Symbolaktion"
 
+$set 88
+$    THIS COMMENT FOR DTWM TEAM ONLY -- WmInstantTitle.c --
+$    This message goes to an error file.
+$ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
+1 Unable to create instant title dialog.
+
 $set 99        Redefine set#
 
 $    DO NOT TRANSLATE THESE MESSAGES  

+ 3 - 0
cde/programs/localized/el_GR.UTF-8/app-defaults/Dtwm.tmsg

@@ -94,3 +94,6 @@ $ Dtwm*FrontPanel*lowResFontList
 19 -dt-interface system-medium-r-normal-xs*-*-*-*-*-*-*-*-*:
 $ Dtwm*icon*fontList
 20 -dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-*:
+
+$ Dtwm*instantTitleDialogShell.title
+21 Μετονομασία

+ 9 - 2
cde/programs/localized/el_GR.UTF-8/msg/dtwm.msg

@@ -1,4 +1,3 @@
-
 $ "$TOG: dtwm.msg /main/6 1999/09/20 15:18:52 mgreess $";
 
 $ *************************************<+>*************************************
@@ -483,7 +482,7 @@ $ Messages 1, 3, 5, 7, 9, 11, 13, 15, 17 and 19 are not used.
 $ Messages 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 to 29, 31, 33 to 38, 66-68,
 $          go to an errorlog and do NOT need to be localized.
 $ Messages 30 and 39-47 are not used.
-$ Only messages 32, 48-57 and 59 need to be localized.
+$ Only messages 32, 48-57, 59 and 70 need to be localized.
 
 $    This message goes to an error file.
 $ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
@@ -625,6 +624,9 @@ $ YOU DON'T NEED TO LOCALIZE MESSAGES 66 TO 68.
 67 Key bindings %s not found, using builtin key bindings\n
 68 Button bindings %s not found, using builtin button bindings\n
 
+$    This item renames the title of a window
+70 Μετονομασία\\.\\.\\. _a  f.rename
+
 $set 70
 $    THIS COMMENT FOR DTWM TEAM ONLY -- WmWinInfo.c --
 $    This entire set is written to an error file.
@@ -780,6 +782,11 @@ $ Messages 5 and 6 are old. They are replaced by messaged 8 and 9.
 8 Υπάρχει ήδη ένα εικονίδιο με αυτό το όνομα.
 9 Διαχειριστής επιφάνειας εργασίας - Σφάλμα ενέργειας εικονιδίου
 
+$set 88
+$    THIS COMMENT FOR DTWM TEAM ONLY -- WmInstantTitle.c --
+$    This message goes to an error file.
+$ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
+1 Unable to create instant title dialog.
 
 $set 99
 $    DO NOT TRANSLATE THESE MESSAGES

+ 3 - 0
cde/programs/localized/es_ES.UTF-8/app-defaults/Dtwm.tmsg

@@ -114,3 +114,6 @@ $ Dtwm*FrontPanel*lowResFontList
 $ Dtwm*icon*fontList  
 
 20 "-dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-*:"
+
+$ Dtwm*instantTitleDialogShell.title
+21 Renombrar

+ 11 - 1
cde/programs/localized/es_ES.UTF-8/msg/dtwm.msg

@@ -591,7 +591,8 @@ $ Messages 1, 3, 5, 7, 9, 11, 13, 15, 17 and 19 are not used.
 $ Messages 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 to 29, 31, 33 to 38, 66-68,  
 $          go to an errorlog and do NOT need to be localized.  
 $ Messages 30 and 39-47 are not used.  
-$ Only messages 32, 48-57 and 59 need to be localized.  
+$ Only messages 32, 48-57, 59 and 70 need to be localized.
+
 $    This message goes to an error file.  
 $ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.  
 
@@ -749,6 +750,9 @@ $ YOU DON'T NEED TO LOCALIZE MESSAGES 66 TO 68.
 
 68 "No se han encontrado las asignaciones de botones %s, se utilizan las asignaciones de botones incorporadas\n"
 
+$    This item renames the title of a window
+70 Renombrar\\.\\.\\. _a  f.rename
+
 $set 70        Redefine set#
 
 $    THIS COMMENT FOR DTWM TEAM ONLY -- WmWinInfo.c --  
@@ -967,6 +971,12 @@ $ Messages 5 and 6 are old. They are replaced by messaged 8 and 9.
 
 9 "Gestor de Espacios de Trabajos - Error Acción Icono"
 
+$set 88
+$    THIS COMMENT FOR DTWM TEAM ONLY -- WmInstantTitle.c --
+$    This message goes to an error file.
+$ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
+1 Unable to create instant title dialog.
+
 $set 99        Redefine set#
 
 $    DO NOT TRANSLATE THESE MESSAGES  

+ 3 - 0
cde/programs/localized/fr_FR.UTF-8/app-defaults/Dtwm.tmsg

@@ -114,3 +114,6 @@ $ Dtwm*FrontPanel*lowResFontList
 $ Dtwm*icon*fontList  
 
 20 "-dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-*:"
+
+$ Dtwm*instantTitleDialogShell.title
+21 Renommer

+ 11 - 1
cde/programs/localized/fr_FR.UTF-8/msg/dtwm.msg

@@ -591,7 +591,8 @@ $ Messages 1, 3, 5, 7, 9, 11, 13, 15, 17 and 19 are not used.
 $ Messages 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 to 29, 31, 33 to 38, 66-68,
 $          go to an errorlog and do NOT need to be localized.
 $ Messages 30 and 39-47 are not used.
-$ Only messages 32, 48-57 and 59 need to be localized.
+$ Only messages 32, 48-57, 59 and 70 need to be localized.
+
 $    This message goes to an error file.
 $ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
 
@@ -749,6 +750,9 @@ $ YOU DON'T NEED TO LOCALIZE MESSAGES 66 TO 68.
 
 68 "Button bindings %s not found, using builtin button bindings\n"
 
+$    This item renames the title of a window
+70 Renommer\\.\\.\\. _a  f.rename
+
 $set 70        Redefine set#
 
 $    THIS COMMENT FOR DTWM TEAM ONLY -- WmWinInfo.c --
@@ -965,6 +969,12 @@ $ Messages 5 and 6 are old. They are replaced by messaged 8 and 9.
 
 9 "Gestionnaire de l'espace de travail - Erreur d'action sur icône"
 
+$set 88
+$    THIS COMMENT FOR DTWM TEAM ONLY -- WmInstantTitle.c --
+$    This message goes to an error file.
+$ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
+1 Unable to create instant title dialog.
+
 $set 99        Redefine set#
 
 $    DO NOT TRANSLATE THESE MESSAGES

+ 3 - 0
cde/programs/localized/it_IT.UTF-8/app-defaults/Dtwm.tmsg

@@ -94,3 +94,6 @@ $ Dtwm*FrontPanel*lowResFontList
 19 -dt-interface system-medium-r-normal-xs*-*-*-*-*-*-*-*-*:
 $ Dtwm*icon*fontList
 20 -dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-*:
+
+$ Dtwm*instantTitleDialogShell.title
+21 Cambiare nome

+ 9 - 3
cde/programs/localized/it_IT.UTF-8/msg/dtwm.msg

@@ -1,4 +1,3 @@
-
 $ "$TOG: dtwm.msg /main/6 1999/09/20 15:20:44 mgreess $";
 
 $ *************************************<+>*************************************
@@ -487,7 +486,7 @@ $ Messages 1, 3, 5, 7, 9, 11, 13, 15, 17 and 19 are not used.
 $ Messages 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 to 29, 31, 33 to 38, 66-68,
 $          go to an errorlog and do NOT need to be localized.
 $ Messages 30 and 39-47 are not used.
-$ Only messages 32, 48-57 and 59 need to be localized.
+$ Only messages 32, 48-57, 59 and 70 need to be localized.
 
 $    This message goes to an error file.
 $ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
@@ -629,6 +628,9 @@ $ YOU DON'T NEED TO LOCALIZE MESSAGES 66 TO 68.
 67 Key bindings %s not found, using builtin key bindings\n
 68 Button bindings %s not found, using builtin button bindings\n
 
+$    This item renames the title of a window
+70 Cambiare\\ nome\\.\\.\\. _a  f.rename
+
 $set 70
 $    THIS COMMENT FOR DTWM TEAM ONLY -- WmWinInfo.c --
 $    This entire set is written to an error file.
@@ -784,6 +786,11 @@ $ Messages 5 and 6 are old. They are replaced by messaged 8 and 9.
 8 Esiste già un'icona con il nome specificato.
 9 Gestione dello spazio di lavoro - Errore nell'azione sull'icona
 
+$set 88
+$    THIS COMMENT FOR DTWM TEAM ONLY -- WmInstantTitle.c --
+$    This message goes to an error file.
+$ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
+1 Unable to create instant title dialog.
 
 $set 99
 $    DO NOT TRANSLATE THESE MESSAGES
@@ -793,4 +800,3 @@ $    These messages are used for the version information.
 $quote "
 1 "@(#)version_goes_here"
 2 "\n@(#)_DtMessage catalog source $TOG: dtwm.msg /main/6 1999/09/20 15:20:44 mgreess $"
-

+ 3 - 0
cde/programs/localized/ja_JP.UTF-8/app-defaults/Dtwm.tmsg

@@ -88,3 +88,6 @@ $ Dtwm*FrontPanel*lowResFontList
 19 -dt-interface system-medium-r-normal-xs*-*-*-*-*-*-*-*-*:
 $ Dtwm*icon*fontList
 20 -dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-*:
+
+$ Dtwm*instantTitleDialogShell.title
+21 名前の変更

+ 9 - 3
cde/programs/localized/ja_JP.UTF-8/msg/dtwm.msg

@@ -1,4 +1,3 @@
-
 $ "$TOG: dtwm.msg /main/7 1999/09/20 15:21:12 mgreess $";
 
 $ *************************************<+>*************************************
@@ -485,7 +484,7 @@ $ Messages 1, 3, 5, 7, 9, 11, 13, 15, 17 and 19 are not used.
 $ Messages 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 to 29, 31, 33 to 38, 66-68,
 $          go to an errorlog and do NOT need to be localized.
 $ Messages 30 and 39-47 are not used.
-$ Only messages 32, 48-57 and 59 need to be localized.
+$ Only messages 32, 48-57, 59 and 70 need to be localized.
 
 $    This message goes to an error file.
 $ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
@@ -627,6 +626,9 @@ $ YOU DON'T NEED TO LOCALIZE MESSAGES 66 TO 68.
 67 Key bindings %s not found, using builtin key bindings\n
 68 Button bindings %s not found, using builtin button bindings\n
 
+$    This item renames the title of a window
+70 名前の変更\\.\\.\\. _a  f.rename
+
 $set 70
 $    THIS COMMENT FOR DTWM TEAM ONLY -- WmWinInfo.c --
 $    This entire set is written to an error file.
@@ -783,6 +785,11 @@ $ Messages 5 and 6 are old. They are replaced by messaged 8 and 9.
 8 この名前のアイコンがすでに存在します。
 9 ワークスペース・マネージャ - アイコン・アクション・エラー
 
+$set 88
+$    THIS COMMENT FOR DTWM TEAM ONLY -- WmInstantTitle.c --
+$    This message goes to an error file.
+$ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
+1 Unable to create instant title dialog.
 
 $set 99
 $    DO NOT TRANSLATE THESE MESSAGES
@@ -792,4 +799,3 @@ $    These messages are used for the version information.
 $quote "
 1 "@(#)version_goes_here"
 2 "\n@(#)_DtMessage catalog source $TOG: dtwm.msg /main/7 1999/09/20 15:21:12 mgreess $"
-

+ 3 - 0
cde/programs/localized/ko_KR.UTF-8/app-defaults/Dtwm.tmsg

@@ -96,3 +96,6 @@ $ 19 -hp-batang-medium-r-normal--16-*-c-*:
 $ Dtwm*icon*fontList
 $ 20 -hp-batang-medium-r-normal--16-*-c-*:
 20 -dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-*:
+
+$ Dtwm*instantTitleDialogShell.title
+21 이름 바꾸기

+ 9 - 2
cde/programs/localized/ko_KR.UTF-8/msg/dtwm.msg

@@ -1,4 +1,3 @@
-
 $ "$XConsortium: dtwm.msg /main/3 1995/11/08 13:19:16 rswiston $";
 
 $ *************************************<+>*************************************
@@ -462,6 +461,7 @@ $ Messages 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 to 29, 31, 33 to 38, 66-68,
 $          go to an errorlog and do NOT need to be localized.
 $ Messages 30 and 39-47 are not used.
 $ Only messages 32, 48-57 and 59 need to be localized.
+$ Only messages 32, 48-57, 59 and 70 need to be localized.
 
 $    This message goes to an error file.
 $ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
@@ -603,6 +603,9 @@ $ YOU DON'T NEED TO LOCALIZE MESSAGES 66 TO 68.
 67 키 묶기 %s을(를) 찾을 수 없습니다. 내장된 키 묶기를 사용합니다.
 68 단추 묶기 %s을(를) 찾을 수 없습니다. 내장된 단추 묶기를 사용합니다.
 
+$    This item renames the title of a window
+70 이름\\ 바꾸기\\.\\.\\. _a  f.rename
+
 $set 70
 $    THIS COMMENT FOR DTWM TEAM ONLY -- WmWinInfo.c --
 $    This entire set is written to an error file.
@@ -758,6 +761,11 @@ $ Messages 5 and 6 are old. They are replaced by messaged 8 and 9.
 8 이 이름의 아이콘이 이미 있습니다.
 9 작업장 관리자 - 아이콘 활동 오류
 
+$set 88
+$    THIS COMMENT FOR DTWM TEAM ONLY -- WmInstantTitle.c --
+$    This message goes to an error file.
+$ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
+1 Unable to create instant title dialog.
 
 $set 99
 $    DO NOT TRANSLATE THESE MESSAGES
@@ -767,4 +775,3 @@ $    These messages are used for the version information.
 $quote "
 1 "@(#)version_goes_here"
 2 "\n@(#)_DtMessage catalog source $XConsortium: dtwm.msg /main/3 1995/11/08 13:19:16 rswiston $"
-

+ 3 - 0
cde/programs/localized/sv_SE.UTF-8/app-defaults/Dtwm.tmsg

@@ -88,3 +88,6 @@ $ Dtwm*FrontPanel*lowResFontList
 19 -dt-interface system-medium-r-normal-xs*-*-*-*-*-*-*-*-*:
 $ Dtwm*icon*fontList
 20 -dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-*:
+
+$ Dtwm*instantTitleDialogShell.title
+21 Byt namn

+ 9 - 3
cde/programs/localized/sv_SE.UTF-8/msg/dtwm.msg

@@ -1,4 +1,3 @@
-
 $ "$XConsortium: dtwm.msg /main/4 1995/12/08 09:39:59 rswiston $";
 
 $ *************************************<+>*************************************
@@ -462,7 +461,7 @@ $ Messages 1, 3, 5, 7, 9, 11, 13, 15, 17 and 19 are not used.
 $ Messages 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 to 29, 31, 33 to 38, 66-68,
 $          go to an errorlog and do NOT need to be localized.
 $ Messages 30 and 39-47 are not used.
-$ Only messages 32, 48-57 and 59 need to be localized.
+$ Only messages 32, 48-57, 59 and 70 need to be localized.
 
 $    This message goes to an error file.
 $ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
@@ -604,6 +603,9 @@ $ YOU DON'T NEED TO LOCALIZE MESSAGES 66 TO 68.
 67 Key bindings %s not found, using builtin key bindings\n
 68 Button bindings %s not found, using builtin button bindings\n
 
+$    This item renames the title of a window
+70 Byt\\ namn\\.\\.\\. _a  f.rename
+
 $set 70
 $    THIS COMMENT FOR DTWM TEAM ONLY -- WmWinInfo.c --
 $    This entire set is written to an error file.
@@ -759,6 +761,11 @@ $ Messages 5 and 6 are old. They are replaced by messaged 8 and 9.
 8 Det finns redan en ikon med detta namn.
 9 Arbetsytehanterare - fel vid ikonfunktion
 
+$set 88
+$    THIS COMMENT FOR DTWM TEAM ONLY -- WmInstantTitle.c --
+$    This message goes to an error file.
+$ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
+1 Unable to create instant title dialog.
 
 $set 99
 $    DO NOT TRANSLATE THESE MESSAGES
@@ -768,4 +775,3 @@ $    These messages are used for the version information.
 $quote "
 1 "@(#)version_goes_here"
 2 "\n@(#)_DtMessage catalog source $XConsortium: dtwm.msg /main/4 1995/12/08 09:39:59 rswiston $"
-

+ 3 - 0
cde/programs/localized/zh_CN.UTF-8/app-defaults/Dtwm.tmsg

@@ -88,3 +88,6 @@ $ Dtwm*FrontPanel*lowResFontList
 19 -dt-interface system-medium-r-normal-xs*-*-*-*-*-*-*-*-*:
 $ Dtwm*icon*fontList
 20 -dt-interface system-medium-r-normal-s*-*-*-*-*-*-*-*-*:
+
+$ Dtwm*instantTitleDialogShell.title
+21 换名

+ 9 - 3
cde/programs/localized/zh_CN.UTF-8/msg/dtwm.msg

@@ -1,4 +1,3 @@
-
 $ "$XConsortium: dtwm.msg /main/3 1995/11/08 13:53:27 rswiston $";
 
 $ *************************************<+>*************************************
@@ -463,7 +462,7 @@ $ Messages 1, 3, 5, 7, 9, 11, 13, 15, 17 and 19 are not used.
 $ Messages 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 to 29, 31, 33 to 38, 66-68,
 $          go to an errorlog and do NOT need to be localized.
 $ Messages 30 and 39-47 are not used.
-$ Only messages 32, 48-57 and 59 need to be localized.
+$ Only messages 32, 48-57, 59 and 70 need to be localized.
 
 $    This message goes to an error file.
 $ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
@@ -604,6 +603,9 @@ $ YOU DON'T NEED TO LOCALIZE MESSAGES 66 TO 68.
 67 Key bindings %s not found, using builtin key bindings\n
 68 Button bindings %s not found, using builtin button bindings\n
 
+$    This item renames the title of a window
+70 换名\\.\\.\\. _a  f.rename
+
 $set 70
 $    THIS COMMENT FOR DTWM TEAM ONLY -- WmWinInfo.c --
 $    This entire set is written to an error file.
@@ -760,6 +762,11 @@ $ Messages 5 and 6 are old. They are replaced by messaged 8 and 9.
 8 已经有一个此名字的图标了。
 9 工作空间管理程序 - 图标动作出错
 
+$set 88
+$    THIS COMMENT FOR DTWM TEAM ONLY -- WmInstantTitle.c --
+$    This message goes to an error file.
+$ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
+1 Unable to create instant title dialog.
 
 $set 99
 $    DO NOT TRANSLATE THESE MESSAGES
@@ -769,4 +776,3 @@ $    These messages are used for the version information.
 $quote "
 1 "@(#)version_goes_here"
 2 "\n@(#)_DtMessage catalog source $XConsortium: dtwm.msg /main/3 1995/11/08 13:53:27 rswiston $"
-

+ 3 - 0
cde/programs/localized/zh_TW.UTF-8/app-defaults/Dtwm.tmsg

@@ -88,3 +88,6 @@ $ Dtwm*FrontPanel*lowResFontList
 19 -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:
 $ Dtwm*icon*fontList
 20 -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*:
+
+$ Dtwm*instantTitleDialogShell.title
+21 改名

+ 9 - 3
cde/programs/localized/zh_TW.UTF-8/msg/dtwm.msg

@@ -1,4 +1,3 @@
-
 $ "$XConsortium: dtwm.msg /main/3 1995/11/08 14:09:06 rswiston $";
 
 $ *************************************<+>*************************************
@@ -462,7 +461,7 @@ $ Messages 1, 3, 5, 7, 9, 11, 13, 15, 17 and 19 are not used.
 $ Messages 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 to 29, 31, 33 to 38, 66-68,
 $          go to an errorlog and do NOT need to be localized.
 $ Messages 30 and 39-47 are not used.
-$ Only messages 32, 48-57 and 59 need to be localized.
+$ Only messages 32, 48-57, 59 and 70 need to be localized.
 
 $    This message goes to an error file.
 $ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
@@ -604,6 +603,9 @@ $ YOU DON'T NEED TO LOCALIZE MESSAGES 66 TO 68.
 67 Key bindings %s not found, using builtin key bindings\n
 68 Button bindings %s not found, using builtin button bindings\n
 
+$    This item renames the title of a window
+70 改名\\.\\.\\. _a  f.rename
+
 $set 70
 $    THIS COMMENT FOR DTWM TEAM ONLY -- WmWinInfo.c --
 $    This entire set is written to an error file.
@@ -759,6 +761,11 @@ $ Messages 5 and 6 are old. They are replaced by messaged 8 and 9.
 8 已有圖像使用該名稱。
 9 工作空間管理者 - 圖像動作錯誤
 
+$set 88
+$    THIS COMMENT FOR DTWM TEAM ONLY -- WmInstantTitle.c --
+$    This message goes to an error file.
+$ YOU DON'T NEED TO LOCALIZE THIS MESSAGE.
+1 Unable to create instant title dialog.
 
 $set 99
 $    DO NOT TRANSLATE THESE MESSAGES
@@ -768,4 +775,3 @@ $    These messages are used for the version information.
 $quote "
 1 "@(#)version_goes_here"
 2 "\n@(#)_DtMessage catalog source $XConsortium: dtwm.msg /main/3 1995/11/08 14:09:06 rswiston $"
-