Created
April 21, 2016 21:35
-
-
Save peterflynn/11de6d3beb48cc3fb12ec7ec0eca5173 to your computer and use it in GitHub Desktop.
Patchfile for https://openradar.appspot.com/radar?id=4992856901025792 (NSPopover bug)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/Base.lproj/Main.storyboard b/Base.lproj/Main.storyboard | |
index 5344907..1f78691 100644 | |
--- a/Base.lproj/Main.storyboard | |
+++ b/Base.lproj/Main.storyboard | |
@@ -1,7 +1,7 @@ | |
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |
-<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="9060" systemVersion="14F1021" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS"> | |
+<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="9532" systemVersion="15C50" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS"> | |
<dependencies> | |
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9060"/> | |
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9532"/> | |
</dependencies> | |
<scenes> | |
<!--Application--> | |
@@ -499,10 +499,22 @@ | |
<action selector="showPopoverAction:" target="XfG-lQ-9wD" id="go1-9h-icb"/> | |
</connections> | |
</button> | |
+ <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GFn-3O-osL"> | |
+ <rect key="frame" x="17" y="40" width="73" height="32"/> | |
+ <buttonCell key="cell" type="push" title="Move" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Fhz-p6-2wA"> | |
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> | |
+ <font key="font" metaFont="system"/> | |
+ </buttonCell> | |
+ <connections> | |
+ <action selector="movePopoverAction:" target="XfG-lQ-9wD" id="E8k-yG-MUj"/> | |
+ </connections> | |
+ </button> | |
</subviews> | |
</view> | |
<connections> | |
<outlet property="animatesCheckbox" destination="jgE-QY-9B8" id="c69-wd-OLL"/> | |
+ <outlet property="moveButton" destination="GFn-3O-osL" id="aMp-Hj-m1l"/> | |
+ <outlet property="popoverButton" destination="268-ex-7BC" id="PM7-Ve-J88"/> | |
<outlet property="popoverPosition" destination="0T0-o6-xmB" id="r3n-7G-hnD"/> | |
<outlet property="popoverType" destination="xL6-IW-ef1" id="5vt-46-FQ9"/> | |
<outlet property="useCustomDetachedWindow" destination="lnL-Xb-cfI" id="d1Z-j6-Kqe"/> | |
diff --git a/MyViewController.m b/MyViewController.m | |
index 19c1842..6b456ed 100644 | |
--- a/MyViewController.m | |
+++ b/MyViewController.m | |
@@ -16,6 +16,9 @@ | |
@property (weak) IBOutlet NSButton *animatesCheckbox; | |
@property (weak) IBOutlet NSButton *useCustomDetachedWindow; | |
+@property (weak) IBOutlet NSButton *popoverButton; | |
+@property (weak) IBOutlet NSButton *moveButton; | |
+ | |
@property (strong) NSPopover *myPopover; | |
@property (strong) MyViewController *popoverViewController; | |
@@ -70,6 +73,9 @@ | |
_detachedHUDWindow = [[NSPanel alloc] initWithContentRect:rect styleMask:styleMask backing:NSBackingStoreBuffered defer:YES]; | |
self.detachedHUDWindow.contentViewController = self.popoverViewController; | |
self.detachedHUDWindow.releasedWhenClosed = NO; | |
+ | |
+ // Trigger this action on mousedown, not mouseup (necessary for repro) | |
+ [self.moveButton sendActionOn:NSLeftMouseDownMask]; | |
} | |
// ------------------------------------------------------------------------------- | |
@@ -101,7 +107,8 @@ | |
// AppKit will close the popover when the user interacts with a user interface element outside the popover. | |
// note that interacting with menus or panels that become key only when needed will not cause a transient popover to close. | |
- self.myPopover.behavior = NSPopoverBehaviorTransient; | |
+ self.myPopover.behavior = NSPopoverBehaviorSemitransient; // BUG | |
+// self.myPopover.behavior = NSPopoverBehaviorTransient; // no bug | |
// so we can be notified when the popover appears or closes | |
self.myPopover.delegate = self; | |
@@ -111,6 +118,14 @@ | |
// ------------------------------------------------------------------------------- | |
// showPopoverAction:sender | |
// ------------------------------------------------------------------------------- | |
+- (IBAction)movePopoverAction:(id)sender | |
+{ | |
+ // Move popoverButton (which the NSPopover is anchored to) to a different location in window | |
+ NSRect frame = self.popoverButton.frame; | |
+ frame.origin.x -= 20; | |
+ self.popoverButton.frame = frame; | |
+} | |
+ | |
- (IBAction)showPopoverAction:(id)sender | |
{ | |
switch (self.popoverType.selectedRow) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment