1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-02-01 20:06:00 +00:00

Merge from emacs--rel--22

Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1121
This commit is contained in:
Miles Bader 2008-04-23 05:55:42 +00:00
commit a113b3ca32
28 changed files with 388 additions and 235 deletions

View File

@ -1,3 +1,7 @@
2008-04-23 Dan Nicolaescu <dann@ics.uci.edu>
* configure.in: Remove hpux10.20 from the desupported list.
2008-04-18 Stefan Monnier <monnier@iro.umontreal.ca>
* configure.in: Define USE_LUCID/USE_MOTIF in config.h.

View File

@ -53,12 +53,6 @@ from 2007-08-27. Impossible to procede without more input from OP (as
of 20070912, emails are bouncing) or someone else who can reproduce this.
http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg01497.html
** emacs-22.1 with GTK problems (with patches)
Only outstanding issue seems to be whether Solaris 2.6 GTK can be
supported in the absence of recursive mutexes, via a change to
alloc.c, or whether configure should abort.
http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-09/msg00055.html
* BUGS
** Does deleting frames run Lisp code? If so, can we get rid of that?

View File

@ -769,7 +769,7 @@ case "${machine}" in
esac
case "${opsys}" in
bsd386 | bsdos2-1 | bsdos2 | bsdos3 | bsdos4 | bsd4-1 | bsd4-2 | bsd4-3 | usg5-0 | usg5-2-2 | usg5-2 | usg5-3 | ultrix4-3 | 386bsd | hpux | hpux8 | hpux9 | hpux9shr | hpux10 | hpux10-20 | aix3-1 | aix3-2-5 | aix3-2 | aix4-1 | nextstep | ux4800 | uxpds | uxpv )
bsd386 | bsdos2-1 | bsdos2 | bsdos3 | bsdos4 | bsd4-1 | bsd4-2 | bsd4-3 | usg5-0 | usg5-2-2 | usg5-2 | usg5-3 | ultrix4-3 | 386bsd | hpux | hpux8 | hpux9 | hpux9shr | hpux10 | aix3-1 | aix3-2-5 | aix3-2 | aix4-1 | nextstep | ux4800 | uxpds | uxpv )
echo "The system that you are configuring on: ${canonical} is considered to be obsolete"
echo "and it is planned to be desupported in the next version of Emacs"
echo "Please email emacs-devel@gnu.org as soon as possible if this system is still in use."

View File

