PyObjC NSWindow Cascade Position

macOS では二つ目以降のウインドウは規則的にズレて表示される。
でも NSWindow は NSRect を指定して作成する、どうやっているのか。

cascadeTopLeftFromPoint: – Cocoa API解説(macOS/iOS)

そういうことか、解説ありがとう。
window を作った後に自分で移動するのね。

objc.super(MyWindow, self).initWithContentRect_styleMask_backing_defer_(
    frame,
    NSTitledWindowMask |
    NSClosableWindowMask |
    NSResizableWindowMask |
    NSMiniaturizableWindowMask,
    NSBackingStoreBuffered,
    False)
# Cascade Position
if len(NSApp.windows()) > 1:
    point = NSApp.keyWindow().cascadeTopLeftFromPoint_(NSZeroPoint)
    self.setFrameTopLeftPoint_(point)

で。

うん macOS アプリっぽくなった。
次は設定ダイアログの位置決めをどうするかだ。
小ネタでした。