X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/aaef169dc63c4b557374540756865991e1bf6305..a12aece30906d6a8b03611262169ba181b37b93b:/src/xfns.c diff --git a/src/xfns.c b/src/xfns.c index 10996f8fbb..396ef8ceb6 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -158,6 +158,10 @@ int x_use_old_gtk_file_dialog; int x_gtk_show_hidden_files; +/* If non-zero, don't collapse to tool bar when it is detached. */ + +int x_gtk_whole_detached_tool_bar; + /* The background and shape of the mouse pointer, and shape when not over text or in the modeline. */ @@ -573,11 +577,9 @@ x_real_positions (f, xptr, yptr) int had_errors = 0; Window win = f->output_data.x->parent_desc; - int count; - BLOCK_INPUT; - count = x_catch_errors (FRAME_X_DISPLAY (f)); + x_catch_errors (FRAME_X_DISPLAY (f)); if (win == FRAME_X_DISPLAY_INFO (f)->root_window) win = FRAME_OUTER_WINDOW (f); @@ -664,7 +666,7 @@ x_real_positions (f, xptr, yptr) had_errors = x_had_errors_p (FRAME_X_DISPLAY (f)); } - x_uncatch_errors (FRAME_X_DISPLAY (f), count); + x_uncatch_errors (); UNBLOCK_INPUT; @@ -786,12 +788,9 @@ xg_set_icon (f, file) FRAME_PTR f; Lisp_Object file; { - struct gcpro gcpro1; int result = 0; Lisp_Object found; - GCPRO1 (found); - found = x_find_image_file (file); if (! NILP (found)) @@ -817,7 +816,6 @@ xg_set_icon (f, file) UNBLOCK_INPUT; } - UNGCPRO; return result; } @@ -942,7 +940,6 @@ x_set_mouse_color (f, arg, oldval) Display *dpy = FRAME_X_DISPLAY (f); Cursor cursor, nontext_cursor, mode_cursor, hand_cursor; Cursor hourglass_cursor, horizontal_drag_cursor; - int count; unsigned long pixel = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f)); unsigned long mask_color = x->background_pixel; @@ -959,7 +956,7 @@ x_set_mouse_color (f, arg, oldval) BLOCK_INPUT; /* It's not okay to crash if the user selects a screwy cursor. */ - count = x_catch_errors (dpy); + x_catch_errors (dpy); if (!NILP (Vx_pointer_shape)) { @@ -1020,7 +1017,7 @@ x_set_mouse_color (f, arg, oldval) /* Check and report errors with the above calls. */ x_check_errors (dpy, "can't set cursor shape: %s"); - x_uncatch_errors (dpy, count); + x_uncatch_errors (); { XColor fore_color, back_color; @@ -2820,12 +2817,15 @@ x_icon (f, parms) if (! EQ (icon_x, Qunbound)) x_wm_set_icon_position (f, XINT (icon_x), XINT (icon_y)); +#if 0 /* x_get_arg removes the visibility parameter as a side effect, + but x_create_frame still needs it. */ /* Start up iconic or window? */ x_wm_set_window_state (f, (EQ (x_get_arg (dpyinfo, parms, Qvisibility, 0, 0, RES_TYPE_SYMBOL), Qicon) ? IconicState : NormalState)); +#endif x_text_icon (f, (char *) SDATA ((!NILP (f->icon_name) ? f->icon_name @@ -3437,13 +3437,12 @@ FRAME nil means use the selected frame. */) { struct frame *f = check_x_frame (frame); Display *dpy = FRAME_X_DISPLAY (f); - int count; BLOCK_INPUT; - count = x_catch_errors (dpy); + x_catch_errors (dpy); XSetInputFocus (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), RevertToParent, CurrentTime); - x_uncatch_errors (dpy, count); + x_uncatch_errors (); UNBLOCK_INPUT; return Qnil; @@ -4637,6 +4636,7 @@ x_create_tip_frame (dpyinfo, parms, text) check_x (); + parms = Fcopy_alist (parms); #ifdef MULTI_KBOARD kb = dpyinfo->kboard; @@ -5325,6 +5325,7 @@ or directory must exist. ONLY-DIR-P is ignored." */) int result; struct frame *f = SELECTED_FRAME (); Lisp_Object file = Qnil; + Lisp_Object decoded_file; Widget dialog, text, help; Arg al[10]; int ac = 0; @@ -5465,7 +5466,9 @@ or directory must exist. ONLY-DIR-P is ignored." */) if (NILP (file)) Fsignal (Qquit, Qnil); - return unbind_to (count, file); + decoded_file = DECODE_FILE (file); + + return unbind_to (count, decoded_file); } #endif /* USE_MOTIF */ @@ -5493,6 +5496,7 @@ directories. */) FRAME_PTR f = SELECTED_FRAME (); char *fn; Lisp_Object file = Qnil; + Lisp_Object decoded_file; int count = SPECPDL_INDEX (); struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6; char *cdef_file; @@ -5533,7 +5537,9 @@ directories. */) if (NILP (file)) Fsignal (Qquit, Qnil); - return unbind_to (count, file); + decoded_file = DECODE_FILE (file); + + return unbind_to (count, decoded_file); } #endif /* USE_GTK */ @@ -5806,6 +5812,12 @@ Note that this is just the default, there is a toggle button on the file chooser to show or not show hidden files on a case by case basis. */); x_gtk_show_hidden_files = 0; + DEFVAR_BOOL ("x-gtk-whole-detached-tool-bar", &x_gtk_whole_detached_tool_bar, + doc: /* *If non-nil, a detached tool bar is shown in full. +The default is to just show an arrow and pressing on that arrow shows +the tool bar buttons. */); + x_gtk_whole_detached_tool_bar = 0; + Fprovide (intern ("x"), Qnil); #ifdef USE_X_TOOLKIT