Bootstrap fix, got close box working

slava 2006-03-22 07:27:07 +00:00
parent d22a142935
commit d9977d36f8
5 changed files with 13 additions and 14 deletions

View File

@ -129,7 +129,7 @@ V{ } clone hand-buttons set-global
: ui-step ( -- )
do-timers
[ layout-queued ] make-hash
[ nip [ draw-world ] when* ] hash-each
[ nip dup world-handle [ draw-world ] when ] hash-each
10 sleep ;
: close-world ( world -- )

View File

@ -1,12 +1,11 @@
! Copyright (C) 2005, 2006 Slava Pestov.
! See http://factor.sf.net/license.txt for BSD license.
IN: gadgets-listener
USING: arrays compiler gadgets gadgets-editors gadgets-labels
USING: arrays gadgets gadgets-editors gadgets-labels
gadgets-layouts gadgets-panes gadgets-scrolling
gadgets-splitters gadgets-theme generic hashtables
inference inspector io jedit kernel listener lists math
namespaces parser prettyprint sequences shells threads words
help ;
io jedit kernel listener lists math
namespaces parser prettyprint sequences threads words ;
TUPLE: listener-gadget pane stack status ;
@ -49,12 +48,6 @@ TUPLE: listener-gadget pane stack status ;
: <stack-bar> ( -- gadget ) <shelf> dup status-theme ;
: <bottom-bar> ( -- gadget status )
<status-bar> [
<shelf> dup stack-bar set-global
2array make-pile 1 over set-pack-fill
] keep ;
: <scroller> ( -- gadget )
<input-pane> dup pane set-global <scroller> ;

View File

@ -80,13 +80,13 @@ M: world key-down-event ( event world -- )
M: world key-up-event ( event world -- ) 2drop ;
: close-box? ( event -- )
dup XClientMessageEvent-type "WM_PROTOCOLS" x-atom =
dup XClientMessageEvent-message_type "WM_PROTOCOLS" x-atom =
swap XClientMessageEvent-data "WM_DELETE_WINDOW" x-atom =
and ;
M: world client-event ( event world -- )
swap close-box? [
dup close-world world-handle destroy-window*
dup world-handle first >r close-world r> destroy-window*
] [
drop
] if ;

View File

@ -40,11 +40,15 @@ USING: alien hashtables kernel math namespaces sequences ;
: destroy-window* ( win -- )
dup windows get remove-hash destroy-window ;
: set-closable ( win -- )
dpy get swap "WM_DELETE_WINDOW" x-atom <Atom> 1
XSetWMProtocols drop ;
: map-window ( win -- ) dpy get swap XMapWindow drop ;
: map-window* ( world win -- )
[ windows get set-hash ] keep map-window ;
dup set-closable [ windows get set-hash ] keep map-window ;
: glx-window* ( world dim -- win context )
glx-window >r [ map-window* ] keep r> ;

View File

@ -51,12 +51,14 @@ TYPEDEF: void* Window**
: <Window> <XID> ;
: <Drawable> <XID> ;
: <KeySym> <XID> ;
: <Atom> <ulong> ;
: *ulong *uint ;
: *XID *ulong ;
: *Window *XID ;
: *Drawable *XID ;
: *KeySym *XID ;
: *Atom *ulong ;
!
! 2 - Display Functions
!