validate cocoa menu items with handles-gesture?

db4
Joe Groff 2009-06-22 20:16:52 -05:00
parent 76b1f9ce03
commit 85acbf4abc
1 changed files with 34 additions and 6 deletions

View File

@ -1,11 +1,12 @@
! Copyright (C) 2006, 2008 Slava Pestov ! Copyright (C) 2006, 2008 Slava Pestov
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien alien.c-types arrays assocs cocoa kernel math USING: accessors alien alien.c-types alien.strings arrays assocs
cocoa.messages cocoa.subclassing cocoa.classes cocoa.views cocoa kernel math cocoa.messages cocoa.subclassing cocoa.classes
cocoa.application cocoa.pasteboard cocoa.types cocoa.windows sequences cocoa.views cocoa.application cocoa.pasteboard cocoa.types
ui ui.private ui.gadgets ui.gadgets.private ui.gadgets.worlds cocoa.windows sequences io.encodings.ascii ui ui.private ui.gadgets
ui.gestures core-foundation.strings core-graphics core-graphics.types ui.gadgets.private ui.gadgets.worlds ui.gestures
threads combinators math.rectangles ; core-foundation.strings core-graphics core-graphics.types threads
combinators math.rectangles ;
IN: ui.backend.cocoa.views IN: ui.backend.cocoa.views
: send-mouse-moved ( view event -- ) : send-mouse-moved ( view event -- )
@ -121,6 +122,25 @@ CONSTANT: key-codes
[ drop dim>> first2 ] [ drop dim>> first2 ]
2bi <CGRect> ; 2bi <CGRect> ;
CONSTANT: selector>action H{
{ "undo:" undo-action }
{ "redo:" redo-action }
{ "cut:" cut-action }
{ "copy:" copy-action }
{ "paste:" paste-action }
{ "delete:" delete-action }
{ "selectAll:" select-all-action }
{ "newDocument:" new-action }
{ "openDocument:" open-action }
{ "saveDocument:" save-action }
{ "saveDocumentAs:" save-as-action }
{ "revertDocumentToSaved:" revert-action }
}
: validate-action ( world selector -- ? validated? )
selector>action at
[ swap world-focus parents-handle-gesture? t ] [ drop f f ] if* ;
CLASS: { CLASS: {
{ +superclass+ "NSOpenGLView" } { +superclass+ "NSOpenGLView" }
{ +name+ "FactorView" } { +name+ "FactorView" }
@ -197,6 +217,14 @@ CLASS: {
[ nip send-key-up-event ] [ nip send-key-up-event ]
} }
{ "validateUserInterfaceItem:" "char" { "id" "SEL" "id" }
[
nip -> action
2dup [ window ] [ ascii alien>string ] bi* validate-action
[ [ 2drop ] dip >c-bool ] [ SUPER-> validateUserInterfaceItem: ] if
]
}
{ "undo:" "id" { "id" "SEL" "id" } { "undo:" "id" { "id" "SEL" "id" }
[ nip undo-action send-action$ ] [ nip undo-action send-action$ ]
} }