@ -13,6 +13,11 @@
* building.texi (GDB-UI Layout, Breakpoints Buffer)
(Other GDB-UI Buffers): Update for recent thread related changes.
2008-04-11 Mirko Vukovic <mirko.vukovic@gmail.com> (tiny change)
* maintaining.texi (Maintaining):
* emacs.texi (Top): Typo.
2008-04-08 Stefan Monnier <monnier@iro.umontreal.ca>
* display.texi (Font Lock): Prefer add-hook to using a non-nil `mode'

View File

@ -713,7 +713,7 @@ Maintaining Large Programs
* Change Log:: Maintaining a change history for your program.
* Format of ChangeLog:: What the change log file looks like.
* Tags:: Go direct to any function in your program in one
* Tags:: Go directly to any function in your program in one
command. Tags remembers which file it is in.
* Emerge:: A convenient way of merging two versions of a program.

View File

@ -12,7 +12,7 @@ also particularly useful for this purpose.
@menu
* Change Log:: Maintaining a change history for your program.
* Format of ChangeLog:: What the change log file looks like.
* Tags:: Go direct to any function in your program in one
* Tags:: Go directly to any function in your program in one
command. Tags remembers which file it is in.
@ifnottex
* Emerge:: A convenient way of merging two versions of a program.

View File

@ -1,3 +1,9 @@
2008-04-10 Jason Rumney <jasonr@gnu.org>
* makefile.w32-in (CLIENTRES): New variable and target.
(TRES): Remove.
($(BLD)/emacsclientw.exe): Use $(CLIENTRES) instead of $(TRES).
2008-04-19 Stefan Monnier <monnier@iro.umontreal.ca>
* vcdiff: Use "sccs get" rather than "get"; leave PATH alone.

View File

@ -75,18 +75,19 @@ ECLIENTOBJS = $(BLD)/emacsclient.$(O) \
$(BLD)/getopt.$(O) \
$(BLD)/getopt1.$(O) \
$(BLD)/ntlib.$(O)
TRES = ../nt/$(BLD)/emacs.res
CLIENTRES = ../nt/$(BLD)/emacsclient.res
$(TRES): ../nt/emacs.rc
$(RC) $(RC_OUT)../nt/$(BLD)/emacs.res $(ALL_DEPS)
$(CLIENTRES): ../nt/emacsclient.rc
@echo Emacsclient resource file must be built from nt directory
@exit -1
$(BLD)/emacsclient.exe: $(ECLIENTOBJS)
# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(USER32) $(COMCTL32) $(LIBS)
$(BLD)/emacsclientw.exe: $(ECLIENTOBJS) $(TRES)
$(BLD)/emacsclientw.exe: $(ECLIENTOBJS) $(CLIENTRES)
# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
$(LINK) $(LINK_OUT)$@ $(TRES) -mwindows $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(USER32) $(COMCTL32) $(LIBS)
$(LINK) $(LINK_OUT)$@ $(CLIENTRES) -mwindows $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(USER32) $(COMCTL32) $(LIBS)
# emacsclient.$(O) depends on makefile.w32-in because makefile.w32-in
# can be edited to define VERSION string, which is part of ECLIENT_CFLAGS.

View File

@ -1,3 +1,36 @@
2008-04-12 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-init-buffer): New function.
(gdb-set-gud-minor-mode-existing-buffers)
(gdb-info-breakpoints-custom, gdb-get-location)
(gdb-set-gud-minor-mode-existing-buffers-1): Use it.
Previously gdb-create-define-alist wasn't always run and added to
after-save-hook.
* progmodes/gud.el (gud-tooltip-tips): Use tooltip-event-buffer
2008-04-12 Kevin Ryde <user42@zip.com.au>
* progmodes/make-mode.el (makefile-fill-paragraph): Treat indented
comments like unindented ones.
2008-04-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* term/mac-win.el (mac-ae-open-documents): Adjust selection range
parameter origins.
2008-04-11 Kevin Ryde <user42@zip.com.au>
* emacs-lisp/autoload.el (autoload-generate-file-autoloads):
Bind print-level to ensure output forms aren't truncated if
print-level is set to eval-expression-print-level when going via
eval-defun and friends, or has been otherwise fiddled with.
2008-04-08 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/cc-mode.el (c-basic-common-init): Don't set
font-lock-extend-after-change-region-function globally.
2008-04-23 Juanma Barranquero <lekktu@gmail.com>
* speedbar.el (speedbar-use-tool-tips-flag)

View File

@ -335,6 +335,7 @@ Return non-nil iff FILE adds no autoloads to OUTFILE
(let ((autoloads-done '())
(load-name (autoload-file-load-name file))
(print-length nil)
(print-level nil)
(print-readably t) ; This does something in Lucid Emacs.
(float-output-format nil)
(visited (get-file-buffer file))

View File

@ -1131,7 +1131,5 @@ prefix), return the prefix."
(provide 'nnrss)
;;; nnrss.el ends here
;; arch-tag: 12910c07-0cdf-44fb-8d2c-416ded64c267
;;; nnrss.el ends here

View File

@ -601,7 +601,7 @@ that requires a literal mode spec at compile time."
(add-hook 'before-change-functions 'c-before-change nil t)
(make-local-hook 'after-change-functions)
(add-hook 'after-change-functions 'c-after-change nil t)
(setq font-lock-extend-after-change-region-function
(set (make-local-variable 'font-lock-extend-after-change-region-function)
'c-extend-after-change-region)) ; Currently (2008-04), only used by AWK.
(defun c-setup-doc-comment-style ()

View File

@ -481,6 +481,15 @@ otherwise do not."
(defconst gdb-source-file-regexp "\\(.+?\\), \\|\\([^, \n].*$\\)")
(defun gdb-init-buffer ()
(set (make-local-variable 'gud-minor-mode)
(buffer-local-value 'gud-minor-mode gud-comint-buffer))
(set (make-local-variable 'tool-bar-map) gud-tool-bar-map)
(when gud-tooltip-mode
(make-local-variable 'gdb-define-alist)
(gdb-create-define-alist)
(add-hook 'after-save-hook 'gdb-create-define-alist nil t)))
(defun gdb-set-gud-minor-mode-existing-buffers ()
"Create list of source files for current GDB session."
(goto-char (point-min))
@ -493,12 +502,7 @@ otherwise do not."
(when (and buffer-file-name
(member (file-name-nondirectory buffer-file-name)
gdb-source-file-list))
(set (make-local-variable 'gud-minor-mode) 'gdba)
(set (make-local-variable 'tool-bar-map) gud-tool-bar-map)
(when gud-tooltip-mode
(make-local-variable 'gdb-define-alist)
(gdb-create-define-alist)
(add-hook 'after-save-hook 'gdb-create-define-alist nil t))))))
(gdb-init-buffer)))))
(gdb-force-mode-line-update
(propertize "ready" 'face font-lock-variable-name-face)))
@ -1953,10 +1957,7 @@ static char *magick[] = {
(not (string-equal file "File not found")))
(with-current-buffer
(find-file-noselect file 'nowarn)
(set (make-local-variable 'gud-minor-mode)
'gdba)
(set (make-local-variable 'tool-bar-map)
gud-tool-bar-map)
(gdb-init-buffer)
;; Only want one breakpoint icon at each
;; location.
(save-excursion
@ -3269,9 +3270,7 @@ Add directory to search path for source files using the GDB command, dir."))
(throw 'file-not-found nil))
(with-current-buffer
(find-file-noselect (match-string 0))
(save-current-buffer
(set (make-local-variable 'gud-minor-mode) 'gdba)
(set (make-local-variable 'tool-bar-map) gud-tool-bar-map))
(gdb-init-buffer)
;; only want one breakpoint icon at each location
(save-excursion
(goto-line (string-to-number line))
@ -3293,9 +3292,7 @@ of the current session."
buffer-file-name)
gdb-source-file-list)
(with-current-buffer (find-buffer-visiting buffer-file-name)
(set (make-local-variable 'gud-minor-mode)
(buffer-local-value 'gud-minor-mode gud-comint-buffer))
(set (make-local-variable 'tool-bar-map) gud-tool-bar-map)))))
(gdb-init-buffer)))))
;;from put-image
(defun gdb-put-string (putstring pos &optional dprop &rest sprops)
@ -3625,13 +3622,7 @@ is set in them."
(dolist (buffer (buffer-list))
(with-current-buffer buffer
(when (member buffer-file-name gdb-source-file-list)
(set (make-local-variable 'gud-minor-mode)
(buffer-local-value 'gud-minor-mode gud-comint-buffer))
(set (make-local-variable 'tool-bar-map) gud-tool-bar-map)
(when gud-tooltip-mode
(make-local-variable 'gdb-define-alist)
(gdb-create-define-alist)
(add-hook 'after-save-hook 'gdb-create-define-alist nil t)))))
(gdb-init-buffer))))
(gdb-force-mode-line-update
(propertize "ready" 'face font-lock-variable-name-face)))

View File

@ -3424,10 +3424,7 @@ This function must return nil if it doesn't handle EVENT."
(if (and (eq gud-minor-mode 'gdba)
(not gdb-active-process))
(progn
(with-current-buffer
(window-buffer (let ((mouse (mouse-position)))
(window-at (cadr mouse)
(cddr mouse))))
(with-current-buffer (tooltip-event-buffer event)
(let ((define-elt (assoc expr gdb-define-alist)))
(unless (null define-elt)
(tooltip-show

View File

@ -1352,7 +1352,7 @@ definition and conveniently use this command."
(save-excursion
(beginning-of-line)
(cond
((looking-at "^#+\\s-*")
((looking-at "^[ \t]*#+\\s-*")
;; Found a comment. Return nil to let normal filling take place.
nil)

View File

@ -1802,11 +1802,11 @@ if possible. If there's no such frame, a new frame is created."
(let ((line (car selection-range))
(start (cadr selection-range))
(end (nth 2 selection-range)))
(if (> line 0)
(goto-line line)
(if (and (> start 0) (> end 0))
(progn (set-mark start)
(goto-char end))))))
(if (>= line 0)
(goto-line (1+ line))
(if (and (>= start 0) (>= end 0))
(progn (set-mark (1+ start))
(goto-char (1+ end)))))))
((stringp search-text)
(re-search-forward
(mapconcat 'regexp-quote (split-string search-text) "\\|")

View File

@ -355,8 +355,8 @@ With argument ARG, do it ARG times;
a negative argument ARG = -N means move forward N paragraphs.
A paragraph start is the beginning of a line which is a
`first-line-of-paragraph' or which is ordinary text and follows a
paragraph-separating line; except: if the first real line of a
`paragraph-start' or which is ordinary text and follows a
`paragraph-separate'ing line; except: if the first real line of a
paragraph is preceded by a blank line, the paragraph starts at that
blank line.

