makefile_bertw: always compile with -g
[nedit-bw.git] / release-client.patch
blob1d2a533b76bdda21cbc0cad5341ec28004a241ae
1 ---
3 source/built-ins.h | 1 +
4 source/highlightData.c | 4 ++--
5 source/macro.c | 15 +++++++++++++++
6 source/menu.c | 31 ++++++++++++++++++++++++++++++-
7 source/nc.c | 13 +++++++------
8 source/nedit.h | 1 +
9 source/server.c | 19 +++++++++++--------
10 source/server_common.c | 5 ++---
11 source/server_common.h | 3 +--
12 source/window.c | 22 +++++++++++++++-------
13 source/windowTitle.c | 11 +++++++++++
14 source/windowTitle.h | 1 +
15 12 files changed, 97 insertions(+), 29 deletions(-)
17 diff --quilt old/source/menu.c new/source/menu.c
18 --- old/source/menu.c
19 +++ new/source/menu.c
20 @@ -56,6 +56,7 @@ static const char CVSID[] = "$Id: menu.c
21 #include "regularExp.h"
22 #include "hooks.h"
23 #include "tabDragDrop.h"
24 +#include "server.h"
25 #include "../util/getfiles.h"
26 #include "../util/DialogF.h"
27 #include "../util/misc.h"
28 @@ -440,6 +441,8 @@ static void setFontsAP(Widget w, XEvent
29 Cardinal *nArgs);
30 static void setLanguageModeAP(Widget w, XEvent *event, String *args,
31 Cardinal *nArgs);
32 +static void releaseClientAP(Widget w, XEvent *event, String *args,
33 + Cardinal *nArgs);
34 #ifdef SGI_CUSTOM
35 static void shortMenusCB(Widget w, WindowInfo *window, caddr_t callData);
36 static void addToToggleShortList(Widget w);
37 @@ -608,7 +611,8 @@ static XtActionsRec Actions[] = {
38 {"set_use_tabs", setUseTabsAP},
39 {"set_fonts", setFontsAP},
40 {"begin_tab_drag", beginTabDragAP},
41 - {"set_language_mode", setLanguageModeAP}
42 + {"set_language_mode", setLanguageModeAP},
43 + {"release_client", releaseClientAP}
46 /* List of previously opened files for File menu */
47 @@ -1302,6 +1306,12 @@ Widget CreateMenuBar(Widget parent, Wind
48 btn = createMenuSeparator(menuPane, "sep1", SHORT);
49 XtVaSetValues(btn, XmNuserData, PERMANENT_MENU_ITEM, NULL);
51 + window->releaseClientItem = createMenuItem(menuPane, "releaseClient",
52 + "Release Client", 'R', doActionCB, "release_client", SHORT);
53 + XtSetSensitive(window->releaseClientItem, False);
54 + btn = createMenuSeparator(menuPane, "sep2", SHORT);
55 + XtVaSetValues(btn, XmNuserData, PERMANENT_MENU_ITEM, NULL);
57 /*
58 ** Create "Help" pull down menu.
60 @@ -4557,6 +4567,25 @@ static void setLanguageModeAP(Widget w,
64 +static void releaseClientAP(Widget w, XEvent *event, String *args,
65 + Cardinal *nArgs)
67 + WindowInfo *window = WidgetToWindow(w);
69 + if (*nArgs != 0) {
70 + fprintf(stderr, "nedit: invalid number of arguments for release_client\n");
71 + return;
72 + }
74 + if (!IsServer)
75 + return;
77 + DeleteFileClosedProperty(window);
78 + XtSetSensitive(window->releaseClientItem, window->fileClosedAtom != None);
79 + UpdateWindowTitle(window);
80 + RefreshTabState(window);
84 ** Same as AddSubMenu from libNUtil.a but 1) mnemonic is optional (NEdit
85 ** users like to be able to re-arrange the mnemonics so they can set Alt
86 diff --quilt old/source/nedit.h new/source/nedit.h
87 --- old/source/nedit.h
88 +++ new/source/nedit.h
89 @@ -455,6 +455,7 @@ typedef struct _WindowInfo {
90 Widget closePaneItem;
91 Widget detachDocumentItem;
92 Widget moveDocumentItem;
93 + Widget releaseClientItem;
94 Widget contextMoveDocumentItem;
95 Widget contextDetachDocumentItem;
96 Widget bgMenuUndoItem;
97 diff --quilt old/source/server.c new/source/server.c
98 --- old/source/server.c
99 +++ new/source/server.c
100 @@ -250,9 +250,7 @@ static Atom findFileClosedProperty(const
102 if (!IsServer) return(None);
104 - atom = CreateServerFileClosedAtom(GetPrefServerName(),
105 - fullname,
106 - True); /* don't create */
107 + atom = CreateServerFileClosedAtom(GetPrefServerName(), fullname);
108 return(atom);
111 @@ -262,6 +260,9 @@ static void getFileClosedProperty(Window
112 if (window->filenameSet) {
113 window->fileClosedAtom = findFileClosedProperty(fullname);
115 + XtSetSensitive(window->releaseClientItem, window->fileClosedAtom != None);
116 + UpdateWindowTitle(window);
117 + RefreshTabState(window);
120 /* Delete the 'FileClosed' atom to inform nc that this file has
121 @@ -335,6 +336,7 @@ static void processServerCommandString(c
122 int editFlags, stringLen = strlen(string);
123 int lineNum, createFlag, readFlag, iconicFlag, lastIconic = 0, tabbed = -1;
124 int fileLen, doLen, lmLen, geomLen, charsRead, itemsRead;
125 + int clientWaits;
126 WindowInfo *window, *lastFile = NULL;
127 long currentDesktop = QueryCurrentDesktop(TheDisplay,
128 RootWindow(TheDisplay, DefaultScreen(TheDisplay)));
129 @@ -375,10 +377,10 @@ static void processServerCommandString(c
130 command both followed by newlines. This bit of code reads the
131 header, and converts the newlines following the filename and do
132 command to nulls to terminate the filename and doCommand strings */
133 - itemsRead = sscanf(inPtr, "%d %d %d %d %d %d %d %d %d%n", &lineNum,
134 - &readFlag, &createFlag, &iconicFlag, &tabbed, &fileLen,
135 - &doLen, &lmLen, &geomLen, &charsRead);
136 - if (itemsRead != 9)
137 + itemsRead = sscanf(inPtr, "%d %d %d %d %d %d %d %d %d %d%n", &lineNum,
138 + &readFlag, &createFlag, &iconicFlag, &tabbed, &clientWaits,
139 + &fileLen, &doLen, &lmLen, &geomLen, &charsRead);
140 + if (itemsRead != 10)
141 goto readError;
142 inPtr += charsRead + 1;
143 if (fileLen >= 0 && inPtr - string + fileLen > stringLen)
144 @@ -505,7 +507,8 @@ static void processServerCommandString(c
145 command can do anything, including closing the window!) */
146 if (window != NULL) {
147 deleteFileOpenProperty(window, requestname);
148 - getFileClosedProperty(window, requestname);
149 + if (clientWaits)
150 + getFileClosedProperty(window, requestname);
152 if (lineNum > 0)
153 SelectNumberedLine(window, lineNum);
154 diff --quilt old/source/window.c new/source/window.c
155 --- old/source/window.c
156 +++ new/source/window.c
157 @@ -2163,16 +2163,19 @@ void UpdateWindowTitle(const WindowInfo
158 window->lockReasons,
159 window->fileChanged,
160 window->transient,
161 + window->fileClosedAtom != None,
162 format);
164 if (strcmp(title, format) == 0)
165 filename = title;
167 - iconTitle = XtMalloc(strlen(filename) + 2); /* strlen("*")+1 */
168 + iconTitle = XtMalloc(strlen(filename) + 3); /* strlen("*?")+1 */
170 strcpy(iconTitle, filename);
171 if (window->fileChanged && !window->transient)
172 strcat(iconTitle, "*");
173 + if (window->fileClosedAtom != None)
174 + strcat(iconTitle, "?");
175 XtVaSetValues(window->shell, XmNtitle, title, XmNiconName, iconTitle, NULL);
177 /* If there's a find or replace dialog up in "Keep Up" mode, with a
178 @@ -3791,22 +3794,23 @@ int getTabPosition(Widget tab)
179 void RefreshTabState(WindowInfo *win)
181 XmString s1, tipString;
182 - char labelString[MAXPATHLEN];
183 + char labelString[MAXPATHLEN+3];
184 char *tag = XmFONTLIST_DEFAULT_TAG;
185 unsigned char alignment;
186 - const char *star = (win->fileChanged && !win->transient) ? "*" : "";
187 + const char *changed = (win->fileChanged && !win->transient) ? "*" : "";
188 + const char *waiting = (win->fileClosedAtom != None) ? "?" : "";
190 /* Set tab label to document's filename. Position of
191 "*" (modified) will change per label alignment setting */
192 XtVaGetValues(win->tab, XmNalignment, &alignment, NULL);
193 if (alignment != XmALIGNMENT_END) {
194 - sprintf(labelString, "%s%s",
195 - star,
196 + sprintf(labelString, "%s%s%s",
197 + waiting, changed,
198 win->filename);
199 } else {
200 - sprintf(labelString, "%s%s",
201 + sprintf(labelString, "%s%s%s",
202 win->filename,
203 - star);
204 + changed, waiting);
207 /* Make the top document stand out a little more */
208 @@ -3969,6 +3973,10 @@ void RefreshMenuToggleStates(WindowInfo
209 if (win->shell != window->shell)
210 break;
211 XtSetSensitive(window->moveDocumentItem, win != NULL);
213 + if (IsServer)
214 + XtSetSensitive(window->releaseClientItem,
215 + window->fileClosedAtom != None);
219 diff --quilt old/source/built-ins.h new/source/built-ins.h
220 --- old/source/built-ins.h
221 +++ new/source/built-ins.h
222 @@ -134,3 +134,4 @@ MV(VERSION, version)
223 MV(NEDIT_HOME, neditHome)
224 MV(transient, transient)
225 MV(macro_backtrace, macroBacktrace)
226 +MV(client_attached, clientAttached)
227 diff --quilt old/source/highlightData.c new/source/highlightData.c
228 --- old/source/highlightData.c
229 +++ new/source/highlightData.c
230 @@ -554,8 +554,8 @@ static char *DefaultPatternSets[] = {
231 Built-in Misc Vars:\"(?<!\\Y)\\$(?:active_pane|calltip_ID|column|cursor|display_width|empty_array|file_name|file_path|language_mode|line|locked|max_font_width|min_font_width|modified|n_display_lines|n_panes|rangeset_list|read_only|selection_(?:start|end|left|right)|server_name|text_length|top_line|transient|VERSION|NEDIT_HOME)>\":::Identifier::\n\
232 Built-in Pref Vars:\"(?<!\\Y)\\$(?:auto_indent|em_tab_dist|file_format|font_name|font_name_bold|font_name_bold_italic|font_name_italic|highlight_syntax|incremental_backup|incremental_search_line|make_backup_copy|match_syntax_based|overtype_mode|show_line_numbers|show_matching|statistics_line|tab_dist|use_tabs|wrap_margin|wrap_text)>\":::Identifier2::\n\
233 Built-in Special Vars:\"(?<!\\Y)\\$(?:args|[1-9]|list_dialog_button|macro_name|n_args|read_status|search_end|shell_cmd_status|string_dialog_button|sub_sep|macro_backtrace)>\":::String1::\n\
234 - Built-in Subrs:\"<(?:args|append_file|beep|call|calltip|clipboard_to_string|define|dialog|eval|filename_dialog|dict_(?:insert|complete|save|append|is_element)|e_print|escape_literal|focus_window|get_character|get_matching|get_pattern_(by_name|at_pos)|get_range|get_selection|get_style_(by_name|at_pos)|getenv|highlight_calltip_line|kill_calltip|length|list_dialog|max|min|n_args|rangeset_(?:add|create|destroy|get_by_name|includes|info|invert|range|set_color|set_mode|set_name|subtract)|read_file|replace_in_string|replace_range|replace_selection|replace_substring|search|search_string|select|select_rectangle|set_cursor_pos|set_transient|set_window_title|shell_command|split|string_compare|string_dialog|string_to_clipboard|substring|t_print|timer_(?:add|remove)|to_(?:column|line|pos)|tolower|toupper|valid_number|write_file)(?=\\s*\\()\":::Subroutine::\n\
235 - Menu Actions:\"<(?:new(?:_tab|_opposite)?|open|open-dialog|open_dialog|open-selected|open_selected|close|save|save-as|save_as|save-as-dialog|save_as_dialog|revert-to-saved|revert_to_saved|revert_to_saved_dialog|include-file|include_file|include-file-dialog|include_file_dialog|load-macro-file|load_macro_file|load-macro-file-dialog|load_macro_file_dialog|load-tags-file|load_tags_file|load-tags-file-dialog|load_tags_file_dialog|unload_tags_file|load_tips_file|load_tips_file_dialog|unload_tips_file|print|print-selection|print_selection|exit|undo|redo|delete|select-all|select_all|shift-left|shift_left|shift-left-by-tab|shift_left_by_tab|shift-right|shift_right|shift-right-by-tab|shift_right_by_tab|find|find-dialog|find_dialog|find-again|find_again|find-selection|find_selection|find_incremental|start_incremental_find|replace|replace-dialog|replace_dialog|replace-all|replace_all|replace-in-selection|replace_in_selection|replace-again|replace_again|replace_find|replace_find_same|replace_find_again|goto-line-number|goto_line_number|goto-line-number-dialog|goto_line_number_dialog|goto-selected|goto_selected|mark|mark-dialog|mark_dialog|goto-mark|goto_mark|goto-mark-dialog|goto_mark_dialog|match|select_to_matching|goto_matching|find-definition|find_definition|show_tip|split-pane|split_pane|close-pane|close_pane|detach_document(?:_dialog)?|move_document_dialog|(?:next|previous|last)_document|uppercase|lowercase|fill-paragraph|fill_paragraph|control-code-dialog|control_code_dialog|filter-selection-dialog|filter_selection_dialog|filter-selection|filter_selection|execute-command|execute_command|execute-command-dialog|execute_command_dialog|execute-command-line|execute_command_line|shell-menu-command|shell_menu_command|macro-menu-command|macro_menu_command|bg_menu_command|post_window_bg_menu|post_tab_context_menu|beginning-of-selection|beginning_of_selection|end-of-selection|end_of_selection|repeat_macro|repeat_dialog|raise_window|focus_pane|set_statistics_line|set_incremental_search_line|set_show_line_numbers|set_auto_indent|set_wrap_text|set_wrap_margin|set_highlight_syntax|set_make_backup_copy|set_incremental_backup|set_show_matching|set_match_syntax_based|set_overtype_mode|set_locked|set_tab_dist|set_em_tab_dist|set_use_tabs|set_fonts|set_language_mode)(?=\\s*\\()\":::Subroutine::\n\
236 + Built-in Subrs:\"<(?:args|append_file|beep|call|calltip|client_attached|clipboard_to_string|define|dialog|eval|filename_dialog|dict_(?:insert|complete|save|append|is_element)|e_print|escape_literal|focus_window|get_character|get_matching|get_pattern_(by_name|at_pos)|get_range|get_selection|get_style_(by_name|at_pos)|getenv|highlight_calltip_line|kill_calltip|length|list_dialog|max|min|n_args|rangeset_(?:add|create|destroy|get_by_name|includes|info|invert|range|set_color|set_mode|set_name|subtract)|read_file|replace_in_string|replace_range|replace_selection|replace_substring|search|search_string|select|select_rectangle|set_cursor_pos|set_transient|set_window_title|shell_command|split|string_compare|string_dialog|string_to_clipboard|substring|t_print|timer_(?:add|remove)|to_(?:column|line|pos)|tolower|toupper|valid_number|write_file)(?=\\s*\\()\":::Subroutine::\n\
237 + Menu Actions:\"<(?:new(?:_tab|_opposite)?|open|open-dialog|open_dialog|open-selected|open_selected|close|save|save-as|save_as|save-as-dialog|save_as_dialog|revert-to-saved|revert_to_saved|revert_to_saved_dialog|include-file|include_file|include-file-dialog|include_file_dialog|load-macro-file|load_macro_file|load-macro-file-dialog|load_macro_file_dialog|load-tags-file|load_tags_file|load-tags-file-dialog|load_tags_file_dialog|unload_tags_file|load_tips_file|load_tips_file_dialog|unload_tips_file|print|print-selection|print_selection|exit|undo|redo|delete|select-all|select_all|shift-left|shift_left|shift-left-by-tab|shift_left_by_tab|shift-right|shift_right|shift-right-by-tab|shift_right_by_tab|find|find-dialog|find_dialog|find-again|find_again|find-selection|find_selection|find_incremental|start_incremental_find|replace|replace-dialog|replace_dialog|replace-all|replace_all|replace-in-selection|replace_in_selection|replace-again|replace_again|replace_find|replace_find_same|replace_find_again|goto-line-number|goto_line_number|goto-line-number-dialog|goto_line_number_dialog|goto-selected|goto_selected|mark|mark-dialog|mark_dialog|goto-mark|goto_mark|goto-mark-dialog|goto_mark_dialog|match|select_to_matching|goto_matching|find-definition|find_definition|show_tip|split-pane|split_pane|close-pane|close_pane|detach_document(?:_dialog)?|move_document_dialog|(?:next|previous|last)_document|uppercase|lowercase|fill-paragraph|fill_paragraph|control-code-dialog|control_code_dialog|filter-selection-dialog|filter_selection_dialog|filter-selection|filter_selection|execute-command|execute_command|execute-command-dialog|execute_command_dialog|execute-command-line|execute_command_line|shell-menu-command|shell_menu_command|macro-menu-command|macro_menu_command|bg_menu_command|post_window_bg_menu|post_tab_context_menu|beginning-of-selection|beginning_of_selection|end-of-selection|end_of_selection|repeat_macro|repeat_dialog|raise_window|focus_pane|set_statistics_line|set_incremental_search_line|set_show_line_numbers|set_auto_indent|set_wrap_text|set_wrap_margin|set_highlight_syntax|set_make_backup_copy|set_incremental_backup|set_show_matching|set_match_syntax_based|set_overtype_mode|set_locked|set_tab_dist|set_em_tab_dist|set_use_tabs|set_fonts|set_language_mode|release_client)(?=\\s*\\()\":::Subroutine::\n\
238 Text Actions:\"<(?:self-insert|self_insert|grab-focus|grab_focus|extend-adjust|extend_adjust|extend-start|extend_start|extend-end|extend_end|secondary-adjust|secondary_adjust|secondary-or-drag-adjust|secondary_or_drag_adjust|secondary-start|secondary_start|secondary-or-drag-start|secondary_or_drag_start|process-bdrag|process_bdrag|move-destination|move_destination|move-to|move_to|move-to-or-end-drag|move_to_or_end_drag|end_drag|copy-to|copy_to|copy-to-or-end-drag|copy_to_or_end_drag|exchange|process-cancel|process_cancel|paste-clipboard|paste_clipboard|copy-clipboard|copy_clipboard|cut-clipboard|cut_clipboard|copy-primary|copy_primary|cut-primary|cut_primary|newline|newline-and-indent|newline_and_indent|newline-no-indent|newline_no_indent|delete-selection|delete_selection|delete-previous-character|delete_previous_character|delete-next-character|delete_next_character|delete-previous-word|delete_previous_word|delete-next-word|delete_next_word|delete-to-start-of-line|delete_to_start_of_line|delete-to-end-of-line|delete_to_end_of_line|forward-character|forward_character|backward-character|backward_character|key-select|key_select|process-up|process_up|process-down|process_down|process-shift-up|process_shift_up|process-shift-down|process_shift_down|process-home|process_home|forward-word|forward_word|backward-word|backward_word|forward-paragraph|forward_paragraph|backward-paragraph|backward_paragraph|beginning-of-line|beginning_of_line|end-of-line|end_of_line|beginning-of-file|beginning_of_file|end-of-file|end_of_file|next-page|next_page|previous-page|previous_page|page-left|page_left|page-right|page_right|toggle-overstrike|toggle_overstrike|scroll-up|scroll_up|scroll-down|scroll_down|scroll_left|scroll_right|scroll-to-line|scroll_to_line|select-all|select_all|select_word|deselect-all|deselect_all|focusIn|focusOut|process-return|process_return|process-tab|process_tab|insert-string|insert_string|mouse_pan)(?=\\s*\\()\":::Subroutine::\n\
239 Macro Hooks:\"<(?:(?:pre|post)_(?:open|save)|cursor_moved|modified|(?:losing_)?focus|language_mode)_hook(?=\\s*\\()\":::Subroutine1::\n\
240 Keyword:\"<(?:break|case|continue|default|define|delete|do|else|finally|for|if|in|readonly|return|switch|typeof|while)>\":::Keyword::\n\
241 diff --quilt old/source/macro.c new/source/macro.c
242 --- old/source/macro.c
243 +++ new/source/macro.c
244 @@ -7216,6 +7216,21 @@ static int macroBacktraceMV(WindowInfo *
245 return GetBacktrace(result, errMsg);
248 +static int clientAttachedMV(WindowInfo *window, DataValue *argList,
249 + int nArgs, DataValue *result, char **errMsg)
251 + result->tag = INT_TAG;
252 + result->val.n = 0;
254 + /* if we don't run in server mode, return always false */
255 + if (!IsServer)
256 + return True;
258 + result->val.n = window->fileClosedAtom != None;
260 + return True;
263 static int wrongNArgsErr(char **errMsg)
265 *errMsg = "Wrong number of arguments to function %s";
266 diff --quilt old/source/nc.c new/source/nc.c
267 --- old/source/nc.c
268 +++ new/source/nc.c
269 @@ -227,8 +227,7 @@ static void createWaitProperties(void)
270 fileListHead.waitForCloseCount++;
271 item->waitForFileClosedAtom =
272 CreateServerFileClosedAtom(Preferences.serverName,
273 - item->path,
274 - False);
275 + item->path);
276 setPropertyValue(item->waitForFileClosedAtom);
279 @@ -781,9 +780,10 @@ static void parseCommandLine(int argc, c
282 /* See below for casts */
283 - sprintf(outPtr, "%d %d %d %d %d %ld %ld %ld %ld\n"
284 + sprintf(outPtr, "%d %d %d %d %d %d %ld %ld %ld %ld\n"
285 "%s%s\n%s\n%s\n%s\n%n",
286 lineNum, read, create, iconic, tabbed,
287 + !!Preferences.waitForClose,
288 filePrefixLen + (long) strlen(path),
289 (long) strlen(toDoCommand), (long) strlen(langMode),
290 (long) strlen(geometry),
291 @@ -826,8 +826,8 @@ static void parseCommandLine(int argc, c
292 The "long" cast on strlen() is necessary because size_t
293 is 64 bit on Alphas, and 32-bit on most others. There is
294 no printf format specifier for "size_t", thanx, ANSI. */
295 - sprintf(outPtr, "%d %d %d %d %d %ld %ld %ld %ld\n%n", lineNum,
296 - read, create, iconic, isTabbed,
297 + sprintf(outPtr, "%d %d %d %d %d %d %ld %ld %ld %ld\n%n", lineNum,
298 + read, create, iconic, isTabbed, !!Preferences.waitForClose,
299 filePrefixLen + (long) strlen(path),
300 (long) strlen(toDoCommand), (long) strlen(langMode),
301 (long) strlen(geometry), &charsWritten);
302 @@ -891,7 +891,7 @@ static void parseCommandLine(int argc, c
303 /* TODO: what about other platforms? */
304 #endif /* VMS */
306 - sprintf(outPtr, "0 0 %d %d %d %ld %ld %ld %ld\n%n",
307 + sprintf(outPtr, "0 0 %d %d %d 0 %ld %ld %ld %ld\n%n",
308 doInNew, iconic, tabbed, -(filePrefixLen + length),
309 (long) strlen(toDoCommand), (long) strlen(langMode),
310 (long) strlen(geometry), &charsWritten);
311 @@ -1093,3 +1093,4 @@ static void printNcVersion(void ) {
312 COMPILE_OS, COMPILE_MACHINE, COMPILE_COMPILER,
313 __DATE__, __TIME__);
316 diff --quilt old/source/windowTitle.c new/source/windowTitle.c
317 --- old/source/windowTitle.c
318 +++ new/source/windowTitle.c
319 @@ -193,6 +193,7 @@ static void compressWindowTitle(char *ti
321 /* remove empty paranthesis pairs */
322 case '(':
323 + sourcePtr = removeSequence(sourcePtr, ' ');
324 if (*sourcePtr == ')') {
325 modified = True;
326 sourcePtr++;
327 @@ -202,6 +203,7 @@ static void compressWindowTitle(char *ti
328 break;
330 case '[':
331 + sourcePtr = removeSequence(sourcePtr, ' ');
332 if (*sourcePtr == ']') {
333 modified = True;
334 sourcePtr++;
335 @@ -211,6 +213,7 @@ static void compressWindowTitle(char *ti
336 break;
338 case '{':
339 + sourcePtr = removeSequence(sourcePtr, ' ');
340 if (*sourcePtr == '}') {
341 modified = True;
342 sourcePtr++;
343 @@ -250,6 +253,7 @@ static void compressWindowTitle(char *ti
344 of leading hosts components to dispaly.
345 ** %S : file status
346 ** %u : user name
347 +** %w : "waiting" if a client is waiting for the closure of this document
349 ** if the ClearCase view tag and server name are identical, only the first one
350 ** specified in the formatting string will be displayed.
351 @@ -263,6 +267,7 @@ char *FormatWindowTitle(const char* file
352 int lockReasons,
353 int fileChanged,
354 int transient,
355 + int clientWaits,
356 const char* titleFormat)
358 static char title[WINDOWTITLE_MAX_LEN];
359 @@ -410,6 +415,11 @@ char *FormatWindowTitle(const char* file
360 titlePtr = safeCharAdd(titlePtr, titleEnd, '%');
361 break;
363 + case 'w': /* client is waiting */
364 + if (isServer && clientWaits)
365 + titlePtr = safeStrCpy(titlePtr, titleEnd, "waiting");
366 + break;
368 case '*': /* short file status ? */
369 fileStatusPresent = True;
370 if (*titleFormat && *titleFormat == 'S')
371 @@ -593,6 +603,7 @@ static void formatChangedCB(Widget w, Xt
372 etDialog.lockReasons,
373 XmToggleButtonGetState(etDialog.oFileChangedW),
374 XmToggleButtonGetState(etDialog.oTransientW),
375 + False,
376 format);
377 XtFree(format);
378 XmTextFieldSetString(etDialog.previewW, title);
379 diff --quilt old/source/windowTitle.h new/source/windowTitle.h
380 --- old/source/windowTitle.h
381 +++ new/source/windowTitle.h
382 @@ -43,6 +43,7 @@ char *FormatWindowTitle(const char* file
383 int lockReasons,
384 int fileChanged,
385 int transient,
386 + int clientWaits,
387 const char* titleFormat);
389 void EditCustomTitleFormat(WindowInfo *window);
390 diff --quilt old/source/server_common.c new/source/server_common.c
391 --- old/source/server_common.c
392 +++ new/source/server_common.c
393 @@ -114,8 +114,7 @@ Atom CreateServerFileOpenAtom(const char
396 Atom CreateServerFileClosedAtom(const char *serverName,
397 - const char *path,
398 - Bool only_if_exist)
399 + const char *path)
401 char propName[10+1+
402 NEDIT_VERSION_STRING_LEN+1+
403 @@ -130,7 +129,7 @@ Atom CreateServerFileClosedAtom(const ch
405 sprintf(propName, "NEDIT_%s_FILE_%s_%s_%s_%s_WF_CLOSED",
406 NEDIT_VERSION_STRING, hostName, userName, serverName, path);
407 - atom = XInternAtom(TheDisplay, propName, only_if_exist);
408 + atom = XInternAtom(TheDisplay, propName, False);
409 return(atom);
412 diff --quilt old/source/server_common.h new/source/server_common.h
413 --- old/source/server_common.h
414 +++ new/source/server_common.h
415 @@ -43,8 +43,7 @@ void CreateServerPropertyAtoms(const cha
416 Atom CreateServerFileOpenAtom(const char *serverName,
417 const char *path);
418 Atom CreateServerFileClosedAtom(const char *serverName,
419 - const char *path,
420 - Bool only_if_exists);
421 + const char *path);
422 void DeleteServerFileAtoms(const char* serverName, Window rootWindow);
424 #endif /* NEDIT_SERVER_COMMON_H_INCLUDED */