Browse Source

Popovers now appear to work

pull/1/head
Grant Limberg 9 years ago
parent
commit
3d9a5a4f91
  1. 151
      macui/ZeroTier One/AppDelegate.m

151
macui/ZeroTier One/AppDelegate.m

@ -114,75 +114,114 @@
}
- (void)showNetworks {
if(self.statusItem.button != nil) {
NSStatusBarButton *button = self.statusItem.button;
[self.networkListPopover showRelativeToRect:button.bounds
ofView:button
preferredEdge:NSMinYEdge];
if(self.transientMonitor == nil) {
self.transientMonitor =
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDown|NSRightMouseDown|NSOtherMouseDown)
handler:^(NSEvent * _Nonnull e) {
[NSEvent removeMonitor:self.transientMonitor];
self.transientMonitor = nil;
[self.networkListPopover close];
}];
}
NSButton *button = nil;
NSRect frame;
if ([self.statusItem respondsToSelector:@selector(button)]) {
button = self.statusItem.button;
frame = button.bounds;
} else if ([self.statusItem respondsToSelector:@selector(_button)]) {
button = [self.statusItem performSelector:@selector(_button)];
frame = button.bounds;
} else {
NSLog(@"Can't get view. Uh oh.");
return;
}
[self.networkListPopover showRelativeToRect:frame
ofView:button
preferredEdge:NSMinYEdge];
if(self.transientMonitor == nil) {
self.transientMonitor =
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDown|NSRightMouseDown|NSOtherMouseDown)
handler:^(NSEvent * _Nonnull e) {
[NSEvent removeMonitor:self.transientMonitor];
self.transientMonitor = nil;
[self.networkListPopover close];
}];
}
}
- (void)joinNetwork {
if(self.statusItem.button != nil) {
NSStatusBarButton *button = self.statusItem.button;
[self.joinNetworkPopover showRelativeToRect:button.bounds
ofView:button
preferredEdge:NSMinYEdge];
if(self.transientMonitor == nil) {
self.transientMonitor =
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDown|NSRightMouseDown|NSOtherMouseDown)
handler:^(NSEvent * _Nonnull e) {
[NSEvent removeMonitor:self.transientMonitor];
self.transientMonitor = nil;
[self.joinNetworkPopover close];
}];
}
NSButton *button = nil;
NSRect frame;
if ([self.statusItem respondsToSelector:@selector(button)]) {
button = self.statusItem.button;
frame = button.bounds;
} else if ([self.statusItem respondsToSelector:@selector(_button)]) {
button = [self.statusItem performSelector:@selector(_button)];
frame = button.bounds;
} else {
NSLog(@"Can't get view. Uh oh.");
return;
}
[self.joinNetworkPopover showRelativeToRect:button.bounds
ofView:button
preferredEdge:NSMinYEdge];
if(self.transientMonitor == nil) {
self.transientMonitor =
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDown|NSRightMouseDown|NSOtherMouseDown)
handler:^(NSEvent * _Nonnull e) {
[NSEvent removeMonitor:self.transientMonitor];
self.transientMonitor = nil;
[self.joinNetworkPopover close];
}];
}
}
- (void)showPreferences {
if(self.statusItem.button != nil) {
NSStatusBarButton *button = self.statusItem.button;
[self.preferencesPopover showRelativeToRect:button.bounds
ofView:button
preferredEdge:NSMinYEdge];
if(self.transientMonitor == nil) {
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDown|NSRightMouseDown|NSOtherMouseDown)
handler:^(NSEvent * _Nonnull e) {
[NSEvent removeMonitor:self.transientMonitor];
self.transientMonitor = nil;
[self.preferencesPopover close];
}];
}
NSButton *button = nil;
NSRect frame;
if ([self.statusItem respondsToSelector:@selector(button)]) {
button = self.statusItem.button;
frame = button.bounds;
} else if ([self.statusItem respondsToSelector:@selector(_button)]) {
button = [self.statusItem performSelector:@selector(_button)];
frame = button.bounds;
} else {
NSLog(@"Can't get view. Uh oh.");
return;
}
[self.preferencesPopover showRelativeToRect:button.bounds
ofView:button
preferredEdge:NSMinYEdge];
if(self.transientMonitor == nil) {
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDown|NSRightMouseDown|NSOtherMouseDown)
handler:^(NSEvent * _Nonnull e) {
[NSEvent removeMonitor:self.transientMonitor];
self.transientMonitor = nil;
[self.preferencesPopover close];
}];
}
}
- (void)showAbout {
if(self.statusItem.button != nil) {
NSStatusBarButton *button = self.statusItem.button;
[self.aboutPopover showRelativeToRect:button.bounds
ofView:button
preferredEdge:NSMinYEdge];
if(self.transientMonitor == nil) {
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDown|NSRightMouseDown|NSOtherMouseDown)
handler:^(NSEvent * _Nonnull e) {
[NSEvent removeMonitor:self.transientMonitor];
self.transientMonitor = nil;
[self.aboutPopover close];
}];
}
NSButton *button = nil;
NSRect frame;
if ([self.statusItem respondsToSelector:@selector(button)]) {
button = self.statusItem.button;
frame = button.bounds;
} else if ([self.statusItem respondsToSelector:@selector(_button)]) {
button = [self.statusItem performSelector:@selector(_button)];
frame = button.bounds;
} else {
NSLog(@"Can't get view. Uh oh.");
return;
}
[self.aboutPopover showRelativeToRect:button.bounds
ofView:button
preferredEdge:NSMinYEdge];
if(self.transientMonitor == nil) {
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDown|NSRightMouseDown|NSOtherMouseDown)
handler:^(NSEvent * _Nonnull e) {
[NSEvent removeMonitor:self.transientMonitor];
self.transientMonitor = nil;
[self.aboutPopover close];
}];
}
}
- (void)quit {

Loading…
Cancel
Save