Skip to content

Instantly share code, notes, and snippets.

@peterflynn
Created April 21, 2016 21:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save peterflynn/11de6d3beb48cc3fb12ec7ec0eca5173 to your computer and use it in GitHub Desktop.
Save peterflynn/11de6d3beb48cc3fb12ec7ec0eca5173 to your computer and use it in GitHub Desktop.
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