cocoa: Syntax is funky, so regularize it by parsing CLASS: ; and METHOD: ; and COCOA-PROTOCOL: token.
							parent
							
								
									02008979d9
								
							
						
					
					
						commit
						9f0a1ed730
					
				|  | @ -5,11 +5,10 @@ core-graphics.types ; | |||
| IN: cocoa.tests | ||||
| 
 | ||||
| CLASS: Foo < NSObject | ||||
| [ | ||||
|     METHOD: void foo: NSRect rect [ | ||||
|         gc rect "x" set | ||||
|     ] | ||||
| ] | ||||
|     ] ; | ||||
| ; | ||||
| 
 | ||||
| : test-foo ( -- ) | ||||
|     Foo -> alloc -> init | ||||
|  | @ -24,9 +23,8 @@ CLASS: Foo < NSObject | |||
| { 102.0 } [ "x" get CGRect-h ] unit-test | ||||
| 
 | ||||
| CLASS: Bar < NSObject | ||||
| [ | ||||
|     METHOD: NSRect bar [ test-foo "x" get ] | ||||
| ] | ||||
|     METHOD: NSRect bar [ test-foo "x" get ] ; | ||||
| ; | ||||
| 
 | ||||
| { } [ | ||||
|     Bar [ | ||||
|  | @ -43,11 +41,10 @@ CLASS: Bar < NSObject | |||
| 
 | ||||
| ! Make sure that we can add methods | ||||
| CLASS: Bar < NSObject | ||||
| [ | ||||
|     METHOD: NSRect bar [ test-foo "x" get ] | ||||
|     METHOD: NSRect bar [ test-foo "x" get ] ; | ||||
| 
 | ||||
|     METHOD: int babb: int x [ x sq ] | ||||
| ] | ||||
|     METHOD: int babb: int x [ x sq ] ; | ||||
| ; | ||||
| 
 | ||||
| { 144 } [ | ||||
|     Bar [ | ||||
|  |  | |||
|  | @ -2,8 +2,8 @@ USING: help.markup help.syntax strings alien hashtables ; | |||
| IN: cocoa.subclassing | ||||
| 
 | ||||
| HELP: CLASS: | ||||
| { $syntax "CLASS: name < superclass protocols... [ imeth... ]" } | ||||
| { $values { "name" "a new class name" } { "superclass" "a superclass name" } { "protocols" "zero or more protocol names" } { "name" "a new class name" } { "imeth" "instance method definitions using " { $link POSTPONE: METHOD: } } } | ||||
| { $syntax "CLASS: name < superclass protocols... imeth... ;" } | ||||
| { $values { "name" "a new class name" } { "superclass" "a superclass name" } { "protocols" "zero or more protocol names" } { "imeth" "instance method definitions using " { $link POSTPONE: METHOD: } } } | ||||
| { $description "Defines a new Objective C class. Instance methods are defined with the " { $link POSTPONE: METHOD: } " parsing word." | ||||
| $nl | ||||
| "This word is preferred to calling " { $link define-objc-class } ", because it creates a class word in the " { $vocab-link "cocoa.classes" } " vocabulary at parse time, allowing code to refer to the class word in the same source file where the class is defined." } ; | ||||
|  | @ -11,7 +11,7 @@ $nl | |||
| { define-objc-class POSTPONE: CLASS: POSTPONE: METHOD: } related-words | ||||
| 
 | ||||
| HELP: METHOD: | ||||
| { $syntax "METHOD: return foo: type1 arg1 bar: type2 arg2 baz: ... [ body ]" } | ||||
| { $syntax "METHOD: return foo: type1 arg1 bar: type2 arg2 baz: ... [ body ] ;" } | ||||
| { $values { "return" "a C type name" } { "type1" "a C type name" } { "arg1" "a local variable name" } { "body" "arbitrary code" } } | ||||
| { $description "Defines a method inside of a " { $link POSTPONE: CLASS: } " form." } ; | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| ! Copyright (C) 2006, 2010 Slava Pestov, Joe Groff. | ||||
| ! See http://factorcode.org/license.txt for BSD license. | ||||
| USING: alien alien.parser alien.strings arrays assocs | ||||
| USING: accessors alien alien.parser alien.strings arrays assocs | ||||
| cocoa.messages cocoa.runtime combinators compiler.units fry | ||||
| io.encodings.utf8 kernel lexer locals locals.parser locals.types | ||||
| make namespaces parser sequences words ; | ||||
|  | @ -68,12 +68,18 @@ IN: cocoa.subclassing | |||
|     methods name redefine-objc-methods | ||||
|     name [ methods protocols superclass name (define-objc-class) ] import-objc-class ; | ||||
| 
 | ||||
| TUPLE: cocoa-protocol name ; | ||||
| C: <cocoa-protocol> cocoa-protocol | ||||
| 
 | ||||
| SYNTAX: COCOA-PROTOCOL: | ||||
|     scan-token <cocoa-protocol> suffix! ; | ||||
| 
 | ||||
| SYNTAX: CLASS: | ||||
|     scan-token | ||||
|     "<" expect | ||||
|     scan-token | ||||
|     "[" parse-tokens | ||||
|     \ ] parse-until define-objc-class ; | ||||
|     \ ; parse-until [ cocoa-protocol? ] partition | ||||
|     [ [ name>> ] map ] dip define-objc-class ; | ||||
| 
 | ||||
| : (parse-selector) ( -- ) | ||||
|     scan-token { | ||||
|  | @ -96,5 +102,5 @@ SYNTAX: CLASS: | |||
| SYNTAX: METHOD: | ||||
|     scan-c-type | ||||
|     parse-selector | ||||
|     parse-method-body [ swap ] 2dip 4array | ||||
|     parse-method-body [ swap ] 2dip 4array ";" expect | ||||
|     suffix! ; | ||||
|  |  | |||
|  | @ -7,13 +7,12 @@ FROM: alien.c-types => float ; | |||
| IN: tools.deploy.test.14 | ||||
| 
 | ||||
| CLASS: Bar < NSObject | ||||
| [ | ||||
|     METHOD: float bar: NSRect rect [ | ||||
|         rect origin>> [ x>> ] [ y>> ] bi + | ||||
|         rect size>> [ w>> ] [ h>> ] bi + | ||||
|         + | ||||
|     ] | ||||
| ] | ||||
|     ] ; | ||||
| ; | ||||
| 
 | ||||
| : main ( -- ) | ||||
|     Bar -> alloc -> init | ||||
|  |  | |||
|  | @ -232,10 +232,8 @@ M: cocoa-ui-backend system-alert | |||
|     ] [ 2drop ] if* ; | ||||
| 
 | ||||
| CLASS: FactorApplicationDelegate < NSObject | ||||
| [ | ||||
|     METHOD: void applicationDidUpdate: id obj | ||||
|     [ reset-thread-timer ] | ||||
| ] | ||||
|     METHOD: void applicationDidUpdate: id obj [ reset-thread-timer ] ; | ||||
| ; | ||||
| 
 | ||||
| : install-app-delegate ( -- ) | ||||
|     NSApp FactorApplicationDelegate install-delegate ; | ||||
|  |  | |||
|  | @ -22,27 +22,27 @@ IN: ui.backend.cocoa.tools | |||
| 
 | ||||
| ! Handle Open events from the Finder | ||||
| CLASS: FactorWorkspaceApplicationDelegate < FactorApplicationDelegate | ||||
| [ | ||||
|     METHOD: void application: id app openFiles: id files [ files finder-run-files ] | ||||
| 
 | ||||
|     METHOD: int applicationShouldHandleReopen: id app hasVisibleWindows: int flag [ flag 0 = [ show-listener ] when 1 ] | ||||
|     METHOD: void application: id app openFiles: id files [ files finder-run-files ] ; | ||||
| 
 | ||||
|     METHOD: id factorListener: id app [ show-listener f ] | ||||
|     METHOD: int applicationShouldHandleReopen: id app hasVisibleWindows: int flag [ flag 0 = [ show-listener ] when 1 ] ; | ||||
| 
 | ||||
|     METHOD: id factorBrowser: id app [ show-browser f ] | ||||
|     METHOD: id factorListener: id app [ show-listener f ] ; | ||||
| 
 | ||||
|     METHOD: id newFactorListener: id app [ listener-window f ] | ||||
|     METHOD: id factorBrowser: id app [ show-browser f ] ; | ||||
| 
 | ||||
|     METHOD: id newFactorBrowser: id app [ browser-window f ] | ||||
|     METHOD: id newFactorListener: id app [ listener-window f ] ; | ||||
| 
 | ||||
|     METHOD: id runFactorFile: id app [ menu-run-files f ] | ||||
|     METHOD: id newFactorBrowser: id app [ browser-window f ] ; | ||||
| 
 | ||||
|     METHOD: id saveFactorImage: id app [ save f ] | ||||
|     METHOD: id runFactorFile: id app [ menu-run-files f ] ; | ||||
| 
 | ||||
|     METHOD: id saveFactorImageAs: id app [ menu-save-image f ] | ||||
|     METHOD: id saveFactorImage: id app [ save f ] ; | ||||
| 
 | ||||
|     METHOD: id refreshAll: id app [ [ refresh-all ] \ refresh-all call-listener f ] | ||||
| ] | ||||
|     METHOD: id saveFactorImageAs: id app [ menu-save-image f ] ; | ||||
| 
 | ||||
|     METHOD: id refreshAll: id app [ [ refresh-all ] \ refresh-all call-listener f ] ; | ||||
| ; | ||||
| 
 | ||||
| : install-app-delegate ( -- ) | ||||
|     NSApp FactorWorkspaceApplicationDelegate install-delegate ; | ||||
|  | @ -54,16 +54,16 @@ CLASS: FactorWorkspaceApplicationDelegate < FactorApplicationDelegate | |||
|     [ pboard set-pasteboard-string ] when* ; | ||||
| 
 | ||||
| CLASS: FactorServiceProvider < NSObject | ||||
| [ | ||||
| 
 | ||||
|     METHOD: void evalInListener: id pboard userData: id userData error: id error | ||||
|     [ pboard error [ eval-listener f ] do-service ] | ||||
|     [ pboard error [ eval-listener f ] do-service ] ; | ||||
| 
 | ||||
|     METHOD: void evalToString: id pboard userData: id userData error: id error | ||||
|     [ | ||||
|         pboard error | ||||
|         [ [ (eval>string) ] with-interactive-vocabs ] do-service | ||||
|     ] | ||||
| ] | ||||
|     ] ; | ||||
| ; | ||||
| 
 | ||||
| : register-services ( -- ) | ||||
|     NSApp | ||||
|  |  | |||
|  | @ -150,8 +150,8 @@ CONSTANT: selector>action H{ | |||
|     selector>action at | ||||
|     [ swap world-focus parents-handle-gesture? t ] [ drop f f ] if* ; | ||||
| 
 | ||||
| CLASS: FactorView < NSOpenGLView NSTextInput | ||||
| [ | ||||
| CLASS: FactorView < NSOpenGLView | ||||
|     COCOA-PROTOCOL: NSTextInput | ||||
| 
 | ||||
|     METHOD: void prepareOpenGL [ | ||||
| 
 | ||||
|  | @ -170,43 +170,43 @@ CLASS: FactorView < NSOpenGLView NSTextInput | |||
|             ] [ drop ] if | ||||
| 
 | ||||
|         ] when | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     ! Rendering | ||||
|     METHOD: void drawRect: NSRect rect [ self window [ draw-world ] when* ] | ||||
|     METHOD: void drawRect: NSRect rect [ self window [ draw-world ] when* ] ; | ||||
| 
 | ||||
|     ! Events | ||||
|     METHOD: char acceptsFirstMouse: id event [ 0 ] | ||||
|     METHOD: char acceptsFirstMouse: id event [ 0 ] ; | ||||
| 
 | ||||
|     METHOD: void mouseEntered: id event [ self event send-mouse-moved ] | ||||
|     METHOD: void mouseEntered: id event [ self event send-mouse-moved ] ; | ||||
| 
 | ||||
|     METHOD: void mouseExited: id event [ forget-rollover ] | ||||
|     METHOD: void mouseExited: id event [ forget-rollover ] ; | ||||
| 
 | ||||
|     METHOD: void mouseMoved: id event [ self event send-mouse-moved ] | ||||
|     METHOD: void mouseMoved: id event [ self event send-mouse-moved ] ; | ||||
| 
 | ||||
|     METHOD: void mouseDragged: id event [ self event send-mouse-moved ] | ||||
|     METHOD: void mouseDragged: id event [ self event send-mouse-moved ] ; | ||||
| 
 | ||||
|     METHOD: void rightMouseDragged: id event [ self event send-mouse-moved ] | ||||
|     METHOD: void rightMouseDragged: id event [ self event send-mouse-moved ] ; | ||||
| 
 | ||||
|     METHOD: void otherMouseDragged: id event [ self event send-mouse-moved ] | ||||
|     METHOD: void otherMouseDragged: id event [ self event send-mouse-moved ] ; | ||||
| 
 | ||||
|     METHOD: void mouseDown: id event [ self event send-button-down$ ] | ||||
|     METHOD: void mouseDown: id event [ self event send-button-down$ ] ; | ||||
| 
 | ||||
|     METHOD: void mouseUp: id event [ self event send-button-up$ ] | ||||
|     METHOD: void mouseUp: id event [ self event send-button-up$ ] ; | ||||
| 
 | ||||
|     METHOD: void rightMouseDown: id event [ self event send-button-down$ ] | ||||
|     METHOD: void rightMouseDown: id event [ self event send-button-down$ ] ; | ||||
| 
 | ||||
|     METHOD: void rightMouseUp: id event [ self event send-button-up$ ] | ||||
|     METHOD: void rightMouseUp: id event [ self event send-button-up$ ] ; | ||||
| 
 | ||||
|     METHOD: void otherMouseDown: id event [ self event send-button-down$ ] | ||||
|     METHOD: void otherMouseDown: id event [ self event send-button-down$ ] ; | ||||
| 
 | ||||
|     METHOD: void otherMouseUp: id event [ self event send-button-up$ ] | ||||
|     METHOD: void otherMouseUp: id event [ self event send-button-up$ ] ; | ||||
| 
 | ||||
|     METHOD: void scrollWheel: id event [ self event send-scroll$ ] | ||||
|     METHOD: void scrollWheel: id event [ self event send-scroll$ ] ; | ||||
| 
 | ||||
|     METHOD: void keyDown: id event [ self event send-key-down-event ] | ||||
|     METHOD: void keyDown: id event [ self event send-key-down-event ] ; | ||||
| 
 | ||||
|     METHOD: void keyUp: id event [ self event send-key-up-event ] | ||||
|     METHOD: void keyUp: id event [ self event send-key-up-event ] ; | ||||
| 
 | ||||
|     METHOD: char validateUserInterfaceItem: id event | ||||
|     [ | ||||
|  | @ -214,31 +214,31 @@ CLASS: FactorView < NSOpenGLView NSTextInput | |||
|             event -> action utf8 alien>string validate-action | ||||
|             [ >c-bool ] [ drop self event SUPER-> validateUserInterfaceItem: ] if | ||||
|         ] [ 0 ] if* | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     METHOD: id undo: id event [ self event undo-action send-action$ f ] | ||||
|     METHOD: id undo: id event [ self event undo-action send-action$ f ] ; | ||||
| 
 | ||||
|     METHOD: id redo: id event [ self event redo-action send-action$ f ] | ||||
|     METHOD: id redo: id event [ self event redo-action send-action$ f ] ; | ||||
| 
 | ||||
|     METHOD: id cut: id event [ self event cut-action send-action$ f ] | ||||
|     METHOD: id cut: id event [ self event cut-action send-action$ f ] ; | ||||
| 
 | ||||
|     METHOD: id copy: id event [ self event copy-action send-action$ f ] | ||||
|     METHOD: id copy: id event [ self event copy-action send-action$ f ] ; | ||||
| 
 | ||||
|     METHOD: id paste: id event [ self event paste-action send-action$ f ] | ||||
|     METHOD: id paste: id event [ self event paste-action send-action$ f ] ; | ||||
| 
 | ||||
|     METHOD: id delete: id event [ self event delete-action send-action$ f ] | ||||
|     METHOD: id delete: id event [ self event delete-action send-action$ f ] ; | ||||
| 
 | ||||
|     METHOD: id selectAll: id event [ self event select-all-action send-action$ f ] | ||||
|     METHOD: id selectAll: id event [ self event select-all-action send-action$ f ] ; | ||||
| 
 | ||||
|     METHOD: id newDocument: id event [ self event new-action send-action$ f ] | ||||
|     METHOD: id newDocument: id event [ self event new-action send-action$ f ] ; | ||||
| 
 | ||||
|     METHOD: id openDocument: id event [ self event open-action send-action$ f ] | ||||
|     METHOD: id openDocument: id event [ self event open-action send-action$ f ] ; | ||||
| 
 | ||||
|     METHOD: id saveDocument: id event [ self event save-action send-action$ f ] | ||||
|     METHOD: id saveDocument: id event [ self event save-action send-action$ f ] ; | ||||
| 
 | ||||
|     METHOD: id saveDocumentAs: id event [ self event save-as-action send-action$ f ] | ||||
|     METHOD: id saveDocumentAs: id event [ self event save-as-action send-action$ f ] ; | ||||
| 
 | ||||
|     METHOD: id revertDocumentToSaved: id event [ self event revert-action send-action$ f ] | ||||
|     METHOD: id revertDocumentToSaved: id event [ self event revert-action send-action$ f ] ; | ||||
| 
 | ||||
|     ! Multi-touch gestures | ||||
|     METHOD: void magnifyWithEvent: id event | ||||
|  | @ -249,7 +249,7 @@ CLASS: FactorView < NSOpenGLView NSTextInput | |||
|             { -1 [ zoom-out-action send-action$ ] } | ||||
|             {  0 [ 2drop ] } | ||||
|         } case | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     METHOD: void swipeWithEvent: id event | ||||
|     [ | ||||
|  | @ -267,9 +267,9 @@ CLASS: FactorView < NSOpenGLView NSTextInput | |||
|                 ] | ||||
|             } | ||||
|         } case | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     METHOD: char acceptsFirstResponder [ 1 ] | ||||
|     METHOD: char acceptsFirstResponder [ 1 ] ; | ||||
| 
 | ||||
