X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/a8a35720091ca039e331497e45d720bc8ff405c6..ae18726b83b7cd4f71981dfd2329575bd3eed6ca:/src/xfns.c diff --git a/src/xfns.c b/src/xfns.c index 33823b2897..396ef8ceb6 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -1,6 +1,6 @@ /* Functions for the X window system. Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -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 @@ -3008,6 +3008,8 @@ This function is an internal primitive--use `make-frame' instead. */) check_x (); + parms = Fcopy_alist (parms); + /* Use this general default value to start with until we know if this frame has a specified name. */ Vx_resource_name = Vinvocation_name; @@ -3384,6 +3386,12 @@ This function is an internal primitive--use `make-frame' instead. */) || !FRAME_LIVE_P (XFRAME (kb->Vdefault_minibuffer_frame)))) kb->Vdefault_minibuffer_frame = frame; + /* All remaining specified parameters, which have not been "used" + by x_get_arg and friends, now go in the misc. alist of the frame. */ + for (tem = parms; !NILP (tem); tem = XCDR (tem)) + if (CONSP (XCAR (tem)) && !NILP (XCAR (XCAR (tem)))) + f->param_alist = Fcons (XCAR (tem), f->param_alist); + UNGCPRO; /* Make sure windows on this frame appear in calls to next-window @@ -3429,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; @@ -4629,6 +4636,7 @@ x_create_tip_frame (dpyinfo, parms, text) check_x (); + parms = Fcopy_alist (parms); #ifdef MULTI_KBOARD kb = dpyinfo->kboard; @@ -5317,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; @@ -5457,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 */ @@ -5485,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; @@ -5525,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 */ @@ -5798,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