Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
4ad85b9
Remove deprecated build settings.
tiennou Aug 31, 2013
384f237
Make all localized `.strings` files UTF-16.
tiennou Aug 31, 2013
b72aae2
Empty localized file.
tiennou Aug 31, 2013
69be4db
Move definition around.
tiennou Aug 31, 2013
9aeca8f
Move definition around.
tiennou Aug 31, 2013
0069856
Fix weird selector.
tiennou Aug 31, 2013
32412f5
Unused statement.
tiennou Aug 31, 2013
20319f2
Remove `(SEL)` casts, ARC doesn't like them.
tiennou Aug 31, 2013
b8774cd
Make that alloc-init call more straightforward.
tiennou Aug 31, 2013
88fc0c5
Assignment of a newly-created object to a `__weak` variable looks wrong.
tiennou Aug 31, 2013
f9e2dbf
Use the block-based call instead of the selector-based one.
tiennou Aug 31, 2013
ff5a7a4
Move the panel around so it's not behind the menu bar.
tiennou Aug 31, 2013
6bd37d3
Silence `-performSelector:` warnings.
tiennou Aug 31, 2013
7bedf08
Kill horror localization macro, and try to provide a decent fallback.
tiennou Aug 31, 2013
b7e6c0e
Kill unused macro.
tiennou Aug 31, 2013
35a2c73
Use our own fork for VDKQueue.
tiennou Aug 31, 2013
b37f19f
Update VDKQueue.
tiennou Aug 31, 2013
5d1ff69
Got that URL wrong.
tiennou Aug 31, 2013
f42981c
Merge remote-tracking branch 'quicksilver/master' into warning-frenzy
tiennou Sep 10, 2013
ccbbd7f
Leftovers.
tiennou Sep 10, 2013
148ef7c
Fix the never-quitable QS bug I introduced in b8774cdd0c3c22bea4b4f3e…
tiennou Sep 10, 2013
00f94e7
NSApp doesn't have a `beginSheetModalForWindow:` method.
tiennou Sep 12, 2013
4e5c8c2
Log the exception too, that's useful.
tiennou Sep 15, 2013
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[submodule "Quicksilver/Code-External/VDKQueue"]
path = Quicksilver/Code-External/VDKQueue
url = git://github.com/bdkjones/VDKQueue.git
url = https://github.com/quicksilver/VDKQueue.git
[submodule "Quicksilver/Code-External/DisableSubviews"]
path = Quicksilver/Code-External/DisableSubviews
url = git://github.com/ardalahmet/DisableSubviews.git
2 changes: 2 additions & 0 deletions Quicksilver/Code-App/QSApp.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ extern BOOL QSApplicationCompletedLaunch;
- (void)setGlobalKeyEquivalentTarget:(NSResponder *)value;
- (void)addEventDelegate:(id)eDelegate;
- (void)removeEventDelegate:(id)eDelegate;

- (void)qs_beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow completionHandler:(void (^)(NSInteger result))completionHandler;
@end
11 changes: 11 additions & 0 deletions Quicksilver/Code-App/QSApp.m
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
#import "QSProcessMonitor.h"
#import "NSEvent+BLTRExtensions.h"

typedef void (^QSModalSessionBlock)(NSInteger result);

BOOL QSApplicationCompletedLaunch = NO;

@interface NSObject (QSAppDelegateProtocols)
Expand Down Expand Up @@ -158,4 +160,13 @@ - (BOOL)isPrerelease {
return releaseLevel > 0;
}

- (void)qs_sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo {
QSModalSessionBlock completionHandler = (__bridge_transfer QSModalSessionBlock)contextInfo;
completionHandler(returnCode);
}

- (void)qs_beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow completionHandler:(QSModalSessionBlock)completionHandler {
[self beginSheet:sheet modalForWindow:docWindow modalDelegate:self didEndSelector:@selector(qs_sheetDidEnd:returnCode:contextInfo:) contextInfo:(__bridge_retained void *)([completionHandler copy])];
}