|     ! Services | ||||
|     METHOD: id validRequestorForSendType: id sendType returnType: id returnType | ||||
|  | @ -279,7 +279,7 @@ CLASS: FactorView < NSOpenGLView NSTextInput | |||
|             world-focus sendType returnType | ||||
|             valid-service? [ self ] [ f ] if | ||||
|         ] [ f ] if* | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     METHOD: char writeSelectionToPasteboard: id pboard types: id types | ||||
|     [ | ||||
|  | @ -289,7 +289,7 @@ CLASS: FactorView < NSOpenGLView NSTextInput | |||
|                 [ pboard set-pasteboard-string 1 ] [ 0 ] if* | ||||
|             ] [ 0 ] if* | ||||
|         ] [ 0 ] if | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     METHOD: char readSelectionFromPasteboard: id pboard | ||||
|     [ | ||||
|  | @ -298,7 +298,7 @@ CLASS: FactorView < NSOpenGLView NSTextInput | |||
|             pboard pasteboard-string | ||||
|             [ window user-input 1 ] [ 0 ] if* | ||||
|         ] [ 0 ] if | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     ! Text input | ||||
|     METHOD: void insertText: id text | ||||
|  | @ -307,27 +307,27 @@ CLASS: FactorView < NSOpenGLView NSTextInput | |||
|         window [ | ||||
|             text CF>string window user-input | ||||
|         ] when | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     METHOD: char hasMarkedText [ 0 ] | ||||
|     METHOD: char hasMarkedText [ 0 ] ; | ||||
| 
 | ||||
