aboutsummaryrefslogtreecommitdiffstats
path: root/src/xfns.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xfns.c')
-rw-r--r--src/xfns.c204
1 files changed, 144 insertions, 60 deletions
diff --git a/src/xfns.c b/src/xfns.c
index cb6733e8fa1..32e390e1e1e 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -1,7 +1,8 @@
1/* Functions for the X window system. 1/* Functions for the X window system.
2 Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2
3 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 3Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4 Free Software Foundation, Inc. 4 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
5 Free Software Foundation, Inc.
5 6
6This file is part of GNU Emacs. 7This file is part of GNU Emacs.
7 8
@@ -99,6 +100,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
99#include <Xm/Xm.h> 100#include <Xm/Xm.h>
100#include <Xm/DialogS.h> 101#include <Xm/DialogS.h>
101#include <Xm/FileSB.h> 102#include <Xm/FileSB.h>
103#include <Xm/List.h>
104#include <Xm/TextF.h>
102#endif 105#endif
103 106
104#ifdef USE_LUCID 107#ifdef USE_LUCID
@@ -516,12 +519,20 @@ x_real_positions (FRAME_PTR f, int *xptr, int *yptr)
516 int real_x = 0, real_y = 0; 519 int real_x = 0, real_y = 0;
517 int had_errors = 0; 520 int had_errors = 0;
518 Window win = f->output_data.x->parent_desc; 521 Window win = f->output_data.x->parent_desc;
522 Atom actual_type;
523 unsigned long actual_size, bytes_remaining;
524 int i, rc, actual_format;
525 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
526 long max_len = 400;
527 Display *dpy = FRAME_X_DISPLAY (f);
528 unsigned char *tmp_data = NULL;
529 Atom target_type = XA_CARDINAL;
519 530
520 BLOCK_INPUT; 531 BLOCK_INPUT;
521 532
522 x_catch_errors (FRAME_X_DISPLAY (f)); 533 x_catch_errors (dpy);
523 534
524 if (win == FRAME_X_DISPLAY_INFO (f)->root_window) 535 if (win == dpyinfo->root_window)
525 win = FRAME_OUTER_WINDOW (f); 536 win = FRAME_OUTER_WINDOW (f);
526 537
527 /* This loop traverses up the containment tree until we hit the root 538 /* This loop traverses up the containment tree until we hit the root
@@ -606,6 +617,33 @@ x_real_positions (FRAME_PTR f, int *xptr, int *yptr)
606 had_errors = x_had_errors_p (FRAME_X_DISPLAY (f)); 617 had_errors = x_had_errors_p (FRAME_X_DISPLAY (f));
607 } 618 }
608 619
620
621 if (dpyinfo->root_window == f->output_data.x->parent_desc)
622 {
623 /* Try _NET_FRAME_EXTENTS if our parent is the root window. */
624 rc = XGetWindowProperty (dpy, win, dpyinfo->Xatom_net_frame_extents,
625 0, max_len, False, target_type,
626 &actual_type, &actual_format, &actual_size,
627 &bytes_remaining, &tmp_data);
628
629 if (rc == Success && actual_type == target_type && !x_had_errors_p (dpy)
630 && actual_size == 4 && actual_format == 32)
631 {
632 int ign;
633 Window rootw;
634 long *fe = (long *)tmp_data;
635
636 XGetGeometry (FRAME_X_DISPLAY (f), win,
637 &rootw, &real_x, &real_y, &ign, &ign, &ign, &ign);
638 outer_x = -fe[0];
639 outer_y = -fe[2];
640 real_x -= fe[0];
641 real_y -= fe[2];
642 }
643 }
644
645 if (tmp_data) XFree (tmp_data);
646
609 x_uncatch_errors (); 647 x_uncatch_errors ();
610 648
611 UNBLOCK_INPUT; 649 UNBLOCK_INPUT;
@@ -3075,25 +3113,11 @@ If FRAME is nil, use the selected frame. */)
3075static void 3113static void
3076set_machine_and_pid_properties (struct frame *f) 3114set_machine_and_pid_properties (struct frame *f)
3077{ 3115{
3078 /* See the above comment "Note: Encoding strategy". */
3079 XTextProperty text;
3080 int bytes, stringp;
3081 int do_free_text_value = 0;
3082 long pid = (long) getpid (); 3116 long pid = (long) getpid ();
3083 3117
3084 text.value = x_encode_text (Vsystem_name, 3118 /* This will set WM_CLIENT_MACHINE and WM_LOCALE_NAME. */
3085 Qcompound_text, 0, &bytes, &stringp, 3119 XSetWMProperties (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), NULL, NULL,
3086 &do_free_text_value); 3120 NULL, 0, NULL, NULL, NULL);
3087 text.encoding = (stringp ? XA_STRING
3088 : FRAME_X_DISPLAY_INFO (f)->Xatom_COMPOUND_TEXT);
3089 text.format = 8;
3090 text.nitems = bytes;
3091 XSetWMClientMachine (FRAME_X_DISPLAY (f),
3092 FRAME_OUTER_WINDOW (f),
3093 &text);
3094 if (do_free_text_value)
3095 xfree (text.value);
3096
3097 XChangeProperty (FRAME_X_DISPLAY (f), 3121 XChangeProperty (FRAME_X_DISPLAY (f),
3098 FRAME_OUTER_WINDOW (f), 3122 FRAME_OUTER_WINDOW (f),
3099 XInternAtom (FRAME_X_DISPLAY (f), 3123 XInternAtom (FRAME_X_DISPLAY (f),
@@ -3343,8 +3367,6 @@ This function is an internal primitive--use `make-frame' instead. */)
3343 "background", "Background", RES_TYPE_STRING); 3367 "background", "Background", RES_TYPE_STRING);
3344 x_default_parameter (f, parms, Qmouse_color, build_string ("black"), 3368 x_default_parameter (f, parms, Qmouse_color, build_string ("black"),
3345 "pointerColor", "Foreground", RES_TYPE_STRING); 3369 "pointerColor", "Foreground", RES_TYPE_STRING);
3346 x_default_parameter (f, parms, Qcursor_color, build_string ("black"),
3347 "cursorColor", "Foreground", RES_TYPE_STRING);
3348 x_default_parameter (f, parms, Qborder_color, build_string ("black"), 3370 x_default_parameter (f, parms, Qborder_color, build_string ("black"),
3349 "borderColor", "BorderColor", RES_TYPE_STRING); 3371 "borderColor", "BorderColor", RES_TYPE_STRING);
3350 x_default_parameter (f, parms, Qscreen_gamma, Qnil, 3372 x_default_parameter (f, parms, Qscreen_gamma, Qnil,
@@ -3578,7 +3600,8 @@ FRAME nil means use the selected frame. */)
3578 3600
3579 3601
3580DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0, 3602DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
3581 doc: /* Internal function called by `color-defined-p', which see. */) 3603 doc: /* Internal function called by `color-defined-p', which see
3604.\(Note that the Nextstep version of this function ignores FRAME.) */)
3582 (Lisp_Object color, Lisp_Object frame) 3605 (Lisp_Object color, Lisp_Object frame)
3583{ 3606{
3584 XColor foo; 3607 XColor foo;
@@ -4096,11 +4119,12 @@ x_display_info_for_name (Lisp_Object name)
4096 4119
4097DEFUN ("x-open-connection", Fx_open_connection, Sx_open_connection, 4120DEFUN ("x-open-connection", Fx_open_connection, Sx_open_connection,
4098 1, 3, 0, 4121 1, 3, 0,
4099 doc: /* Open a connection to an X server. 4122 doc: /* Open a connection to a display server.
4100DISPLAY is the name of the display to connect to. 4123DISPLAY is the name of the display to connect to.
4101Optional second arg XRM-STRING is a string of resources in xrdb format. 4124Optional second arg XRM-STRING is a string of resources in xrdb format.
4102If the optional third arg MUST-SUCCEED is non-nil, 4125If the optional third arg MUST-SUCCEED is non-nil,
4103terminate Emacs if we can't open the connection. */) 4126terminate Emacs if we can't open the connection.
4127\(In the Nextstep version, the last two arguments are currently ignored.) */)
4104 (Lisp_Object display, Lisp_Object xrm_string, Lisp_Object must_succeed) 4128 (Lisp_Object display, Lisp_Object xrm_string, Lisp_Object must_succeed)
4105{ 4129{
4106 unsigned char *xrm_option; 4130 unsigned char *xrm_option;
@@ -4179,6 +4203,9 @@ DEFUN ("x-display-list", Fx_display_list, Sx_display_list, 0, 0, 0,
4179 4203
4180DEFUN ("x-synchronize", Fx_synchronize, Sx_synchronize, 1, 2, 0, 4204DEFUN ("x-synchronize", Fx_synchronize, Sx_synchronize, 1, 2, 0,
4181 doc: /* If ON is non-nil, report X errors as soon as the erring request is made. 4205 doc: /* If ON is non-nil, report X errors as soon as the erring request is made.
4206This function only has an effect on X Windows. With MS Windows, it is
4207defined but does nothing.
4208
4182If ON is nil, allow buffering of requests. 4209If ON is nil, allow buffering of requests.
4183Turning on synchronization prohibits the Xlib routines from buffering 4210Turning on synchronization prohibits the Xlib routines from buffering
4184requests and seriously degrades performance, but makes debugging much 4211requests and seriously degrades performance, but makes debugging much
@@ -4213,12 +4240,12 @@ x_sync (FRAME_PTR f)
4213DEFUN ("x-change-window-property", Fx_change_window_property, 4240DEFUN ("x-change-window-property", Fx_change_window_property,
4214 Sx_change_window_property, 2, 6, 0, 4241 Sx_change_window_property, 2, 6, 0,
4215 doc: /* Change window property PROP to VALUE on the X window of FRAME. 4242 doc: /* Change window property PROP to VALUE on the X window of FRAME.
4216PROP must be a string. 4243PROP must be a string. VALUE may be a string or a list of conses,
4217VALUE may be a string or a list of conses, numbers and/or strings. 4244numbers and/or strings. If an element in the list is a string, it is
4218If an element in the list is a string, it is converted to 4245converted to an atom and the value of the atom is used. If an element
4219an Atom and the value of the Atom is used. If an element is a cons, 4246is a cons, it is converted to a 32 bit number where the car is the 16
4220it is converted to a 32 bit number where the car is the 16 top bits and the 4247top bits and the cdr is the lower 16 bits.
4221cdr is the lower 16 bits. 4248
4222FRAME nil or omitted means use the selected frame. 4249FRAME nil or omitted means use the selected frame.
4223If TYPE is given and non-nil, it is the name of the type of VALUE. 4250If TYPE is given and non-nil, it is the name of the type of VALUE.
4224If TYPE is not given or nil, the type is STRING. 4251If TYPE is not given or nil, the type is STRING.
@@ -4226,9 +4253,7 @@ FORMAT gives the size in bits of each element if VALUE is a list.
4226It must be one of 8, 16 or 32. 4253It must be one of 8, 16 or 32.
4227If VALUE is a string or FORMAT is nil or not given, FORMAT defaults to 8. 4254If VALUE is a string or FORMAT is nil or not given, FORMAT defaults to 8.
4228If OUTER_P is non-nil, the property is changed for the outer X window of 4255If OUTER_P is non-nil, the property is changed for the outer X window of
4229FRAME. Default is to change on the edit X window. 4256FRAME. Default is to change on the edit X window. */)
4230
4231Value is VALUE. */)
4232 (Lisp_Object prop, Lisp_Object value, Lisp_Object frame, Lisp_Object type, Lisp_Object format, Lisp_Object outer_p) 4257 (Lisp_Object prop, Lisp_Object value, Lisp_Object frame, Lisp_Object type, Lisp_Object format, Lisp_Object outer_p)
4233{ 4258{
4234 struct frame *f = check_x_frame (frame); 4259 struct frame *f = check_x_frame (frame);
@@ -4329,15 +4354,19 @@ DEFUN ("x-window-property", Fx_window_property, Sx_window_property,
4329 1, 6, 0, 4354 1, 6, 0,
4330 doc: /* Value is the value of window property PROP on FRAME. 4355 doc: /* Value is the value of window property PROP on FRAME.
4331If FRAME is nil or omitted, use the selected frame. 4356If FRAME is nil or omitted, use the selected frame.
4332If TYPE is nil or omitted, get the property as a string. Otherwise TYPE 4357
4333is the name of the Atom that denotes the type expected. 4358On MS Windows, this function only accepts the PROP and FRAME arguments.
4359
4360On X Windows, the following optional arguments are also accepted:
4361If TYPE is nil or omitted, get the property as a string.
4362Otherwise TYPE is the name of the atom that denotes the type expected.
4334If SOURCE is non-nil, get the property on that window instead of from 4363If SOURCE is non-nil, get the property on that window instead of from
4335FRAME. The number 0 denotes the root window. 4364FRAME. The number 0 denotes the root window.
4336If DELETE_P is non-nil, delete the property after retreiving it. 4365If DELETE_P is non-nil, delete the property after retreiving it.
4337If VECTOR_RET_P is non-nil, don't return a string but a vector of values. 4366If VECTOR_RET_P is non-nil, don't return a string but a vector of values.
4338 4367
4339Value is nil if FRAME hasn't a property with name PROP or if PROP has 4368Value is nil if FRAME hasn't a property with name PROP or if PROP has
4340no value of TYPE. */) 4369no value of TYPE (always string in the MS Windows case). */)
4341 (Lisp_Object prop, Lisp_Object frame, Lisp_Object type, Lisp_Object source, Lisp_Object delete_p, Lisp_Object vector_ret_p) 4370 (Lisp_Object prop, Lisp_Object frame, Lisp_Object type, Lisp_Object source, Lisp_Object delete_p, Lisp_Object vector_ret_p)
4342{ 4371{
4343 struct frame *f = check_x_frame (frame); 4372 struct frame *f = check_x_frame (frame);
@@ -4990,7 +5019,7 @@ change the tooltip's appearance.
4990Automatically hide the tooltip after TIMEOUT seconds. TIMEOUT nil 5019Automatically hide the tooltip after TIMEOUT seconds. TIMEOUT nil
4991means use the default timeout of 5 seconds. 5020means use the default timeout of 5 seconds.
4992 5021
4993If the list of frame parameters PARAMS contains a `left' parameters, 5022If the list of frame parameters PARMS contains a `left' parameters,
4994the tooltip is displayed at that x-position. Otherwise it is 5023the tooltip is displayed at that x-position. Otherwise it is
4995displayed at the mouse position, with offset DX added (default is 5 if 5024displayed at the mouse position, with offset DX added (default is 5 if
4996DX isn't specified). Likewise for the y-position; if a `top' frame 5025DX isn't specified). Likewise for the y-position; if a `top' frame
@@ -5007,7 +5036,7 @@ Text larger than the specified size is clipped. */)
5007 int root_x, root_y; 5036 int root_x, root_y;
5008 struct buffer *old_buffer; 5037 struct buffer *old_buffer;
5009 struct text_pos pos; 5038 struct text_pos pos;
5010 int i, width, height; 5039 int i, width, height, seen_reversed_p;
5011 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; 5040 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
5012 int old_windows_or_buffers_changed = windows_or_buffers_changed; 5041 int old_windows_or_buffers_changed = windows_or_buffers_changed;
5013 int count = SPECPDL_INDEX (); 5042 int count = SPECPDL_INDEX ();
@@ -5148,7 +5177,7 @@ Text larger than the specified size is clipped. */)
5148 try_window (FRAME_ROOT_WINDOW (f), pos, TRY_WINDOW_IGNORE_FONTS_CHANGE); 5177 try_window (FRAME_ROOT_WINDOW (f), pos, TRY_WINDOW_IGNORE_FONTS_CHANGE);
5149 5178
5150 /* Compute width and height of the tooltip. */ 5179 /* Compute width and height of the tooltip. */
5151 width = height = 0; 5180 width = height = seen_reversed_p = 0;
5152 for (i = 0; i < w->desired_matrix->nrows; ++i) 5181 for (i = 0; i < w->desired_matrix->nrows; ++i)
5153 { 5182 {
5154 struct glyph_row *row = &w->desired_matrix->rows[i]; 5183 struct glyph_row *row = &w->desired_matrix->rows[i];
@@ -5163,19 +5192,74 @@ Text larger than the specified size is clipped. */)
5163 row->full_width_p = 1; 5192 row->full_width_p = 1;
5164 5193
5165 row_width = row->pixel_width; 5194 row_width = row->pixel_width;
5166 /* There's a glyph at the end of rows that is used to place
5167 the cursor there. Don't include the width of this glyph. */
5168 if (row->used[TEXT_AREA]) 5195 if (row->used[TEXT_AREA])
5169 { 5196 {
5170 last = &row->glyphs[TEXT_AREA][row->used[TEXT_AREA] - 1]; 5197 /* There's a glyph at the end of rows that is used to place
5171 if (INTEGERP (last->object)) 5198 the cursor there. Don't include the width of this glyph. */
5172 row_width -= last->pixel_width; 5199 if (!row->reversed_p)
5200 {
5201 last = &row->glyphs[TEXT_AREA][row->used[TEXT_AREA] - 1];
5202 if (INTEGERP (last->object))
5203 row_width -= last->pixel_width;
5204 }
5205 else
5206 {
5207 /* There could be a stretch glyph at the beginning of R2L
5208 rows that is produced by extend_face_to_end_of_line.
5209 Don't count that glyph. */
5210 struct glyph *g = row->glyphs[TEXT_AREA];
5211
5212 if (g->type == STRETCH_GLYPH && INTEGERP (g->object))
5213 {
5214 row_width -= g->pixel_width;
5215 seen_reversed_p = 1;
5216 }
5217 }
5173 } 5218 }
5174 5219
5175 height += row->height; 5220 height += row->height;
5176 width = max (width, row_width); 5221 width = max (width, row_width);
5177 } 5222 }
5178 5223
5224 /* If we've seen partial-length R2L rows, we need to re-adjust the
5225 tool-tip frame width and redisplay it again, to avoid over-wide
5226 tips due to the stretch glyph that extends R2L lines to full
5227 width of the frame. */
5228 if (seen_reversed_p)
5229 {
5230 /* w->total_cols and FRAME_TOTAL_COLS want the width in columns,
5231 not in pixels. */
5232 width /= WINDOW_FRAME_COLUMN_WIDTH (w);
5233 w->total_cols = make_number (width);
5234 FRAME_TOTAL_COLS (f) = width;
5235 adjust_glyphs (f);
5236 clear_glyph_matrix (w->desired_matrix);
5237 clear_glyph_matrix (w->current_matrix);
5238 try_window (FRAME_ROOT_WINDOW (f), pos, 0);
5239 width = height = 0;
5240 /* Recompute width and height of the tooltip. */
5241 for (i = 0; i < w->desired_matrix->nrows; ++i)
5242 {
5243 struct glyph_row *row = &w->desired_matrix->rows[i];
5244 struct glyph *last;
5245 int row_width;
5246
5247 if (!row->enabled_p || !row->displays_text_p)
5248 break;
5249 row->full_width_p = 1;
5250 row_width = row->pixel_width;
5251 if (row->used[TEXT_AREA] && !row->reversed_p)
5252 {
5253 last = &row->glyphs[TEXT_AREA][row->used[TEXT_AREA] - 1];
5254 if (INTEGERP (last->object))
5255 row_width -= last->pixel_width;
5256 }
5257
5258 height += row->height;
5259 width = max (width, row_width);
5260 }
5261 }
5262
5179 /* Add the frame's internal border to the width and height the X 5263 /* Add the frame's internal border to the width and height the X
5180 window should have. */ 5264 window should have. */
5181 height += 2 * FRAME_INTERNAL_BORDER_WIDTH (f); 5265 height += 2 * FRAME_INTERNAL_BORDER_WIDTH (f);
@@ -5299,9 +5383,7 @@ DEFUN ("x-uses-old-gtk-dialog", Fx_uses_old_gtk_dialog,
5299/* Callback for "OK" and "Cancel" on file selection dialog. */ 5383/* Callback for "OK" and "Cancel" on file selection dialog. */
5300 5384
5301static void 5385static void
5302file_dialog_cb (widget, client_data, call_data) 5386file_dialog_cb (Widget widget, XtPointer client_data, XtPointer call_data)
5303 Widget widget;
5304 XtPointer call_data, client_data;
5305{ 5387{
5306 int *result = (int *) client_data; 5388 int *result = (int *) client_data;
5307 XmAnyCallbackStruct *cb = (XmAnyCallbackStruct *) call_data; 5389 XmAnyCallbackStruct *cb = (XmAnyCallbackStruct *) call_data;
@@ -5315,17 +5397,14 @@ file_dialog_cb (widget, client_data, call_data)
5315 in this case. */ 5397 in this case. */
5316 5398
5317static void 5399static void
5318file_dialog_unmap_cb (widget, client_data, call_data) 5400file_dialog_unmap_cb (Widget widget, XtPointer client_data, XtPointer call_data)
5319 Widget widget;
5320 XtPointer call_data, client_data;
5321{ 5401{
5322 int *result = (int *) client_data; 5402 int *result = (int *) client_data;
5323 *result = XmCR_CANCEL; 5403 *result = XmCR_CANCEL;
5324} 5404}
5325 5405
5326static Lisp_Object 5406static Lisp_Object
5327clean_up_file_dialog (arg) 5407clean_up_file_dialog (Lisp_Object arg)
5328 Lisp_Object arg;
5329{ 5408{
5330 struct Lisp_Save_Value *p = XSAVE_VALUE (arg); 5409 struct Lisp_Save_Value *p = XSAVE_VALUE (arg);
5331 Widget dialog = (Widget) p->pointer; 5410 Widget dialog = (Widget) p->pointer;
@@ -5345,7 +5424,11 @@ DEFUN ("x-file-dialog", Fx_file_dialog, Sx_file_dialog, 2, 5, 0,
5345 doc: /* Read file name, prompting with PROMPT in directory DIR. 5424 doc: /* Read file name, prompting with PROMPT in directory DIR.
5346Use a file selection dialog. Select DEFAULT-FILENAME in the dialog's file 5425Use a file selection dialog. Select DEFAULT-FILENAME in the dialog's file
5347selection box, if specified. If MUSTMATCH is non-nil, the returned file 5426selection box, if specified. If MUSTMATCH is non-nil, the returned file
5348or directory must exist. ONLY-DIR-P is ignored." */) 5427or directory must exist.
5428
5429This function is only defined on MS Windows, and X Windows with the
5430Motif or Gtk toolkits. With the Motif toolkit, ONLY-DIR-P is ignored.
5431Otherwise, if ONLY-DIR-P is non-nil, the user can only select directories. */)
5349 (Lisp_Object prompt, Lisp_Object dir, Lisp_Object default_filename, Lisp_Object mustmatch, Lisp_Object only_dir_p) 5432 (Lisp_Object prompt, Lisp_Object dir, Lisp_Object default_filename, Lisp_Object mustmatch, Lisp_Object only_dir_p)
5350{ 5433{
5351 int result; 5434 int result;
@@ -5514,8 +5597,11 @@ DEFUN ("x-file-dialog", Fx_file_dialog, Sx_file_dialog, 2, 5, 0,
5514 doc: /* Read file name, prompting with PROMPT in directory DIR. 5597 doc: /* Read file name, prompting with PROMPT in directory DIR.
5515Use a file selection dialog. Select DEFAULT-FILENAME in the dialog's file 5598Use a file selection dialog. Select DEFAULT-FILENAME in the dialog's file
5516selection box, if specified. If MUSTMATCH is non-nil, the returned file 5599selection box, if specified. If MUSTMATCH is non-nil, the returned file
5517or directory must exist. If ONLY-DIR-P is non-nil, the user can only select 5600or directory must exist.
5518directories. */) 5601
5602This function is only defined on MS Windows, and X Windows with the
5603Motif or Gtk toolkits. With the Motif toolkit, ONLY-DIR-P is ignored.
5604Otherwise, if ONLY-DIR-P is non-nil, the user can only select directories. */)
5519 (Lisp_Object prompt, Lisp_Object dir, Lisp_Object default_filename, Lisp_Object mustmatch, Lisp_Object only_dir_p) 5605 (Lisp_Object prompt, Lisp_Object dir, Lisp_Object default_filename, Lisp_Object mustmatch, Lisp_Object only_dir_p)
5520{ 5606{
5521 FRAME_PTR f = SELECTED_FRAME (); 5607 FRAME_PTR f = SELECTED_FRAME ();
@@ -6019,5 +6105,3 @@ When using Gtk+ tooltips, the tooltip face is not used. */);
6019 6105
6020#endif /* HAVE_X_WINDOWS */ 6106#endif /* HAVE_X_WINDOWS */
6021 6107
6022/* arch-tag: 55040d02-5485-4d58-8b22-95a7a05f3288
6023 (do not change this comment) */