Ignore:
Timestamp:
02/22/08 19:53:07 (16 years ago)
Author:
Nicholas Riley
Message:

APEMain.m: Note missing Xcode 3 support. Add Terminal 2.0 support.

English.lproj/APE Manager plugin.nib:

English.lproj/APEInfo.rtfd:

ICeCoffEE.[hm]: Bring triggering window and app to front if error
dialog displayed in ICCF_HandleException. Remove initial word
selection. Launch preexisting selection if present. Remove 10.3
support. Update for new ICeCoffEETrigger API. Rename downEvent
parameter for consistency.

ICeCoffEE.xcodeproj: Added files.

ICeCoffEEParser.m: Handle multiline URLs.

ICeCoffEETTView.[hm]: Terminal 2.0 support (thank you for having a
usable NSTextInput implementation!)

ICeCoffEETTViewTrigger.[hm]: ICeCoffEETrigger implementation for
TTView. Can't set range as we do for NSTextView because you can't
have an arbitrary empty selection range in Terminal, so we pass it
directly to ICCF_LaunchURLFromTTView.

ICeCoffEETerminal.[hm]: Fix capitalization on ICeCoffEETermSubviewSuper.
Pass downEvent to ICCF_HandleException so it can bring the triggering
window to the front.

ICeCoffEETextViewTrigger.[hm]: Moved from ICeCoffEETrigger.

ICeCoffEETrigger.[hm]: Now an abstract superclass. Replace direct
access to ICCF_sharedTrigger with +cancel. Create 0-character range
(if click outside selectedRange) or save selectedRange. Move
debugging logs here from ICeCoffEE.m. Add description method.

ICeCoffEEWebKit.m: Pass downEvent to ICCF_HandleException so it can
bring the triggering window to the front.

Installer components/ui/ui.plist: Updated for 1.5d3.

TestParser.m: Handle multiline URLs; newlines are printed as \ and
tabs as >. Implement ICCF_StringByRemovingCharactersInSet, which will
move elsewhere once Internet Config support is removed.

VERSION.xcconfig: Updated for 1.5d3.

urls.plist: Test for multiline URLs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ICeCoffEE/ICeCoffEE/ICeCoffEETrigger.m

    r256 r388  
    88
    99#import "ICeCoffEETrigger.h"
    10 #import "ICeCoffEE.h"
     10#import "ICeCoffEEShared.h"
     11#include <Carbon/Carbon.h>
    1112
    12 
    13 ICeCoffEETrigger *ICCF_sharedTrigger = nil;
     13static ICeCoffEETrigger *ICCF_sharedTrigger = nil;
    1414
    1515@implementation ICeCoffEETrigger
    1616
    17 - (id)initForEvent:(NSEvent *)anEvent onTarget:(NSText<NSTextInput> *)aTarget;
     17- (id)initForEvent:(NSEvent *)anEvent onTarget:(NSView<NSTextInput> *)aTarget;
    1818{
    1919    if ( (self = [super init]) != nil) {
    2020        target = [aTarget retain];
    2121        event = [anEvent retain];
    22         characterIndex = [aTarget characterIndexForPoint: [[aTarget window] convertBaseToScreen: [anEvent locationInWindow]]];
    23         timer = [NSTimer scheduledTimerWithTimeInterval: TicksToEventTime(GetDblTime())
     22        unsigned characterIndex = [aTarget characterIndexForPoint:
     23                                   [[aTarget window] convertBaseToScreen: [anEvent locationInWindow]]];
     24        range = [aTarget selectedRange];
     25        ICLog(@"ICeCoffEETrigger characterIndex %u selectedRange %@", characterIndex, NSStringFromRange(range));
     26        if (range.location == NSNotFound || range.length == 0 ||
     27            !NSLocationInRange(characterIndex, range)) {
     28            range.location = characterIndex;
     29            range.length = 0;
     30        }
     31        // no typical definition of Command-Option-double-click, so we don't need to delay
     32        NSTimeInterval interval = ([anEvent modifierFlags] & NSAlternateKeyMask) ? 0 :
     33                                    TicksToEventTime(GetDblTime());
     34        timer = [NSTimer scheduledTimerWithTimeInterval: interval
    2435                                                 target: self
    2536                                               selector: @selector(timerFired:)
     
    3041}
    3142
    32 + (void)setTriggerForEvent:(NSEvent *)anEvent onTarget:(NSText<NSTextInput> *)aTarget;
     43+ (void)setTriggerForEvent:(NSEvent *)anEvent onTarget:(NSView<NSTextInput> *)aTarget;
    3344{
    3445    ICCF_sharedTrigger = [[self alloc] initForEvent: anEvent onTarget: aTarget];
    3546    [ICCF_sharedTrigger release];
     47    ICLog(@"set %@", ICCF_sharedTrigger);
    3648}
    3749
    3850- (void)dealloc;
    3951{
     52    ICLog(@"DEALLOC %@", self);
    4053    timer = nil;
    4154    [target release];
     
    4356    [event release];
    4457    event = nil;
    45     ICLog(@"%@ dealloc", self);
    4658    [super dealloc];
    4759}
    4860
    49 - (void)timerFired:(NSTimer *)timer;
     61- (void)timerFired:(NSTimer *)aTimer;
    5062{
    5163    ICCF_sharedTrigger = nil;
    52     [target setSelectedRange: NSMakeRange(characterIndex, 0)];
    53     ICCF_LaunchURLFromTextView(target, event);
    5464}
    5565
    5666- (void)cancel;
    5767{
     68    ICLog(@"%@ cancelling", self);
    5869    ICCF_sharedTrigger = nil;
    5970    [timer invalidate]; // we get dealloced inside here, so don't do anything else
    6071}
    6172
     73+ (BOOL)cancel;
     74{
     75    if (ICCF_sharedTrigger == nil)
     76        return NO;
     77   
     78    [ICCF_sharedTrigger cancel];
     79    return YES;
     80}
     81
     82- (NSString *)description;
     83{
     84    return [NSString stringWithFormat: @"<%@ on %@ for %@ %@>", [self className],
     85            target, event, NSStringFromRange(range)];
     86}
     87
    6288@end
Note: See TracChangeset for help on using the changeset viewer.