|     METHOD: NSRange markedRange [ 0 0 <NSRange> ] | ||||
|     METHOD: NSRange markedRange [ 0 0 <NSRange> ] ; | ||||
| 
 | ||||
|     METHOD: NSRange selectedRange [ 0 0 <NSRange> ] | ||||
|     METHOD: NSRange selectedRange [ 0 0 <NSRange> ] ; | ||||
| 
 | ||||
|     METHOD: void setMarkedText: id text selectedRange: NSRange range [ ] | ||||
|     METHOD: void setMarkedText: id text selectedRange: NSRange range [ ] ; | ||||
| 
 | ||||
|     METHOD: void unmarkText [ ] | ||||
|     METHOD: void unmarkText [ ] ; | ||||
| 
 | ||||
|     METHOD: id validAttributesForMarkedText [ NSArray -> array ] | ||||
|     METHOD: id validAttributesForMarkedText [ NSArray -> array ] ; | ||||
| 
 | ||||
|     METHOD: id attributedSubstringFromRange: NSRange range [ f ] | ||||
|     METHOD: id attributedSubstringFromRange: NSRange range [ f ] ; | ||||
| 
 | ||||
|     METHOD: NSUInteger characterIndexForPoint: NSPoint point [ 0 ] | ||||
|     METHOD: NSUInteger characterIndexForPoint: NSPoint point [ 0 ] ; | ||||
| 
 | ||||
