source: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEETrigger.m@ 216

Last change on this file since 216 was 183, checked in by Nicholas Riley, 19 years ago

ICeCoffEE 1.4.2b1

VERSION, ui.plist, Info*.plist, InfoPlist.strings: Updated for 1.4.2b1.

APEMain.m: Removed PBX support.

ICeCoffEE.[hm]: Don't ICCF_OSErr(C)Assert if we get userCanceledErr:
part of fixing extraneous exception when not selecting anything from
the helper app menu. ICCF_KeyboardAction() and
ICCF_LaunchURLFromTextView() now take an event parameter - since we
have stuff on a timer now, means we get the key modifier state at
mousedown time, rather than some arbitrary time later.
ICCF_LaunchURL() returns NO if the user cancelled, so we don't need to
throw an exception to stop the URL blinking. Moved sanitized mouse
down event generation to ICCF_MouseDownEventWithModifierFlags(). Only
update Services menu at app launch on Panther. Use a timer to delay
URL launching in NSTextView on Tiger, so we accommodate
command-multiple clicking for discontiguous selection. Remove that
ugly goto.

ICeCoffEEShared.h: Turn off debugging in preparation for (beta)
release.

ICeCoffEETerminal.m: Update for new ICCF_LaunchURL() return.

ICeCoffEETrigger.[hm]: Singleton timer wrapper for discontiguous
selection compatibility on Tiger. Singleton global is exported for
efficiency since we have to check it on every mouse down.

ICeCoffEEWebKit.m: Removed incorrect comment (what was I thinking?)
Update for new ICCF_LaunchURL() return. Properly highlight before
ICCF_LaunchURL(), especially noticable with menu.

APEInfo.rtfd: More fixes and updates, final for 1.4.2b1.

File size: 1.5 KB
Line 
1//
2// ICeCoffEETrigger.m
3// ICeCoffEE APE
4//
5// Created by Nicholas Riley on 5/14/05.
6// Copyright 2005 Nicholas Riley. All rights reserved.
7//
8
9#import "ICeCoffEETrigger.h"
10#import "ICeCoffEE.h"
11
12
13ICeCoffEETrigger *ICCF_sharedTrigger = nil;
14
15@implementation ICeCoffEETrigger
16
17- (id)initForEvent:(NSEvent *)anEvent onTarget:(NSText<NSTextInput> *)aTarget;
18{
19 if ( (self = [super init]) != nil) {
20 target = [aTarget retain];
21 event = [anEvent retain];
22 characterIndex = [aTarget characterIndexForPoint: [[aTarget window] convertBaseToScreen: [anEvent locationInWindow]]];
23 timer = [NSTimer scheduledTimerWithTimeInterval: TicksToEventTime(GetDblTime())
24 target: self
25 selector: @selector(timerFired:)
26 userInfo: nil
27 repeats: NO];
28 }
29 return self;
30}
31
32+ (void)setTriggerForEvent:(NSEvent *)event onTarget:(NSText<NSTextInput> *)target;
33{
34 ICCF_sharedTrigger = [[self alloc] initForEvent: event onTarget: target];
35 [ICCF_sharedTrigger release];
36}
37
38- (void)dealloc;
39{
40 timer = nil;
41 [target release];
42 target = nil;
43 [event release];
44 event = nil;
45 ICLog(@"%@ dealloc", self);
46 [super dealloc];
47}
48
49- (void)timerFired:(NSTimer *)timer;
50{
51 ICCF_sharedTrigger = nil;
52 [target setSelectedRange: NSMakeRange(characterIndex, 0)];
53 ICCF_LaunchURLFromTextView(target, event);
54}
55
56- (void)cancel;
57{
58 ICCF_sharedTrigger = nil;
59 [timer invalidate]; // we get dealloced inside here, so don't do anything else
60}
61
62@end
Note: See TracBrowser for help on using the repository browser.