Things to support new Factory changes

darcs
wayo.cavazos 2006-06-28 10:55:17 +00:00
parent e722fdb590
commit 5e14ba0474
2 changed files with 99 additions and 18 deletions

View File

@ -100,16 +100,6 @@ M: window handle-leave-window-event ( event obj -- )
"Basic handle-leave-window-event called" print flush drop drop ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! <label>
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
TUPLE: label text ;
: create-label ( text -- <label> )
<label>
create-window-object over set-delegate
dup add-to-window-table
ExposureMask over select-input% ;
DEFER: draw-string%
DEFER: draw-string-middle-center%
@ -122,6 +112,21 @@ DEFER: map-subwindows%
DEFER: reparent-window%
DEFER: unmap-window%
DEFER: add-input%
DEFER: select-input%
DEFER: set-window-background%
DEFER: clear-window%
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! <label>
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
TUPLE: label text ;
: create-label ( text -- <label> )
<label>
create-window-object over set-delegate
dup add-to-window-table
ExposureMask over select-input% ;
M: label handle-expose-event ( event <label> -- )
nip
@ -363,6 +368,7 @@ dup pwindow-expose-action call ;
: valid-window?% [ valid-window? ] with-window-object ;
: window-position% [ window-position ] with-window-object ;
: window-size% [ window-size ] with-window-object ;
: window-rect% [ window-rect ] with-window-object ;
: window-map-state% [ window-map-state ] with-window-object ;
: window-parent% [ window-parent ] with-window-object ;
@ -388,6 +394,7 @@ dup pwindow-expose-action call ;
: draw-string% [ draw-string ] with-window-object ;
: draw-string-middle-center% [ draw-string-middle-center ]
with-window-object ;
: draw-string-top-left% [ draw-string-top-left ] with-window-object ;
: get-transient-for-hint% [ get-transient-for-hint ]
with-window-object ;
@ -395,3 +402,6 @@ dup pwindow-expose-action call ;
: fetch-name% [ fetch-name ] with-window-object ;
: clear-window% [ clear-window ] with-window-object ;
: init-widgets ( display-string -- )
initialize-x [ concurrent-event-loop ] in-thread ;

View File

@ -1,4 +1,4 @@
USING: namespaces kernel compiler math arrays strings alien sequences io
USING: namespaces kernel words compiler math arrays strings alien sequences io
prettyprint x11 rectangle ;
IN: x
@ -57,7 +57,7 @@ SYMBOL: font
! 3.7 - Configuring Windows
: move-window ( { x y } -- ) >r dpy get win get r> [ ] each XMoveWindow drop ;
: move-window ( { x y } -- ) dpy get win get rot first2 XMoveWindow drop ;
DEFER: window-position
DEFER: window-width
@ -145,6 +145,8 @@ change-window-attributes ;
: window-x 0 window-position nth ;
: window-y 1 window-position nth ;
: window-rect ( -- <rect> ) window-position window-size <rect> ;
: get-window-attributes ( -- <XWindowAttributes> )
dpy get win get "XWindowAttributes" <c-object> dup >r XGetWindowAttributes drop r> ;
@ -202,7 +204,7 @@ SYMBOL: event-masks
} event-masks set-global
: bit-test ( a b -- t-or-f ) bitand 0 = not ;
: name>event-mask ( str -- i )
event-masks get [ first over = ] find 2nip second ;
@ -253,9 +255,9 @@ terpri ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: lookup-color ( name -- pixel )
>r dpy get colormap get r> "XColor" <c-object> dup >r "XColor" <c-object> XLookupColor drop
dpy get colormap get r> dup >r XAllocColor drop
r> XColor-pixel ;
>r dpy get colormap get r> "XColor" <c-object> dup >r "XColor" <c-object>
XLookupColor drop
dpy get colormap get r> dup >r XAllocColor drop r> XColor-pixel ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 7 - Graphics Context Functions
@ -330,10 +332,70 @@ dpy get win get r> 0 0 XReparentWindow drop ;
: ungrab-server ( -- ) dpy get XUngrabServer drop ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 10 - Events
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: event-types ( -- seq )
{ f
f
"KeyPress"
"KeyRelease"
"ButtonPress"
"ButtonRelease"
"MotionNotify"
"EnterNotify"
"LeaveNotify"
"FocusIn"
"FocusOut"
"KeymapNotify"
"Expose"
"GraphicsExpose"
"NoExpose"
"VisibilityNotify"
"CreateNotify"
"DestroyNotify"
"UnmapNotify"
"MapNotify"
"MapRequest"
"ReparentNotify"
"ConfigureNotify"
"ConfigureRequest"
"GravityNotify"
"ResizeRequest"
"CirculateNotify"
"CirculateRequest"
"PropertyNotify"
"SelectionClear"
"SelectionRequest"
"SelectionNotify"
"ColormapNotify"
"ClientMessage"
"MappingNotify"
"LASTEvent" } ;
: event-type>name ( i -- str ) event-types nth ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: XButtonEvent-position ( event -- { x y } )
dup XButtonEvent-x swap XButtonEvent-y 2array ;
: XButtonEvent-root-position ( event -- { x y } )
dup XButtonEvent-x_root swap XButtonEvent-y_root 2array ;
: XMotionEvent-position ( event -- { x y } )
dup XMotionEvent-x swap XMotionEvent-y 2array ;
: XMotionEvent-root-position ( event -- { x y } )
dup XMotionEvent-x_root swap XMotionEvent-y_root 2array ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 11 - Event Handling Functions
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: bitmask ( seq -- mask ) 0 [ execute bitor ] reduce ;
: select-input ( mask -- ) >r dpy get win get r> XSelectInput drop ;
: add-input ( mask -- )
@ -365,8 +427,7 @@ error-handler-quot set error-handler-callback XSetErrorHandler drop ;
! 12 - Input Device Functions
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: set-input-focus ( revert-to time -- )
>r >r dpy get win get r> r> XSetInputFocus drop ;
! 12.1 - Pointer Grabbing
: grab-pointer ( mask -- )
>r dpy get win get 0 r> GrabModeAsync GrabModeAsync None None CurrentTime
@ -375,9 +436,19 @@ XGrabPointer drop ;
: ungrab-pointer ( time -- )
>r dpy get r> XUngrabPointer drop ;
: change-active-pointer-grab ( mask -- )
dpy get swap None CurrentTime XChangeActivePointerGrab drop ;
! 12.2 - Keyboard Grabbing
: grab-key ( keycode modifiers owner-events pointer-mode keyboard-mode -- )
>r >r >r >r >r dpy get r> r> win get r> r> r> XGrabKey drop ;
! 12.5 - Controlling Input Focus
: set-input-focus ( revert-to time -- )
>r >r dpy get win get r> r> XSetInputFocus drop ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! 14 - Inter-Client Communication Functions
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!