|     METHOD: NSRect firstRectForCharacterRange: NSRange range [ 0 0 0 0 <CGRect> ] | ||||
|     METHOD: NSRect firstRectForCharacterRange: NSRange range [ 0 0 0 0 <CGRect> ] ; | ||||
| 
 | ||||
|     METHOD: NSInteger conversationIdentifier [ self alien-address ] | ||||
|     METHOD: NSInteger conversationIdentifier [ self alien-address ] ; | ||||
| 
 | ||||
|     ! Initialization | ||||
|     METHOD: void updateFactorGadgetSize: id notification | ||||
|  | @ -336,24 +336,24 @@ CLASS: FactorView < NSOpenGLView NSTextInput | |||
|         window [ | ||||
|             self view-dim window dim<< yield | ||||
|         ] when | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     METHOD: void doCommandBySelector: SEL selector [ ] | ||||
|     METHOD: void doCommandBySelector: SEL selector [ ] ; | ||||
| 
 | ||||
|     METHOD: id initWithFrame: NSRect frame pixelFormat: id pixelFormat | ||||
|     [ | ||||
|         self frame pixelFormat SUPER-> initWithFrame:pixelFormat: | ||||
|         dup dup add-resize-observer | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     METHOD: char isOpaque [ 0 ] | ||||
|     METHOD: char isOpaque [ 0 ] ; | ||||
| 
 | ||||
|     METHOD: void dealloc | ||||
|     [ | ||||
|         self remove-observer | ||||
|         self SUPER-> dealloc | ||||
|     ] | ||||
| ] | ||||
|     ] ; | ||||
| ; | ||||
| 
 | ||||
