From 9d694a1589bc2a2ddb29c86e049bd8db01d368ce Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Wed, 30 Apr 2014 16:23:00 -0700 Subject: [PATCH] Fixed: setContentSize doesn't work when called several times Previously when calling setContentSize several times, the final frame of the view was wrong. I removed the animation as well. This doesn't work, and need a lot more of implementation. --- AppKit/CPPopover.j | 3 +-- AppKit/_CPPopoverWindow.j | 17 ++++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/AppKit/CPPopover.j b/AppKit/CPPopover.j index 6685ca92c..e382b1a58 100644 --- a/AppKit/CPPopover.j +++ b/AppKit/CPPopover.j @@ -150,8 +150,7 @@ var CPPopoverDelegate_popover_willShow_ = 1 << 0, */ - (void)setContentSize:(CGSize)aSize { - [[_contentViewController view] setFrameSize:aSize]; - [_popoverWindow updateFrame]; + [_popoverWindow updateFrameWithSize:aSize]; } /*! diff --git a/AppKit/_CPPopoverWindow.j b/AppKit/_CPPopoverWindow.j index 47ffea603..ddff584c5 100644 --- a/AppKit/_CPPopoverWindow.j +++ b/AppKit/_CPPopoverWindow.j @@ -170,7 +170,9 @@ var _CPPopoverWindow_shouldClose_ = 1 << 4, if (![_targetView window]) return; - [self updateFrame]; + var point = [self computeOriginFromRect:[_targetView bounds] ofView:_targetView preferredEdge:[_windowView preferredEdge]]; + + [self setFrameOrigin:point]; } } @@ -367,17 +369,18 @@ var _CPPopoverWindow_shouldClose_ = 1 << 4, /*! @ignore */ -- (void)updateFrame +- (void)updateFrameWithSize:(CGSize)aSize { - var rect = CGRectMakeCopy([self frameRectForContentRect:[[self contentView] frame]]), - point = [self computeOriginFromRect:[_targetView bounds] ofView:_targetView preferredEdge:[_windowView preferredEdge]]; + var rect = CGRectMakeZero(); + rect.size = aSize; + rect.origin = [[self contentView] frameOrigin]; - rect.origin = point; + [self setFrame:[self frameRectForContentRect:rect]]; - [self setFrame:rect display:YES animate:_animates]; + var point = [self computeOriginFromRect:[_targetView bounds] ofView:_targetView preferredEdge:[_windowView preferredEdge]]; + [self setFrameOrigin:point]; } - #pragma mark - #pragma mark Actions