@end
4 changes: 2 additions & 2 deletions Quicksilver/Code-App/QSController.m
Original file line number Diff line number Diff line change
Expand Up @@ -282,8 +282,7 @@ - (IBAction)unsureQuit:(id)sender {

QSWindow *quitWindow = nil;
if (!quitWindowController) {
quitWindowController = [NSWindowController alloc];
[quitWindowController initWithWindowNibName:@"QuitConfirm" owner:quitWindowController];
quitWindowController = [[NSWindowController alloc] initWithWindowNibName:@"QuitConfirm"];

quitWindow = (QSBorderlessWindow *)[quitWindowController window];
[quitWindow setLevel:kCGPopUpMenuWindowLevel+1];
Expand Down Expand Up @@ -1113,6 +1112,7 @@ - (void)registerForErrors {
}

- (BOOL)exceptionHandler:(NSExceptionHandler *)sender shouldLogException:(NSException *)exception mask:(NSUInteger)aMask {
NSLog(@"Exception raised: %@", exception);
[exception printStackTrace];
return NO;
} // mask is NSLog<exception type>Mask, exception's userInfo has stack trace for key NSStackTraceKey
Expand Down
3 changes: 3 additions & 0 deletions Quicksilver/Code-App/QSModifierKeyEvents.m
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,10 @@ - (void)setModifierActivationMask:(NSUInteger)value {


- (void)sendAction {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[self.target performSelector:self.action withObject:nil];
#pragma clang diagnostic pop
}

- (BOOL)checkForModifierTap {
Expand Down
1 change: 0 additions & 1 deletion Quicksilver/Code-App/QSTriggersPrefPane.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@
- (void)reloadFilters;

- (void)showTrigger:(QSTrigger *)trigger;
- (BOOL)editTriggerCommand:(QSTrigger *)trigger callback:(SEL)aSelector;
- (void)showTriggerGroupWithIdentifier:(NSString *)groupID;

- (id)preferencesSplitView;
Expand Down
87 changes: 47 additions & 40 deletions Quicksilver/Code-App/QSTriggersPrefPane.m
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
#import "QSTableView.h"
#import "QSOutlineView.h"

#import "QSApp.h"

@implementation QSTriggersArrayController
- (void)prepareContent {}
@end
Expand Down Expand Up @@ -275,7 +277,15 @@ - (void)setSelectedTrigger:(QSTrigger *)newSelectedTrigger {

// Enabling/disabling of the 'edit' button is done programmatically within the outlineClicked: method
- (IBAction)editCommand:(id)sender {
[self editTriggerCommand:selectedTrigger callback:@selector(editSheetDidEnd:returnCode:contextInfo:)];
[commandEditor setCommand:[selectedTrigger command]];
[NSApp qs_beginSheet:commandEditor.window modalForWindow:self.mainView.window completionHandler:^(NSInteger result) {
QSCommand *command = [commandEditor representedCommand];
if (command) {
[selectedTrigger setCommand:command];
[[QSTriggerCenter sharedInstance] triggerChanged:selectedTrigger];
}
[commandEditor.window orderOut:self];
}];
}

- (IBAction)showTriggerInfo:(id)sender {
Expand All @@ -288,41 +298,6 @@ - (IBAction)hideTriggerInfo:(id)sender {
[optionsDrawer close:sender];
}

- (BOOL)editTriggerCommand:(QSTrigger *)trigger callback:(SEL)aSelector {
//[[optionsDrawer contentView] window] //
[commandEditor setCommand:[trigger command]];
[NSApp beginSheet:[commandEditor window] modalForWindow:[[self mainView] window] modalDelegate:self didEndSelector:aSelector contextInfo:CFBridgingRetain(trigger)];
return YES;
}

- (void)editSheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo {
QSCommand *command = [commandEditor representedCommand];
QSTrigger *trigger = (__bridge QSTrigger *)contextInfo;
if (command) {
[trigger setCommand:command];
[[QSTriggerCenter sharedInstance] triggerChanged:trigger];
}
[sheet orderOut:self];
}

- (void)addSheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo {
QSCommand *command = [commandEditor representedCommand];
QSTrigger *trigger = (__bridge QSTrigger*)contextInfo;
if (command) {
// if (VERBOSE) NSLog(@"command %@", command);
[trigger setCommand:command];
[[QSTriggerCenter sharedInstance] triggerChanged:trigger];
} else {
[[QSTriggerCenter sharedInstance] removeTrigger:trigger];
// [self updateTriggerArray];
}
// select the trigger (its position has changed since adding the trigger)
NSUInteger selectTriggerIndex = [[triggerArrayController arrangedObjects] indexOfObject:trigger];
if (selectTriggerIndex != NSNotFound) {
[triggerTable selectRowIndexes:[NSIndexSet indexSetWithIndex:selectTriggerIndex] byExtendingSelection:NO];
}
[sheet orderOut:self];
}

- (IBAction)addTrigger:(id)sender {
if (!mOptionKeyIsDown)
Expand Down Expand Up @@ -358,14 +333,38 @@ - (IBAction)addTrigger:(id)sender {
[triggerTable editColumn:[triggerTable columnWithIdentifier:@"command"]
row:row withEvent:[NSApp currentEvent] select:YES];
} else if (!mOptionKeyIsDown) {
[self editTriggerCommand:trigger
callback:@selector(addSheetDidEnd:returnCode:contextInfo:)];
[commandEditor setCommand:[selectedTrigger command]];
[NSApp qs_beginSheet:commandEditor.window modalForWindow:self.mainView.window completionHandler:^(NSInteger result) {
QSCommand *command = [commandEditor representedCommand];
if (command) {
[selectedTrigger setCommand:command];
[[QSTriggerCenter sharedInstance] triggerChanged:selectedTrigger];
} else {
[[QSTriggerCenter sharedInstance] removeTrigger:selectedTrigger];
// [self updateTriggerArray];
}
// select the trigger (its position has changed since adding the trigger)
NSUInteger selectTriggerIndex = [[triggerArrayController arrangedObjects] indexOfObject:selectedTrigger];
if (selectTriggerIndex != NSNotFound) {
[triggerTable selectRowIndexes:[NSIndexSet indexSetWithIndex:selectTriggerIndex] byExtendingSelection:NO];
}
[commandEditor.window orderOut:self];
}];
}
}

- (IBAction)editTrigger:(id)sender {
if ([triggerTable selectedRow] >= 0) {
[self editTriggerCommand:[triggerArray objectAtIndex:[triggerTable selectedRow]] callback:@selector(editSheetDidEnd:returnCode:contextInfo:) ];
QSTrigger *editedTrigger = [triggerArray objectAtIndex:[triggerTable selectedRow]];
[commandEditor setCommand:[editedTrigger command]];
[NSApp qs_beginSheet:commandEditor.window modalForWindow:self.mainView.window completionHandler:^(NSInteger result) {
QSCommand *command = [commandEditor representedCommand];
if (command) {
[editedTrigger setCommand:command];
[[QSTriggerCenter sharedInstance] triggerChanged:editedTrigger];
}
[commandEditor.window orderOut:self];
}];
}
}

Expand Down Expand Up @@ -517,8 +516,16 @@ - (BOOL)outlineView:(NSOutlineView *)outlineView shouldEditTableColumn:(NSTableC
return YES;
}
if ([[theSelectedTrigger type] isEqualToString:@"QSGroupTrigger"]) return YES;
[commandEditor setCommand:[theSelectedTrigger command]];
[NSApp qs_beginSheet:commandEditor.window modalForWindow:self.mainView.window completionHandler:^(NSInteger result) {
QSCommand *command = [commandEditor representedCommand];
if (command) {
[theSelectedTrigger setCommand:command];
[[QSTriggerCenter sharedInstance] triggerChanged:theSelectedTrigger];
}
[commandEditor.window orderOut:self];
}];

[self editTriggerCommand:theSelectedTrigger callback:@selector(editSheetDidEnd:returnCode:contextInfo:)];
return NO;
}
return NO;
Expand Down
2 changes: 1 addition & 1 deletion Quicksilver/Code-External/VDKQueue
Submodule VDKQueue updated 1 files
+4 −4 VDKQueue.m
5 changes: 4 additions & 1 deletion Quicksilver/Code-QuickStepCore/QSAction.m
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,9 @@ - (QSObject *)performOnDirectObject:(QSObject *)dObject indirectObject:(QSObject

BOOL reverseArgs = [[dict objectForKey:kActionReverseArguments] boolValue];
SEL selector = NSSelectorFromString([dict objectForKey:kActionSelector]);


#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
if (!selector)
return [provider performAction:(QSAction *)self directObject:dObject indirectObject:iObject];
else if ([self argumentCount] == 2)
Expand All @@ -342,6 +344,7 @@ - (QSObject *)performOnDirectObject:(QSObject *)dObject indirectObject:(QSObject
return [provider performSelector:selector withObject:dObject];
else
return [provider performSelector:selector];
#pragma clang diagnostic pop
}
return nil;
}
Expand Down
2 changes: 0 additions & 2 deletions Quicksilver/Code-QuickStepCore/QSMacros.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#import <AvailabilityMacros.h>

#define ESS(x) (x == 1?@"":@"s")
//#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
// #define foreach(x, y) id x; NSEnumerator *rwEnum = [y objectEnumerator]; while(x = [rwEnum nextObject])
//#else
Expand All @@ -14,7 +13,6 @@
#define DAYS 86400.0f
#define MINUTES 60.0f
#define HOURS 3600.0f
#define mSHARED_INSTANCE_CLASS_METHOD + (id)sharedInstance {static id _sharedInstance; if (!_sharedInstance) _sharedInstance = [[[self class] alloc] init]; return _sharedInstance;}
#define QSLog(s, ...) \
[MLog logFile:__FILE__ lineNumber:__LINE__ \
format:(s), ##__VA_ARGS__]
3 changes: 3 additions & 0 deletions Quicksilver/Code-QuickStepCore/QSObjCMessageSource.m
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,14 @@ - (QSObject *)sendMessage:(QSObject *)dObject {

id result;
id argument = nil;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
if (argument = messageInfo[kActionArgument]) {
result = [target performSelector:selector withObject:argument];
} else {
result = [target performSelector:selector];
}
#pragma clang diagnostic pop
if (returnsObject && [result isKindOfClass:[QSBasicObject class]]) return result;
return nil;
}
Expand Down
1 change: 1 addition & 0 deletions Quicksilver/Code-QuickStepCore/QSObject.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ typedef struct _QSObjectFlags {
- (void)setCache:(NSMutableDictionary *)aCache;
- (BOOL)isProxyObject;
- (QSObject *)resolvedObject;

// This private method is required for QSProxyObject.m
- (id)_safeObjectForType:(id)aKey;

Expand Down
4 changes: 2 additions & 2 deletions Quicksilver/Code-QuickStepCore/QSObject.m
Original file line number Diff line number Diff line change
Expand Up @@ -611,11 +611,11 @@ @implementation QSObject (Hierarchy)

- (QSObject *)parent {
QSObject * parent = nil;

id handler = nil;
if (handler = [self handlerForSelector:@selector(parentOfObject:)])
parent = [handler parentOfObject:self];

if (!parent)
parent = [objectDictionary objectForKey:[meta objectForKey:kQSObjectParentID]];
return parent;
Expand Down
17 changes: 15 additions & 2 deletions Quicksilver/Code-QuickStepCore/QSRegistry.m
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ + (void)setObject:(id)object forKey:(NSString *)key inTable:(NSString *)table {
- (void)setObject:(id)object forKey:(NSString *)key inTable:(NSString *)table {
[[self tableNamed:table] setObject:object forKey:key];
}

- (id)valueForKey:(NSString *)key inTable:(NSString *)table {
if (key == nil) return nil;
return [[self tableNamed:table] objectForKey:key];
Expand Down Expand Up @@ -430,7 +431,12 @@ - (NSMutableDictionary *)objectHandlers {return [self retainedTableNamed:kQSObje
@end

@implementation NSObject (InstancePerform)
+ (id)performSelectorWithInstance:(SEL)selector {return [[QSReg getClassInstance:NSStringFromClass([self class])] performSelector:selector];}
+ (id)performSelectorWithInstance:(SEL)selector {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
return [[QSReg getClassInstance:NSStringFromClass([self class])] performSelector:selector];
#pragma clang diagnostic pop
}
@end

@implementation QSRegistry (Mediators)
Expand All @@ -440,13 +446,20 @@ - (id)getMediator:(NSString *)name {
NSBundle *bundle = [NSBundle bundleWithIdentifier:[header objectForKey:@"bundle"]];
if (bundle && ![bundle isLoaded]) [bundle load];
SEL sel = NSSelectorFromString(selector);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
return (sel) ? [self performSelector:sel withObject:name] : nil;
#pragma clang diagnostic pop
}
- (id)getMediatorID:(NSString *)name {
NSDictionary *header = [[self tableNamed:@"QSRegistryHeaders"] objectForKey:name];
NSString *selector = [header objectForKey:@"registryPreferredSelector"];
NSBundle *bundle = [NSBundle bundleWithIdentifier:[header objectForKey:@"bundle"]];
if (bundle && ![bundle isLoaded]) [bundle load];
SEL sel = NSSelectorFromString(selector);
return (sel && [name respondsToSelector:@selector(sel)]) ? [self performSelector:sel withObject:name] : nil;}
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
return (sel && [name respondsToSelector:@selector(sel)]) ? [self performSelector:sel withObject:name] : nil;
#pragma clang diagnostic pop
}
@end
3 changes: 3 additions & 0 deletions Quicksilver/Code-QuickStepCore/QSTask.m
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,10 @@ - (void)dealloc {
- (void)cancel:(id)sender {
if (cancelTarget) {
NSLog(@"Cancel Task: %@", self);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[cancelTarget performSelector:cancelAction withObject:sender];
#pragma clang diagnostic pop
}
}

Expand Down
3 changes: 1 addition & 2 deletions Quicksilver/Code-QuickStepCore/QSTriggerCenter.m
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,7 @@ - (void)dealloc {
[nc removeObserver:self name:@"InterfaceActivated" object:nil];
[nc removeObserver:self name:@"InterfaceDeactivated" object:nil];
triggers = nil;
triggersDict, triggersDict = nil,
self;
triggersDict = nil;
}

- (void)loadTriggers {
Expand Down
6 changes: 6 additions & 0 deletions Quicksilver/Code-QuickStepEffects/QSMoveHelper.m
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,10 @@ - (void)_doAnimation {
if (_percent == 1.0f) {
[self _stopAnimation];
[self _finishAnimation];
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[[self target] performSelector:[self action]];
#pragma clang diagnostic pop
} else {
usleep(10000);
}
Expand Down Expand Up @@ -100,7 +103,10 @@ - (void)_doAnimation {
[_window setAlphaValue:_endAlpha];
[_window setFrame:_endFrame display:YES];
[self _stopAnimation];
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[[self target] performSelector:[self action]];
#pragma clang diagnostic pop
} else {
[_window setFrame:QSBlendRects(_startFrame, _endFrame, _percent) display:NO];
[_window setAlphaValue: _startAlpha+_percent*(_endAlpha-_startAlpha)];
Expand Down
Loading