我有一个图像编辑器窗口。在拖动事件之后,我将窗口最小化到左下角的缩小版,然后放回微型I返回窗口。在缩影上方,我将光标更改为operationNotAllowedCursor
。
问题是:NSWindow
在第一个draggingEntered
之后(在第二个之后,更多的一切都很好)之后不会改变微型上的光标。此外,在缩小微型NSWindow之后,在点击任何区域之前不会收到任何事件。
最小化窗口的代码(在NSWindow子类中):
-(void)minimize
{
const double miniSize = 240;
MSDraggingMiniature *mini = [[MSDraggingMiniature alloc] init];
[mini setMiniImage:[[MSScreenMaker getInstance] makeEditorScreen:(int)[self windowNumber]]];
_mainContentView = self.contentView;
_oldFrame = [self frame];
[self setStyleMask:NSBorderlessWindowMask];
self.contentView = mini;
NSRect drect = [[self screen] frame];
double width, height;
if (self.frame.size.width < self.frame.size.height) {
height = miniSize;
width = self.frame.size.width / self.frame.size.height * miniSize;
} else {
width = miniSize;
height = self.frame.size.height / self.frame.size.width * miniSize;
}
_anima = MSEditorResizeAnimationMinimize;
[self setFrame:NSMakeRect(drect.origin.x + 20, drect.origin.y + 20 , width, height) display:YES animate:YES];
}
-(void)deminimize
{
self.contentView = _mainContentView;
[self setStyleMask:NSTitledWindowMask];
_anima = MSEditorResizeAnimationDeminimize;
[self setFrame:_oldFrame display:YES animate:YES];
[self makeKeyWindow];
[self makeMainWindow];
}
答案 0 :(得分:0)
经过大量变种,我找到了答案。看起来像Dragging Source这样的区域必须只是NSView
,而不是我NSButton
的子类。
我重写了我的Dragging Source类 - 现在一切正常。