[MlMt] Mailing lists and Mailmate

Benny Kjær Nielsen mailinglist at freron.com
Thu Jan 26 07:49:12 UTC 2012

On 26 Jan 2012, at 0:27, Seebs wrote:

> On 25 Jan 2012, at 17:23, Benny Kjær Nielsen wrote:
>> I agree. I use Apples NSTokenField class for the address fields and 
>> so far I have been unable to track drag'n'drop actions such that I 
>> could remove an address from a source NSTokenField. If anyone has any 
>> code which does something like that (for NSTokenFields) then please 
>> let me know. I've forgotten the ugly details, but (to me) it was a 
>> non-trivial problem. (The workaround is of course to use cut and copy 
>> instead.)
> Well, it must be possible, 'cuz I think Apple Mail does it.

I almost decided to give an answer to that argument in my first reply 
:-) First, anything is possible and I did not claim that it was not 
possible to do it. I claimed it was non-trivial. It may be trivial to 
Apple, because they can access private APIs or they can make their own 
variant of NSTokenField for Apple Mail based on the source code. I have 
to either re-implement NSTokenField or find some way to make it do what 
I want using the public API (if I use private API then I risk that it is 
not going to work in future updates of Mac OS X and I'm definitely out 
of the App Store). So, my claim is that it is non-trivial to make 
NSTokenField do what I want under the restrictions imposed by the public 
API (and any bugs in NSTokenField). Now, I may be wrong and that is why 
I asked for example code if anyone knew this to be the case.

> Cheap workaround:  If a token is dragged into a field, and you notice 
> that the token occurs only in one other field, of the same basic type, 
> you can just remove it from that field and be right 99% of the time.  
> Do this only if option wasn't down for the drag and it'll look like 
> you're moving-or-copying the way people expect that to work, I think?

Now that may not be a bad idea, but the problem with NSTokenField is 
that it is difficult to monitor drag events. As I wrote previously I 
forgot the ugly details, but as I recall I concluded that the only way 
forward was probably to subclass the so-called field editor (for those 
who know Cocoa) and that was when I decided that it wasn't currently 
worth the effort.

> More generally, you could have a preference with a name like "only 
> allow a given address once in recipient fields".  At that point, 
> adding an address to a field implicity removes it from all others.  In 
> practice we probably want that anyway.

Good point. This also gives me an idea for a workaround in which I don't 
directly monitor dragging events, but instead monitor paste events and 
token insertions to implicitly monitor dragging events. It would not be 
perfect, but maybe it would be good enough.


More information about the mailmate mailing list