| : sync-refresh-to-screen ( GLView -- ) | ||||
|     -> openGLContext -> CGLContextObj NSOpenGLCPSwapInterval 1 int <ref> | ||||
|  | @ -366,18 +366,18 @@ CLASS: FactorView < NSOpenGLView NSTextInput | |||
|     -> frame CGRect-top-left 2array >>window-loc drop ; | ||||
| 
 | ||||
| CLASS: FactorWindowDelegate < NSObject | ||||
| [ | ||||
| 
 | ||||
|     METHOD: void windowDidMove: id notification | ||||
|     [ | ||||
|         notification -> object -> contentView window | ||||
|         [ notification -> object save-position ] when* | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     METHOD: void windowDidBecomeKey: id notification | ||||
|     [ | ||||
|         notification -> object -> contentView window | ||||
|         [ focus-world ] when* | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     METHOD: void windowDidResignKey: id notification | ||||
|     [ | ||||
|  | @ -388,15 +388,15 @@ CLASS: FactorWindowDelegate < NSObject | |||
|             view -> isInFullScreenMode 0 = | ||||
|             [ window unfocus-world ] when | ||||
|         ] when | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     METHOD: char windowShouldClose: id notification [ 1 ] | ||||
|     METHOD: char windowShouldClose: id notification [ 1 ] ; | ||||
| 
 | ||||
|     METHOD: void windowWillClose: id notification | ||||
|     [ | ||||
|         notification -> object -> contentView | ||||
|         [ window ungraft ] [ unregister-window ] bi | ||||
|     ] | ||||
|     ] ; | ||||
| 
 | ||||
|     METHOD: void windowDidChangeBackingProperties: id notification | ||||
|     [ | ||||
|  | @ -410,8 +410,8 @@ CLASS: FactorWindowDelegate < NSObject | |||
|             [ [ 1.0 > ] keep f ? gl-scale-factor set-global ] | ||||
|             [ 1.0 > retina? set-global ] bi | ||||
|         ] [ drop ] if | ||||
|     ] | ||||
| ] | ||||
|     ] ; | ||||
| ; | ||||
| 
 | ||||
| : install-window-delegate ( window -- ) | ||||
|     FactorWindowDelegate install-delegate ; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue