X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/f706a7b26099f02c4784118aadebdbb135fc5008..c4e8cde8c6cea5ab85abbac10626bd5c1fe5a6af:/src/frame.c diff --git a/src/frame.c b/src/frame.c index d757e93575..9c6345a0b4 100644 --- a/src/frame.c +++ b/src/frame.c @@ -1,6 +1,6 @@ /* Generic frame functions. - Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2003, 2004, 2005 - Free Software Foundation. + Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003, + 2004, 2005 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -16,14 +16,14 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Emacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ #include #include #include "lisp.h" -#include "charset.h" +#include "character.h" #ifdef HAVE_X_WINDOWS #include "xterm.h" #endif @@ -399,7 +399,7 @@ make_frame_without_minibuffer (mini_window, kb, display) #ifdef MULTI_KBOARD if (!NILP (mini_window) && XFRAME (XWINDOW (mini_window)->frame)->kboard != kb) - error ("frame and minibuffer must be on the same display"); + error ("Frame and minibuffer must be on the same display"); #endif /* Make a frame containing just a root window. */ @@ -729,7 +729,7 @@ do_switch_frame (frame, track, for_deletion) return frame; } -DEFUN ("select-frame", Fselect_frame, Sselect_frame, 1, 2, "e", +DEFUN ("select-frame", Fselect_frame, Sselect_frame, 1, 1, "e", doc: /* Select the frame FRAME. Subsequent editing commands apply to its selected window. The selection of FRAME lasts until the next time the user does @@ -740,14 +740,14 @@ the command loop, because it still may have the window system's input focus. On a text-only terminal, the next redisplay will display FRAME. This function returns FRAME, or nil if FRAME has been deleted. */) - (frame, no_enter) - Lisp_Object frame, no_enter; + (frame) + Lisp_Object frame; { return do_switch_frame (frame, 1, 0); } -DEFUN ("handle-switch-frame", Fhandle_switch_frame, Shandle_switch_frame, 1, 2, "e", +DEFUN ("handle-switch-frame", Fhandle_switch_frame, Shandle_switch_frame, 1, 1, "e", doc: /* Handle a switch-frame event EVENT. Switch-frame events are usually bound to this function. A switch-frame event tells Emacs that the window manager has requested @@ -756,8 +756,8 @@ This function selects the selected window of the frame of EVENT. If EVENT is frame object, handle it as if it were a switch-frame event to that frame. */) - (event, no_enter) - Lisp_Object event, no_enter; + (event) + Lisp_Object event; { /* Preserve prefix arg that the command loop just cleared. */ current_kboard->Vprefix_arg = Vcurrent_prefix_arg; @@ -1530,7 +1530,7 @@ before calling this function on it, like this. #if defined (MSDOS) && defined (HAVE_MOUSE) if (FRAME_MSDOS_P (XFRAME (frame))) { - Fselect_frame (frame, Qnil); + Fselect_frame (frame); mouse_moveto (XINT (x), XINT (y)); } #endif @@ -1562,7 +1562,7 @@ before calling this function on it, like this. #if defined (MSDOS) && defined (HAVE_MOUSE) if (FRAME_MSDOS_P (XFRAME (frame))) { - Fselect_frame (frame, Qnil); + Fselect_frame (frame); mouse_moveto (XINT (x), XINT (y)); } #endif @@ -1684,7 +1684,7 @@ If omitted, FRAME defaults to the currently selected frame. */) #if 0 /* This isn't logically necessary, and it can do GC. */ /* Don't let the frame remain selected. */ if (EQ (frame, selected_frame)) - Fhandle_switch_frame (next_frame (frame, Qt), Qnil); + Fhandle_switch_frame (next_frame (frame, Qt)); #endif /* Don't allow minibuf_window to remain on a deleted frame. */ @@ -1935,7 +1935,7 @@ store_in_alist (alistptr, prop, val) static int frame_name_fnn_p (str, len) char *str; - int len; + EMACS_INT len; { if (len > 1 && str[0] == 'F') { @@ -2313,6 +2313,12 @@ enabled such bindings for that variable with `make-variable-frame-local'. */) prop = parms[i]; val = values[i]; store_frame_param (f, prop, val); + + /* Changing the background color might change the background + mode, so that we have to load new defface specs. + Call frame-set-background-mode to do that. */ + if (EQ (prop, Qbackground_color)) + call1 (Qframe_set_background_mode, frame); } } @@ -2347,8 +2353,7 @@ DEFUN ("frame-char-width", Fframe_char_width, Sframe_char_width, 0, 1, 0, doc: /* Width in pixels of characters in the font in frame FRAME. If FRAME is omitted, the selected frame is used. -The width is the same for all characters, because -currently Emacs supports only fixed-width fonts. +On a graphical screen, the width is the standard width of the default font. For a terminal screen, the value is always 1. */) (frame) Lisp_Object frame; @@ -3069,14 +3074,14 @@ x_set_font (f, arg, oldval) BLOCK_INPUT; result = (STRINGP (fontset_name) - ? x_new_fontset (f, SDATA (fontset_name)) - : x_new_font (f, SDATA (arg))); + ? x_new_fontset (f, fontset_name) + : x_new_fontset (f, arg)); UNBLOCK_INPUT; if (EQ (result, Qnil)) error ("Font `%s' is not defined", SDATA (arg)); else if (EQ (result, Qt)) - error ("The characters of the given font have varying widths"); + error ("The default fontset can't be used for a frame font"); else if (STRINGP (result)) { set_default_ascii_font (result); @@ -3087,10 +3092,10 @@ x_set_font (f, arg, oldval) if (old_fontset == FRAME_FONTSET (f)) return; } - else if (!NILP (Fequal (result, oldval))) + store_frame_param (f, Qfont, result); + if (!NILP (Fequal (result, oldval))) return; - store_frame_param (f, Qfont, result); recompute_basic_faces (f); } else @@ -3368,7 +3373,7 @@ extern char *x_get_string_resource P_ ((XrmDatabase, char *, char *)); extern Display_Info *check_x_display_info P_ ((Lisp_Object)); -/* Get specified attribute from resource database RDB. +/* Get specified attribute from resource database RDB. See Fx_get_resource below for other parameters. */ static Lisp_Object @@ -3505,7 +3510,7 @@ x_get_resource_string (attribute, class) Lisp_Object x_get_arg (dpyinfo, alist, param, attribute, class, type) - Display_Info *dpyinfo; + Display_Info *dpyinfo; Lisp_Object alist, param; char *attribute; char *class;