[Top][All Lists]

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

Re: Have there been recent changes in DnD?

From: Andreas Schik
Subject: Re: Have there been recent changes in DnD?
Date: Wed, 16 Jan 2008 11:49:32 +0100
User-agent: GNUMail (Version 1.2.0)

On 2008-01-14 13:10:17 +0100 Fred Kiefer <address@hidden> wrote:

> Andreas Schik wrote:
>> On 2008-01-10 21:46:38 +0100 Fred Kiefer <address@hidden> wrote:
>>> Andreas Schik wrote:
>>>> since I 'upgraded' to yesterdays SVN og GNUstep I do have problems
>>>> with DnD in GNUMail. Have there been any changes in the underlying
>>>> mechanisms making it necessary to change applications?
>>> The basic mechanism hasn't changed since April last year. What has
>>> changed a bit was the implementation for NSTableVie and NSTextView. 
>>> Are
>>> you using subclasses of these?
>> It looks like GNUMail is using a subclass of NSTableView in the mail
>> window. This table is the source of the operation. What I found out 
>> so
>> far is that the target of the operation (outline view) in the method 
>> -
>> outlineView:validateDrop:proposedItem:proposedChildIndex: receives
>> NSDragOperationNone in the NSDraggingInfo object ([info
>> draggingSourceOperationMask]), no matter which modifier I press down.
> There has been one important change for dragging in NSTableView, which
> may affect that code in some way. Now there are different drag mask
> settings for local and non-local dragging. The later by default is set
> to NSDragOperationNone. This behaviour matches, as far as I know, what
> Apple is doing. But why would the drag view see this as a non-local 
> drag
> operation?
> What you should do is debug into GSDragView (and it's subclass XX) to
> see, how the value for draggingSourceOperationMask is build up from
> dragMask (coming from the drag source) and operationMask (coming from
> the modifier keys). One of these two (most likely dragmask) must be 
> wrong.
Well, it is not a GNUMail problem, but a combination of GNUstep and
Camaelon introduces a category for NSTableView that does not call the
(assumedly new) selector -_initDefaults: Hence, the local dragging
mask is 0. Fixing this remedies part of the problem. What remains is a
quite strange behaviour:
If I overlap the mailbox window and the mail window of GNUMail the
operation works. As soon as there is a gap between the windows, i.e.
the drag operation touches an external application, the operation
again fails. It looks like GSDragView does not recognize that it must
switch back from non-local to local operation. It did not debug this,
though, and probabyl won't have time today to do so. But this might
anyway help you to track it down.


Mail: andreas dot schik at web dot de
Home: http://www.andreasheppel.de

PGP Key is available from the MIT key server (pgp.mit.edu).

Attachment: RFC3156.txt
Description: Text document

Attachment: pgp6EVJWhkBN6.pgp
Description: PGP signature

reply via email to

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