emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: master 2021835326 2/3: Implement `return-frame' for DND on NS


From: Po Lu
Subject: Re: master 2021835326 2/3: Implement `return-frame' for DND on NS
Date: Tue, 31 May 2022 21:07:23 +0800
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.91 (gnu/linux)

Po Lu via Mailing list for Emacs changes <emacs-diffs@gnu.org> writes:

> +#ifdef NS_IMPL_COCOA
> +- (void) draggedImage: (NSImage *) dragged_image
> +           movedTo: (NSPoint) screen_point
> +{
> +  NSInteger window_number;
> +  NSWindow *w;
> +
> +  if (dnd_mode == RETURN_FRAME_NEVER)
> +    return;
> +
> +  window_number = [NSWindow windowNumberAtPoint: [NSEvent mouseLocation]
> +                 belowWindowWithWindowNumber: 0];
> +  w = [NSApp windowWithWindowNumber: window_number];
> +
> +  if (!w || w != self)
> +    dnd_mode = RETURN_FRAME_NOW;
> +
> +  if (dnd_mode != RETURN_FRAME_NOW
> +      || ![[w delegate] isKindOfClass: [EmacsView class]])
> +    return;
> +
> +  dnd_return_frame = ((EmacsView *) [w delegate])->emacsframe;
> +
> +  /* FIXME: there must be a better way to leave the event loop.  */
> +  [NSException raise: @""
> +           format: @"Must return DND frame"];
> +}
> +#endif

This works (and there's nothing in the documentation forbidding it), but
prints an ugly warning message to stdout every time the exception is
raised.  Does anyone know of a better way to stop an NS drag-and-drop
operation inside one of the drag source callbacks?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]