Put NSAutoreleasePool usage around other distributed notification observer methods
[adiumx.git] / Source / AIBorderlessListOutlineView.m
blob6bb5e56c427dcf245799c882c09675e496ed69dd
1 /* 
2  * Adium is the legal property of its developers, whose names are listed in the copyright file included
3  * with this source distribution.
4  * 
5  * This program is free software; you can redistribute it and/or modify it under the terms of the GNU
6  * General Public License as published by the Free Software Foundation; either version 2 of the License,
7  * or (at your option) any later version.
8  * 
9  * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
10  * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
11  * Public License for more details.
12  * 
13  * You should have received a copy of the GNU General Public License along with this program; if not,
14  * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
15  */
17 #import "AIBorderlessListOutlineView.h"
18 #import <AIUtilities/AIEventAdditions.h>
20 @implementation AIBorderlessListOutlineView
22 //Forward mouse down events to our containing window (when command is pressed) to allow dragging
23 - (void)mouseDown:(NSEvent *)theEvent
25         if (![theEvent cmdKey]) {
26                 //Wait for the next event
27                 NSEvent *nextEvent = [[self window] nextEventMatchingMask:(NSLeftMouseUpMask | NSLeftMouseDraggedMask | NSPeriodicMask)
28                                                                                                                 untilDate:[NSDate distantFuture]
29                                                                                                                    inMode:NSEventTrackingRunLoopMode
30                                                                                                                   dequeue:NO];
31                 
32                 //Pass along the event (either to ourself or our window, depending on what it is)
33                 switch ([nextEvent type]) {
34                         case NSLeftMouseUp:
35                                 [super mouseDown:theEvent];   
36                                 [super mouseUp:nextEvent];   
37                                 break;
38                         case NSLeftMouseDragged:
39                                 [[self window] mouseDown:theEvent];
40                                 [[self window] mouseDragged:nextEvent];
41                                 break;
42                         default:
43                                 [[self window] mouseDown:theEvent];
44                                 break;
45                 }
46         } else {
47         [super mouseDown:theEvent];   
48         }
50 - (void)mouseDragged:(NSEvent *)theEvent
52     if (![theEvent cmdKey]) {
53         [[self window] mouseDragged:theEvent];   
54         } else {
55                 [super mouseDragged:theEvent];
56         }
59 - (void)mouseUp:(NSEvent *)theEvent
61     if (![theEvent cmdKey]) {
62         [[self window] mouseUp:theEvent];   
63         } else {
64                 [super mouseUp:theEvent];
65         }       
68 - (int)totalHeight
70         return [super totalHeight] + 1;
73 @end