comparison lisp/frame.el @ 5080:5502045ec510

The background-placement face property. -------------------- ChangeLog entries follow: -------------------- lisp/ChangeLog addition: 2010-02-25 Didier Verna <didier@xemacs.org> The background-placement face property. * cl-macs.el (face-background-placement): New defsetf. * cus-face.el (custom-face-attributes): * faces.el (face-interactive): * faces.el (set-face-property): * faces.el (face-equal): * faces.el (init-other-random-faces): Update. * faces.el (face-background-placement): * faces.el (set-face-background-placement): * faces.el (face-background-placement-instance): * faces.el (face-background-placement-instance-p): * frame.el (set-frame-background-placement): * frame.el (frame-background-placement): * frame.el (frame-background-placement-instance): * objects.el (make-face-background-placement-specifier): New. man/ChangeLog addition: 2010-02-25 Didier Verna <didier@xemacs.org> The background-placement face property. * xemacs/custom.texi (Faces): Document it. src/ChangeLog addition: 2010-02-25 Didier Verna <didier@xemacs.org> The background-placement face property. * console-x-impl.h (struct x_frame): Add new slots x and y. * console-x-impl.h (FRAME_X_X, FRAME_X_Y): New slot accessors. * console-gtk-impl.h: Fake something similar for potential port. * frame-x.c (x_get_frame_text_position): New function. * frame-x.c (x_init_frame_3): Use it. * event-Xt.c (emacs_Xt_handle_magic_event): Eat spurious ConfigureNotify events, get the frame position and mark frame faces changed. * objects-impl.h: The face_background_placement_specifier structure and its accessors. * objects.c: New symbols Qabsolute and Qrelative. * objects.c (face_background_placement_create): * objects.c (face_background_placement_mark): * objects.c (face_background_placement_instantiate): * objects.c (face_background_placement_validate): * objects.c (face_background_placement_after_change): * objects.c (set_face_background_placement_attached_to): New. * objects.h (set_face_background_palcement_attached_to): Declare the one above. * objects.c (syms_of_objects): * objects.c (specifier_type_create_objects): * objects.c (reinit_specifier_type_create_objects): * objects.c (reinit_vars_of_objects): Update for the modifications above. * console-xlike-inc.h (XLIKE_GC_TS_X_ORIGIN, XLIKE_GC_TS_X_ORIGIN): New X11/Gtk compatibility macros. * redisplay-xlike-inc.c (XLIKE_get_gc): Add a background placement argument and handle it. * gtk-glue.c (face_to_gc): * redisplay-xlike-inc.c (XLIKE_output_string): * redisplay-xlike-inc.c (XLIKE_output_pixmap): * redisplay-xlike-inc.c (XLIKE_output_blank): * redisplay-xlike-inc.c (XLIKE_output_horizontal_line): * redisplay-xlike-inc.c (XLIKE_output_eol_cursor): Update accordingly. * console-impl.h (struct console_methods): Add a background placement (Lisp_Object) argument to the clear_region method. * console-stream.c (stream_clear_region): * redisplay-tty.c (tty_clear_region): * redisplay-msw.c (mswindows_clear_region): * redisplay-xlike-inc.c (XLIKE_clear_region): Update accordingly. * redisplay-output.c (redisplay_clear_region): Handle the background placement property and update the call to the clear_region method. * faces.h (struct Lisp_Face): * faces.h (struct face_cachel): Add a background placement slot. * faces.h (WINDOW_FACE_CACHEL_BACKGROUND_PLACEMENT): New accessor. * faces.c (mark_face): * faces.c (face_equal): * faces.c (face_getprop): * faces.c (face_putprop): * faces.c (face_remprop): * faces.c (face_plist): * faces.c (reset_face): * faces.c (mark_face_cachels): * faces.c (update_face_cachel_data): * faces.c (merge_face_cachel_data): * faces.c (reset_face_cachel): * faces.c (Fmake_face): * faces.c (Fcopy_face): Handle the background placement property. * faces.c (syms_of_faces): * faces.c (vars_of_faces): * faces.c (complex_vars_of_faces): Update accordingly.
author Didier Verna <didier@lrde.epita.fr>
date Thu, 25 Feb 2010 16:19:01 +0100
parents e29fcfd8df5f
children 0d43872986b6
comparison
equal deleted inserted replaced
5079:aa4cae427255 5080:5502045ec510
1 ;;; frame.el --- multi-frame management independent of window systems. 1 ;;; frame.el --- multi-frame management independent of window systems.
2 2
3 ;; Copyright (C) 1993, 1994, 1996, 1997, 2000, 2001, 2003 3 ;; Copyright (C) 1993, 1994, 1996, 1997, 2000, 2001, 2003
4 ;; Free Software Foundation, Inc. 4 ;; Free Software Foundation, Inc.
5 ;; Copyright (C) 1995, 1996 Ben Wing. 5 ;; Copyright (C) 1995, 1996 Ben Wing.
6 ;; Copyright (C) 2010 Didier Verna
6 7
7 ;; Maintainer: XEmacs Development Team 8 ;; Maintainer: XEmacs Development Team
8 ;; Keywords: internal, dumped 9 ;; Keywords: internal, dumped
9 10
10 ;; This file is part of XEmacs. 11 ;; This file is part of XEmacs.
1013 1014
1014 (defun set-frame-property (frame prop val) 1015 (defun set-frame-property (frame prop val)
1015 "Set property PROP of FRAME to VAL. See `set-frame-properties'." 1016 "Set property PROP of FRAME to VAL. See `set-frame-properties'."
1016 (set-frame-properties frame (list prop val))) 1017 (set-frame-properties frame (list prop val)))
1017 1018
1019 (defun set-frame-background-placement (placement)
1020 "Set the background placement of the selected frame to PLACEMENT.
1021 When called interactively, prompt for the placement to use."
1022 (interactive (list (intern (completing-read "Placement: "
1023 '(("absolute" absolute)
1024 ("relative" relative))
1025 nil t))))
1026 (set-face-background-placement 'default placement (selected-frame)))
1027
1028 (defun frame-background-placement ()
1029 "Retrieve the selected frame's background placement."
1030 (interactive)
1031 (face-background-placement 'default (selected-frame)))
1032
1033 (defun frame-background-placement-instance ()
1034 "Retrieve the selected frame's background placement instance."
1035 (interactive)
1036 (face-background-placement-instance 'default (selected-frame)))
1037
1038 ;; #### FIXME: misnomers ! The functions below should be called
1039 ;; set-frame-<blabla> -- dvl.
1040
1018 ;; XEmacs change: this function differs significantly from Emacs. 1041 ;; XEmacs change: this function differs significantly from Emacs.
1019 (defun set-background-color (color-name) 1042 (defun set-background-color (color-name)
1020 "Set the background color of the selected frame to COLOR-NAME. 1043 "Set the background color of the selected frame to COLOR-NAME.
1021 When called interactively, prompt for the name of the color to use. 1044 When called interactively, prompt for the name of the color to use.
1022 To get the frame's current background color, use 1045 To get the frame's current background color, use