2012-11-08 3 views
0

이미지 편집기 창이 있습니다. 이벤트를 드래그 한 후, 윈도우를 다시 돌려주는 미니어처에 드롭 한 후 왼쪽 하단 모서리에있는 미니어처로 내 윈도우를 최소화합니다. 미니어처 위에 커서를 operationNotAllowedCursor으로 바꿉니다.NSWindow가 클릭 할 때까지 응답하지 않습니다.

문제는 다음과 같습니다. 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

는 변종의 많은 후 나는 답을 발견했다. 끌기 소스처럼 작동하는 영역은 NSView이어야하며 NSButton의 하위 클래스가 아니어야합니다.

필자의 Dragging Source 클래스를 다시 작성했습니다. 이제 모든 것이 정상적으로 작동합니다.