View File

@ -1,3 +1,15 @@
2008-04-23 Eli Zaretskii <eliz@gnu.org>
* makefile.w32-in (ALL): Move $(CLIENTRES) from here...
(all): ...to here. $(ALL) is a prerequisite of .PHONY, so having
a real file there is not a good idea.
2008-04-23 Jason Rumney <jasonr@gnu.org>
* makefile.w32-in (CLIENTRES): New variable and build target.
(all): Depend on it.
($(TRES)): Use $(TRES) in rule.
2008-04-21 Jason Rumney <jasonr@gnu.org>
* configure.bat (success): Print "make" rather than "gmake", as that

View File

@ -24,13 +24,15 @@
# FIXME: This file uses DOS EOLs. Convert to Unix after 22.1 is out
# (and remove or replace this comment).
TRES = $(BLD)/emacs.res
CLIENTRES = $(BLD)/emacsclient.res
XMFLAGS =
ALL = addpm ddeclient runemacs cmdproxy addsection preprep
.PHONY: $(ALL)
TRES = $(BLD)/emacs.res
XMFLAGS =
addpm: stamp_BLD $(BLD)/addpm.exe
$(BLD)/addpm.exe: $(BLD)/addpm.$(O)
@ -62,7 +64,10 @@ $(BLD)/preprep.exe: $(BLD)/preprep.$(O)
# it is not necessary on later versions, it is still ok to use it.
#
$(TRES): emacs.rc icons/emacs.ico emacs.manifest stamp_BLD
$(RC) $(RC_OUT)$(BLD)/emacs.res emacs.rc
$(RC) $(RC_OUT)$(TRES) emacs.rc
$(CLIENTRES): emacsclient.rc stamp_BLD
$(RC) $(RC_OUT)$(CLIENTRES) emacsclient.rc
runemacs: stamp_BLD $(BLD)/runemacs.exe
$(BLD)/runemacs.exe: $(BLD)/runemacs.$(O) $(TRES)
@ -81,7 +86,7 @@ $(BLD)/addpm.$(O) $(BLD)/ddeclient.$(O) $(BLD)/runemacs.$(O) $(BLD)/cmdproxy.$(O
#
# Build emacs
#
all: which-sh stamp_BLD $(ALL) maybe-bootstrap all-other-dirs-$(MAKETYPE)
all: which-sh stamp_BLD $(ALL) $(CLIENTRES) maybe-bootstrap all-other-dirs-$(MAKETYPE)
all-other-dirs-nmake: addsection
cd ..\lib-src

View File

@ -1,3 +1,64 @@
2008-04-19 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* mac.c (create_apple_event) [TARGET_API_MAC_CARBON]:
Make function non-static.
(create_apple_event_from_event_ref) [TARGET_API_MAC_CARBON]:
Remove function.
(create_apple_event_from_drag_ref) [TARGET_API_MAC_CARBON]:
Move to mactoolbox.c.
(mac_event_parameters_to_lisp) [TARGET_API_MAC_CARBON]: New function.
* macgui.h (CGFloat) [!CGFLOAT_DEFINED]: New typedef.
(mac_rect_make): New macro.
* macterm.c (mac_draw_image_string_atsui) [MAC_OSX]: Use CGFloat
instead of float.
(mac_draw_image_string_cg) [USE_CG_TEXT_DRAWING]: Likewise.
(init_cg_color, mac_draw_line, mac_draw_cg_image, XSetForeground)
(XSetBackground) [USE_CG_DRAWING]: Likewise.
(mac_draw_image_string_atsui) [MAC_OSX]: Use mac_rect_make instead of
CGRectMake.
(mac_draw_image_string_cg) [USE_CG_TEXT_DRAWING]: Likewise.
(mac_erase_rectangle, mac_draw_cg_image, mac_fill_rectangle)
(mac_set_clip_rectangles) [USE_CG_DRAWING]: Likewise.
(XCreatePixmap, XCreatePixmapFromBitmapData): Use Window
instead of WindowRef in argument type.
(XCreatePixmap) [!MAC_OS8]: Don't call SetPortWindowPort.
(mac_invert_rectangle): Use CGContextSetBlendMode if available.
(mac_set_clip_rectangles, mac_reset_clip_rectangles): Take argument F
instead of DISPLAY. All uses changed.
(mac_handle_size_change): Don't call SET_FRAME_GARBAGED.
(x_calc_absolute_position): Simplify so as not to use
FRAME_PIXEL_WIDTH/FRAME_PIXEL_HEIGHT.
* macterm.h (XCreatePixmap, XCreatePixmapFromBitmapData): Use Window
instead of WindowRef in argument type.
(create_apple_event_from_event_ref, create_apple_event_from_drag_ref)
[TARGET_API_MAC_CARBON]: Remove externs.
(create_apple_event, mac_event_parameters_to_lisp)
[TARGET_API_MAC_CARBON]: Add externs.
* mactoolbox.c: (Vmac_ts_script_language_on_focus)
(saved_ts_script_language_on_focus) [USE_MAC_TSM]: Remove externs.
(XTread_socket) [USE_MAC_TOOLBAR]: Select window if its structure part
is clicked.
(x_activate_menubar): Remove extern for saved_menu_event_location.
(create_apple_event_from_drag_ref) [TARGET_API_MAC_CARBON]:
Move from mac.c.
2008-04-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* alloc.c [!SYSTEM_MALLOC && !SYNC_INPUT] (uninterrupt_malloc)
[HAVE_GTK_AND_PTHREAD && !DOUG_LEA_MALLOC]: Don't use recursive mutex.
2008-04-10 Jason Rumney <jasonr@gnu.org>
* w32.c (stat): When Vw32_get_true_file_attributes is Qlocal, get
attributes only for local files.
* w32proc.c (syms_of_ntproc): Change Vw32_get_true_file attributes
default to Qlocal.
2008-04-22 Juri Linkov <juri@jurta.org>
* buffer.c (Fswitch_to_buffer): Change interactive spec to call

View File

@ -1366,6 +1366,7 @@ void
uninterrupt_malloc ()
{
#ifdef HAVE_GTK_AND_PTHREAD
#ifdef DOUG_LEA_MALLOC
pthread_mutexattr_t attr;
/* GLIBC has a faster way to do this, but lets keep it portable.
@ -1373,6 +1374,11 @@ uninterrupt_malloc ()
pthread_mutexattr_init (&attr);
pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init (&alloc_mutex, &attr);
#else /* !DOUG_LEA_MALLOC */
/* Some systems such as Solaris 2.6 doesn't have a recursive mutex,
and the bundled gmalloc.c doesn't require it. */
pthread_mutex_init (&alloc_mutex, NULL);
#endif /* !DOUG_LEA_MALLOC */
#endif /* HAVE_GTK_AND_PTHREAD */
if (__free_hook != emacs_blocked_free)

151
src/mac.c
View File

@ -817,7 +817,7 @@ init_coercion_handler ()
}
#if TARGET_API_MAC_CARBON
static OSErr
OSErr
create_apple_event (class, id, result)
AEEventClass class;
AEEventID id;
@ -842,129 +842,76 @@ create_apple_event (class, id, result)
return err;
}
OSStatus
create_apple_event_from_event_ref (event, num_params, names, types, result)
Lisp_Object
mac_event_parameters_to_lisp (event, num_params, names, types)
EventRef event;
UInt32 num_params;
const EventParamName *names;
const EventParamType *types;
AppleEvent *result;
{
OSStatus err;
UInt32 i, size;
Lisp_Object result = Qnil;
UInt32 i;
ByteCount size;
#ifdef MAC_OSX
CFStringRef string;
CFDataRef data;
#endif
char *buf = NULL;
err = create_apple_event (0, 0, result); /* Dummy class and ID. */
if (err != noErr)
return err;
for (i = 0; i < num_params; i++)
switch (types[i])
{
{
EventParamName name = names[i];
EventParamType type = types[i];
switch (type)
{
#ifdef MAC_OSX
case typeCFStringRef:
err = GetEventParameter (event, names[i], typeCFStringRef, NULL,
sizeof (CFStringRef), NULL, &string);
if (err != noErr)
case typeCFStringRef:
err = GetEventParameter (event, name, typeCFStringRef, NULL,
sizeof (CFStringRef), NULL, &string);
if (err != noErr)
break;
data = CFStringCreateExternalRepresentation (NULL, string,
kCFStringEncodingUTF8,
'?');
if (data == NULL)
break;
name = EndianU32_NtoB (name);
type = EndianU32_NtoB (typeUTF8Text);
result =
Fcons (Fcons (make_unibyte_string ((char *) &name, 4),
Fcons (make_unibyte_string ((char *) &type, 4),
make_unibyte_string (CFDataGetBytePtr (data),
CFDataGetLength (data)))),
result);
CFRelease (data);
break;
data = CFStringCreateExternalRepresentation (NULL, string,
kCFStringEncodingUTF8,
'?');
if (data == NULL)
break;
AEPutParamPtr (result, names[i], typeUTF8Text,
CFDataGetBytePtr (data), CFDataGetLength (data));
CFRelease (data);
break;
#endif
default:
err = GetEventParameter (event, names[i], types[i], NULL,
0, &size, NULL);
if (err != noErr)
break;
buf = xrealloc (buf, size);
err = GetEventParameter (event, names[i], types[i], NULL,
size, NULL, buf);
if (err == noErr)
AEPutParamPtr (result, names[i], types[i], buf, size);
break;
}
if (buf)
xfree (buf);
return noErr;
}
OSErr
create_apple_event_from_drag_ref (drag, num_types, types, result)
DragRef drag;
UInt32 num_types;
const FlavorType *types;
AppleEvent *result;
{
OSErr err;
UInt16 num_items;
AppleEvent items;
long index;
char *buf = NULL;
err = CountDragItems (drag, &num_items);
if (err != noErr)
return err;
err = AECreateList (NULL, 0, false, &items);
if (err != noErr)
return err;
for (index = 1; index <= num_items; index++)
{
ItemReference item;
DescType desc_type = typeNull;
Size size;
err = GetDragItemReferenceNumber (drag, index, &item);
if (err == noErr)
{
int i;
for (i = 0; i < num_types; i++)
default:
err = GetEventParameter (event, name, type, NULL, 0, &size, NULL);
if (err != noErr)
break;
buf = xrealloc (buf, size);
err = GetEventParameter (event, name, type, NULL, size, NULL, buf);
if (err == noErr)
{
err = GetFlavorDataSize (drag, item, types[i], &size);
if (err == noErr)
{
buf = xrealloc (buf, size);
err = GetFlavorData (drag, item, types[i], buf, &size, 0);
}
if (err == noErr)
{
desc_type = types[i];
break;
}
name = EndianU32_NtoB (name);
type = EndianU32_NtoB (type);
result =
Fcons (Fcons (make_unibyte_string ((char *) &name, 4),
Fcons (make_unibyte_string ((char *) &type, 4),
make_unibyte_string (buf, size))),
result);
}
break;
}
err = AEPutPtr (&items, index, desc_type,
desc_type != typeNull ? buf : NULL,
desc_type != typeNull ? size : 0);
if (err != noErr)
break;
}
if (buf)
xfree (buf);
if (err == noErr)
{
err = create_apple_event (0, 0, result); /* Dummy class and ID. */
if (err == noErr)
err = AEPutParamDesc (result, keyDirectObject, &items);
if (err != noErr)
AEDisposeDesc (result);
}
AEDisposeDesc (&items);
return err;
return result;
}
#endif /* TARGET_API_MAC_CARBON */

View File

@ -126,6 +126,10 @@ typedef unsigned long Time;
#endif
#endif
#ifndef CGFLOAT_DEFINED
typedef float CGFloat;
#endif
typedef WindowRef Window;
#if TARGET_API_MAC_CARBON
typedef ScrapRef Selection;
@ -149,6 +153,7 @@ typedef int Selection;
#define mac_size_window SizeWindow
#define mac_get_global_mouse GetGlobalMouse
#define mac_is_window_toolbar_visible IsWindowToolbarVisible
#define mac_rect_make(f, x, y, w, h) CGRectMake (x, y, w, h)
typedef GWorldPtr Pixmap;
#define Cursor ThemeCursor

View File

@ -351,7 +351,7 @@ init_cg_color ()
if (CGColorGetTypeID != NULL)
#endif
{
float rgba[] = {0.0f, 0.0f, 0.0f, 1.0f};
CGFloat rgba[] = {0.0f, 0.0f, 0.0f, 1.0f};
mac_cg_color_black = CGColorCreate (mac_cg_color_space_rgb, rgba);
}
@ -460,7 +460,7 @@ mac_draw_line (f, gc, x1, y1, x2, y2)
{
#if USE_CG_DRAWING
CGContextRef context;
float gx1 = x1, gy1 = y1, gx2 = x2, gy2 = y2;
CGFloat gx1 = x1, gy1 = y1, gx2 = x2, gy2 = y2;
if (y1 != y2)
gx1 += 0.5f, gx2 += 0.5f;
@ -553,7 +553,7 @@ mac_erase_rectangle (f, gc, x, y, width, height)
context = mac_begin_cg_clip (f, gc);
CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc);
CGContextFillRect (context, CGRectMake (x, y, width, height));
CGContextFillRect (context, mac_rect_make (f, x, y, width, height));
mac_end_cg_clip (f);
}
#else
@ -632,8 +632,8 @@ mac_draw_cg_image (image, f, gc, src_x, src_y, width, height,
int dest_x, dest_y, overlay_p;
{
CGContextRef context;
float port_height = FRAME_PIXEL_HEIGHT (f);
CGRect dest_rect = CGRectMake (dest_x, dest_y, width, height);
CGFloat port_height = FRAME_PIXEL_HEIGHT (f);
CGRect dest_rect = mac_rect_make (f, dest_x, dest_y, width, height);
context = mac_begin_cg_clip (f, gc);
if (!overlay_p)
@ -647,11 +647,11 @@ mac_draw_cg_image (image, f, gc, src_x, src_y, width, height,
if (CGImageIsMask (image))
CG_SET_FILL_COLOR_WITH_GC_FOREGROUND (context, gc);
CGContextDrawImage (context,
CGRectMake (dest_x - src_x,
port_height - (dest_y - src_y
+ CGImageGetHeight (image)),
CGImageGetWidth (image),
CGImageGetHeight (image)),
mac_rect_make (f, dest_x - src_x,
port_height - (dest_y - src_y
+ CGImageGetHeight (image)),
CGImageGetWidth (image),
CGImageGetHeight (image)),
image);
mac_end_cg_clip (f);
}
@ -744,7 +744,7 @@ mac_free_bitmap (bitmap)
Pixmap
XCreatePixmap (display, w, width, height, depth)
Display *display;
WindowRef w;
Window w;
unsigned int width, height;
unsigned int depth;
{
@ -752,8 +752,9 @@ XCreatePixmap (display, w, width, height, depth)
Rect r;
QDErr err;
#ifdef MAC_OS8
SetPortWindowPort (w);
#endif
SetRect (&r, 0, 0, width, height);
#if !defined (WORDS_BIG_ENDIAN) && USE_CG_DRAWING
if (depth == 1)
@ -773,7 +774,7 @@ XCreatePixmap (display, w, width, height, depth)
Pixmap
XCreatePixmapFromBitmapData (display, w, data, width, height, fg, bg, depth)
Display *display;
WindowRef w;
Window w;
char *data;
unsigned int width, height;
unsigned long fg, bg;
@ -838,7 +839,7 @@ mac_fill_rectangle (f, gc, x, y, width, height)
context = mac_begin_cg_clip (f, gc);
CG_SET_FILL_COLOR_WITH_GC_FOREGROUND (context, gc);
CGContextFillRect (context, CGRectMake (x, y, width, height));
CGContextFillRect (context, mac_rect_make (f, x, y, width, height));
mac_end_cg_clip (f);
#else
Rect r;
@ -887,7 +888,26 @@ mac_invert_rectangle (f, x, y, width, height)
int x, y;
unsigned int width, height;
{
Rect r;
#if USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1040
#if MAC_OS_X_VERSION_MIN_REQUIRED < 1040 && MAC_OS_X_VERSION_MIN_REQUIRED >= 1020
if (CGContextSetBlendMode != NULL)
#endif
{
CGContextRef context;
context = mac_begin_cg_clip (f, NULL);
CGContextSetRGBFillColor (context, 1.0f, 1.0f, 1.0f, 1.0f);
CGContextSetBlendMode (context, kCGBlendModeDifference);
CGContextFillRect (context, mac_rect_make (f, x, y, width, height));
mac_end_cg_clip (f);
}
#if MAC_OS_X_VERSION_MIN_REQUIRED < 1040 && MAC_OS_X_VERSION_MIN_REQUIRED >= 1020
else /* CGContextSetBlendMode == NULL */
#endif
#endif /* USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1040 */
#if !USE_CG_DRAWING || MAC_OS_X_VERSION_MAX_ALLOWED < 1040 || (MAC_OS_X_VERSION_MIN_REQUIRED < 1040 && MAC_OS_X_VERSION_MIN_REQUIRED >= 1020)
{
Rect r;
#if USE_CG_DRAWING
mac_prepare_for_quickdraw (f);
@ -1018,7 +1038,7 @@ mac_draw_image_string_atsui (f, gc, x, y, buf, nchars, bg_width,
else
{
static CGContextRef context;
float port_height = FRAME_PIXEL_HEIGHT (f);
CGFloat port_height = FRAME_PIXEL_HEIGHT (f);
static const ATSUAttributeTag tags[] = {kATSUCGContextTag};
static const ByteCount sizes[] = {sizeof (CGContextRef)};
static const ATSUAttributeValuePtr values[] = {&context};
@ -1042,9 +1062,10 @@ mac_draw_image_string_atsui (f, gc, x, y, buf, nchars, bg_width,
{
CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc);
CGContextFillRect (context,
CGRectMake (x, y - FONT_BASE (GC_FONT (gc)),
bg_width,
FONT_HEIGHT (GC_FONT (gc))));
mac_rect_make (f,
x, y - FONT_BASE (GC_FONT (gc)),
bg_width,
FONT_HEIGHT (GC_FONT (gc))));
}
CGContextScaleCTM (context, 1, -1);
CGContextTranslateCTM (context, 0, -port_height);
@ -1388,7 +1409,7 @@ mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
XChar2b *buf;
int nchars, bg_width, overstrike_p;
{
float port_height, gx, gy;
CGFloat port_height, gx, gy;
int i;
CGContextRef context;
CGGlyph *glyphs;
@ -1430,8 +1451,8 @@ mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc);
CGContextFillRect
(context,
CGRectMake (gx, y - FONT_BASE (GC_FONT (gc)),
bg_width, FONT_HEIGHT (GC_FONT (gc))));
mac_rect_make (f, gx, y - FONT_BASE (GC_FONT (gc)),
bg_width, FONT_HEIGHT (GC_FONT (gc))));
}
CGContextScaleCTM (context, 1, -1);
CGContextTranslateCTM (context, 0, -port_height);
@ -1733,7 +1754,7 @@ XSetForeground (display, gc, color)
}
else
{
float rgba[4];
CGFloat rgba[4];
rgba[0] = gc->fore_color.red / 65535.0f;
rgba[1] = gc->fore_color.green / 65535.0f;
@ -1774,7 +1795,7 @@ XSetBackground (display, gc, color)
}
else
{
float rgba[4];
CGFloat rgba[4];
rgba[0] = gc->back_color.red / 65535.0f;
rgba[1] = gc->back_color.green / 65535.0f;
@ -1803,8 +1824,8 @@ XSetFont (display, gc, font)
/* Mac replacement for XSetClipRectangles. */
static void
mac_set_clip_rectangles (display, gc, rectangles, n)
Display *display;
mac_set_clip_rectangles (f, gc, rectangles, n)
struct frame *f;
GC gc;
Rect *rectangles;
int n;
@ -1836,9 +1857,9 @@ mac_set_clip_rectangles (display, gc, rectangles, n)
{
Rect *rect = rectangles + i;
gc->clip_rects[i] = CGRectMake (rect->left, rect->top,
rect->right - rect->left,
rect->bottom - rect->top);
gc->clip_rects[i] = mac_rect_make (f, rect->left, rect->top,
rect->right - rect->left,
rect->bottom - rect->top);
}
#endif
}
@ -1847,8 +1868,8 @@ mac_set_clip_rectangles (display, gc, rectangles, n)
/* Mac replacement for XSetClipMask. */
static INLINE void
mac_reset_clip_rectangles (display, gc)
Display *display;
mac_reset_clip_rectangles (f, gc)
struct frame *f;
GC gc;
{
gc->n_clip_rects = 0;
@ -2338,7 +2359,7 @@ x_draw_fringe_bitmap (w, row, p)
XSetForeground (display, face->gc, gcv.foreground);
}
mac_reset_clip_rectangles (display, face->gc);
mac_reset_clip_rectangles (f, face->gc);
}
#if USE_CG_DRAWING
@ -2852,7 +2873,7 @@ x_set_glyph_string_clipping (s)
int n;
n = get_glyph_string_clip_rects (s, rects, MAX_CLIP_RECTS);
mac_set_clip_rectangles (s->display, s->gc, rects, n);
mac_set_clip_rectangles (s->f, s->gc, rects, n);
}
@ -3442,7 +3463,7 @@ x_draw_relief_rect (f, left_x, top_y, right_x, bottom_y, width,
gc = f->output_data.mac->white_relief.gc;
else
gc = f->output_data.mac->black_relief.gc;
mac_set_clip_rectangles (dpy, gc, clip_rect, 1);
mac_set_clip_rectangles (f, gc, clip_rect, 1);
/* Top. */
if (top_p)
@ -3457,12 +3478,12 @@ x_draw_relief_rect (f, left_x, top_y, right_x, bottom_y, width,
mac_draw_line (f, gc,
left_x + i, top_y + i, left_x + i, bottom_y - i + 1);
mac_reset_clip_rectangles (dpy, gc);
mac_reset_clip_rectangles (f, gc);
if (raised_p)
gc = f->output_data.mac->black_relief.gc;
else
gc = f->output_data.mac->white_relief.gc;
mac_set_clip_rectangles (dpy, gc, clip_rect, 1);
mac_set_clip_rectangles (f, gc, clip_rect, 1);
/* Bottom. */
if (bot_p)
@ -3477,7 +3498,7 @@ x_draw_relief_rect (f, left_x, top_y, right_x, bottom_y, width,
mac_draw_line (f, gc,
right_x - i, top_y + i + 1, right_x - i, bottom_y - i);
mac_reset_clip_rectangles (dpy, gc);
mac_reset_clip_rectangles (f, gc);
}
@ -3499,7 +3520,7 @@ x_draw_box_rect (s, left_x, top_y, right_x, bottom_y, width,
XGetGCValues (s->display, s->gc, GCForeground, &xgcv);
XSetForeground (s->display, s->gc, s->face->box_color);
mac_set_clip_rectangles (s->display, s->gc, clip_rect, 1);
mac_set_clip_rectangles (s->f, s->gc, clip_rect, 1);
/* Top. */
mac_fill_rectangle (s->f, s->gc, left_x, top_y,
@ -3520,7 +3541,7 @@ x_draw_box_rect (s, left_x, top_y, right_x, bottom_y, width,
top_y, width, bottom_y - top_y + 1);
XSetForeground (s->display, s->gc, xgcv.foreground);
mac_reset_clip_rectangles (s->display, s->gc);
mac_reset_clip_rectangles (s->f, s->gc);
}
@ -3829,7 +3850,7 @@ x_draw_stretch_glyph_string (s)
gc = s->face->gc;
get_glyph_string_clip_rect (s, &r);
mac_set_clip_rectangles (s->display, gc, &r, 1);
mac_set_clip_rectangles (s->f, gc, &r, 1);
#if 0 /* MAC_TODO: stipple */
if (s->face->stipple)
@ -4029,7 +4050,7 @@ x_draw_glyph_string (s)
}
/* Reset clipping. */
mac_reset_clip_rectangles (s->display, s->gc);
mac_reset_clip_rectangles (s->f, s->gc);
}
/* Shift display to make room for inserted glyphs. */
@ -6409,7 +6430,7 @@ x_draw_bar_cursor (w, row, width, kind)
cursor_glyph->pixel_width,
width);
mac_reset_clip_rectangles (dpy, gc);
mac_reset_clip_rectangles (f, gc);
}
}
@ -6739,7 +6760,6 @@ mac_handle_size_change (f, pixelwidth, pixelheight)
change_frame_size (f, rows, cols, 0, 1, 0);
FRAME_PIXEL_WIDTH (f) = pixelwidth;
FRAME_PIXEL_HEIGHT (f) = pixelheight;
SET_FRAME_GARBAGED (f);
/* If cursor was outside the new size, mark it as off. */
mark_window_cursors_off (XWINDOW (f->root_window));
@ -6772,7 +6792,6 @@ void
x_calc_absolute_position (f)
struct frame *f;
{
int width_diff = 0, height_diff = 0;
int flags = f->size_hint_flags;
Rect inner, outer;
@ -6787,22 +6806,15 @@ x_calc_absolute_position (f)
mac_get_window_bounds (f, &inner, &outer);
UNBLOCK_INPUT;
width_diff = (outer.right - outer.left) - (inner.right - inner.left);
height_diff = (outer.bottom - outer.top) - (inner.bottom - inner.top);
/* Treat negative positions as relative to the leftmost bottommost
position that fits on the screen. */
if (flags & XNegative)
f->left_pos = (FRAME_MAC_DISPLAY_INFO (f)->width
- width_diff
- FRAME_PIXEL_WIDTH (f)
+ f->left_pos);
f->left_pos += (FRAME_MAC_DISPLAY_INFO (f)->width
- (outer.right - outer.left));
if (flags & YNegative)
f->top_pos = (FRAME_MAC_DISPLAY_INFO (f)->height
- height_diff
- FRAME_PIXEL_HEIGHT (f)
+ f->top_pos);
f->top_pos += (FRAME_MAC_DISPLAY_INFO (f)->height
- (outer.bottom - outer.top));
/* The left_pos and top_pos
are now relative to the top and left screen edges,

View File

@ -628,9 +628,9 @@ extern void x_destroy_window P_ ((struct frame *));
extern void x_wm_set_size_hint P_ ((struct frame *, long, int));
extern void x_delete_display P_ ((struct x_display_info *));
extern void mac_initialize P_ ((void));
extern Pixmap XCreatePixmap P_ ((Display *, WindowRef, unsigned int,
extern Pixmap XCreatePixmap P_ ((Display *, Window, unsigned int,
unsigned int, unsigned int));
extern Pixmap XCreatePixmapFromBitmapData P_ ((Display *, WindowRef, char *,
extern Pixmap XCreatePixmapFromBitmapData P_ ((Display *, Window, char *,
unsigned int, unsigned int,
unsigned long, unsigned long,
unsigned int));
@ -673,13 +673,10 @@ extern void mac_clear_font_name_table P_ ((void));
extern Lisp_Object mac_aedesc_to_lisp P_ ((const AEDesc *));
extern OSErr mac_ae_put_lisp P_ ((AEDescList *, UInt32, Lisp_Object));
#if TARGET_API_MAC_CARBON
extern OSStatus create_apple_event_from_event_ref P_ ((EventRef, UInt32,
const EventParamName *,
const EventParamType *,
AppleEvent *));
extern OSErr create_apple_event_from_drag_ref P_ ((DragRef, UInt32,
const FlavorType *,
AppleEvent *));
extern OSErr create_apple_event P_ ((AEEventClass, AEEventID, AppleEvent *));
extern Lisp_Object mac_event_parameters_to_lisp P_ ((EventRef, UInt32,
const EventParamName *,
const EventParamType *));
extern CFStringRef cfstring_create_with_utf8_cstring P_ ((const char *));
extern CFStringRef cfstring_create_with_string P_ ((Lisp_Object));
extern Lisp_Object cfdata_to_lisp P_ ((CFDataRef));

View File

@ -120,8 +120,6 @@ extern Lisp_Object Qtext_input;
extern Lisp_Object Qupdate_active_input_area, Qunicode_for_key_event;
extern Lisp_Object Vmac_ts_active_input_overlay;
extern Lisp_Object Qbefore_string;
extern Lisp_Object Vmac_ts_script_language_on_focus;
extern Lisp_Object saved_ts_script_language_on_focus;
#endif
static int mac_event_to_emacs_modifiers P_ ((EventRef));
@ -606,15 +604,15 @@ install_application_handler ()
#if USE_MAC_TSM
if (err == noErr)
{
static const EventTypeSpec spec[] =
static const EventTypeSpec specs[] =
{{kEventClassTextInput, kEventTextInputUpdateActiveInputArea},
{kEventClassTextInput, kEventTextInputUnicodeForKeyEvent},
{kEventClassTextInput, kEventTextInputOffsetToPos}};
err = InstallApplicationEventHandler (NewEventHandlerUPP
(mac_handle_text_input_event),
GetEventTypeCount (spec),
spec, NULL, NULL);
GetEventTypeCount (specs),
specs, NULL, NULL);
}
#endif
@ -3009,8 +3007,8 @@ mac_event_to_emacs_modifiers (EventRef eventRef)
GetEventParameter (eventRef, kEventParamKeyModifiers, typeUInt32, NULL,
sizeof (UInt32), NULL, &mods);
class = GetEventClass (eventRef);
if (!NILP (Vmac_emulate_three_button_mouse) &&
(class == kEventClassMouse || class == kEventClassCommand))
if (!NILP (Vmac_emulate_three_button_mouse)
&& (class == kEventClassMouse || class == kEventClassCommand))
{
mods &= ~(optionKey | cmdKey);
}
@ -3560,6 +3558,9 @@ XTread_socket (sd, expected, hold_quit)
OSStatus err;
HIViewRef ch;
if (FrontNonFloatingWindow () != window_ptr)
SelectWindow (window_ptr);
err = HIViewGetViewForMouseEvent (HIViewGetRoot (window_ptr),
eventRef, &ch);
/* This doesn't work on Mac OS X 10.2. */
@ -4248,7 +4249,6 @@ x_activate_menubar (f)
{
SInt32 menu_choice;
SInt16 menu_id, menu_item;
extern Point saved_menu_event_location;
set_frame_menubar (f, 0, 1);
BLOCK_INPUT;
@ -5704,6 +5704,75 @@ static pascal OSErr mac_do_receive_drag P_ ((WindowRef, void *, DragRef));
static DragTrackingHandlerUPP mac_do_track_dragUPP = NULL;
static DragReceiveHandlerUPP mac_do_receive_dragUPP = NULL;
static OSErr
create_apple_event_from_drag_ref (drag, num_types, types, result)
DragRef drag;
UInt32 num_types;
const FlavorType *types;
AppleEvent *result;
{
OSErr err;
UInt16 num_items;
AppleEvent items;
long index;
char *buf = NULL;
err = CountDragItems (drag, &num_items);
if (err != noErr)
return err;
err = AECreateList (NULL, 0, false, &items);
if (err != noErr)
return err;
for (index = 1; index <= num_items; index++)
{
ItemReference item;
DescType desc_type = typeNull;
Size size;
err = GetDragItemReferenceNumber (drag, index, &item);
if (err == noErr)
{
int i;
for (i = 0; i < num_types; i++)
{
err = GetFlavorDataSize (drag, item, types[i], &size);
if (err == noErr)
{
buf = xrealloc (buf, size);
err = GetFlavorData (drag, item, types[i], buf, &size, 0);
}
if (err == noErr)
{
desc_type = types[i];
break;
}
}
}
err = AEPutPtr (&items, index, desc_type,
desc_type != typeNull ? buf : NULL,
desc_type != typeNull ? size : 0);
if (err != noErr)
break;
}
if (buf)
xfree (buf);
if (err == noErr)
{
err = create_apple_event (0, 0, result); /* Dummy class and ID. */
if (err == noErr)
err = AEPutParamDesc (result, keyDirectObject, &items);
if (err != noErr)
AEDisposeDesc (result);
}
AEDisposeDesc (&items);
return err;
}
static void
mac_store_drag_event (window, mouse_pos, modifiers, desc)
WindowRef window;

View File

@ -110,6 +110,9 @@ void globals_of_w32 ();
extern Lisp_Object Vw32_downcase_file_names;
extern Lisp_Object Vw32_generate_fake_inodes;
extern Lisp_Object Vw32_get_true_file_attributes;
/* Defined in process.c for its own purpose. */
extern Lisp_Object Qlocal;
extern int w32_num_mouse_buttons;
@ -2644,6 +2647,8 @@ stat (const char * path, struct stat * buf)
}
if (!NILP (Vw32_get_true_file_attributes)
&& !(EQ (Vw32_get_true_file_attributes, Qlocal) &&
GetDriveType (name) == DRIVE_FIXED)
/* No access rights required to get info. */
&& (fh = CreateFile (name, 0, 0, NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL))

View File

@ -110,6 +110,7 @@ Lisp_Object Vw32_generate_fake_inodes;
exactly, at the expense of slower operation. Since true hard links
are supported on NTFS volumes, this is only relevant on NT. */
Lisp_Object Vw32_get_true_file_attributes;
extern Lisp_Object Qlocal;
Lisp_Object Qhigh, Qlow;
@ -2353,9 +2354,12 @@ the truename of a file can be slow. */);
DEFVAR_LISP ("w32-get-true-file-attributes", &Vw32_get_true_file_attributes,
doc: /* Non-nil means determine accurate link count in `file-attributes'.
Note that this option is only useful for files on NTFS volumes, where hard links
are supported. Moreover, it slows down `file-attributes' noticeably. */);
Vw32_get_true_file_attributes = Qt;
This option is only useful for files on NTFS volumes, where
hard links are supported. The default value `local' means only do
this for files on local harddrives. Any other non-nil value means do
this even on remote and removable drives where the performance impact
may be noticeable even on modern hardware. */);
Vw32_get_true_file_attributes = Qlocal;
staticpro (&Vw32_valid_locale_ids);
staticpro (&Vw32_valid_codepages);