]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/cocoa/windows/windows.factor
use radix literals
[factor.git] / basis / cocoa / windows / windows.factor
old mode 100755 (executable)
new mode 100644 (file)
index 74a181f..4f18ade
@@ -1,38 +1,41 @@
 ! Copyright (C) 2006, 2007 Slava Pestov
 ! See http://factorcode.org/license.txt for BSD license.
 USING: arrays kernel math cocoa cocoa.messages cocoa.classes
-sequences math.bitfields ;
+sequences math.bitwise ;
 IN: cocoa.windows
 
-: NSBorderlessWindowMask     0 ; inline
-: NSTitledWindowMask         1 ; inline
-: NSClosableWindowMask       2 ; inline
-: NSMiniaturizableWindowMask 4 ; inline
-: NSResizableWindowMask      8 ; inline
+! Window styles
+CONSTANT: NSBorderlessWindowMask           0
+CONSTANT: NSTitledWindowMask               1
+CONSTANT: NSClosableWindowMask             2
+CONSTANT: NSMiniaturizableWindowMask       4
+CONSTANT: NSResizableWindowMask            8
+CONSTANT: NSTexturedBackgroundWindowMask 256
 
-: NSBackingStoreRetained    0 ; inline
-: NSBackingStoreNonretained 1 ; inline
-: NSBackingStoreBuffered    2 ; inline
+! Additional panel-only styles 
+CONSTANT: NSUtilityWindowMask       16
+CONSTANT: NSDocModalWindowMask      64
+CONSTANT: NSNonactivatingPanelMask 128
+CONSTANT: NSHUDWindowMask    0x1000
 
-: standard-window-type
-    {
-        NSTitledWindowMask
-        NSClosableWindowMask
-        NSMiniaturizableWindowMask
-        NSResizableWindowMask
-    } flags ; inline
+CONSTANT: NSBackingStoreRetained    0
+CONSTANT: NSBackingStoreNonretained 1
+CONSTANT: NSBackingStoreBuffered    2
 
-: <NSWindow> ( rect -- window )
-    NSWindow -> alloc swap
-    standard-window-type NSBackingStoreBuffered 1
+: <NSWindow> ( rect style class -- window )
+    [ -> alloc ] curry 2dip NSBackingStoreBuffered 1
     -> initWithContentRect:styleMask:backing:defer: ;
 
-: <ViewWindow> ( view rect -- window )
-    <NSWindow> [ swap -> setContentView: ] keep
+: class-for-style ( style -- NSWindow/NSPanel )
+    0x1ef0 bitand zero? NSWindow NSPanel ? ;
+
+: <ViewWindow> ( view rect style -- window )
+    dup class-for-style <NSWindow> [ swap -> setContentView: ] keep
     dup dup -> contentView -> setInitialFirstResponder:
     dup 1 -> setAcceptsMouseMovedEvents:
     dup 0 -> setReleasedWhenClosed: ;
 
 : window-content-rect ( window -- rect )
-    NSWindow over -> frame rot -> styleMask
+    dup -> class swap
+    [ -> frame ] [ -> styleMask ] bi
     -> contentRectForFrameRect:styleMask: ;