diff --git a/basis/ui/gadgets/worlds/worlds.factor b/basis/ui/gadgets/worlds/worlds.factor index 38fb220c69..dfce3d3eee 100755 --- a/basis/ui/gadgets/worlds/worlds.factor +++ b/basis/ui/gadgets/worlds/worlds.factor @@ -217,4 +217,3 @@ M: world check-world-pixel-format : with-world-pixel-format ( world quot -- ) [ dup dup world-pixel-format-attributes ] dip [ 2dup check-world-pixel-format ] prepose with-disposal ; inline - diff --git a/basis/ui/ui.factor b/basis/ui/ui.factor index 144530399c..aee19279a4 100644 --- a/basis/ui/ui.factor +++ b/basis/ui/ui.factor @@ -206,8 +206,11 @@ PRIVATE> : open-world-window ( world -- ) dup pref-dim >>dim dup relayout graft ; +: open-window* ( gadget title/attributes -- window ) + ?attributes [ open-world-window ] keep ; + : open-window ( gadget title/attributes -- ) - ?attributes open-world-window ; + open-window* drop ; : set-fullscreen ( gadget ? -- ) [ find-world ] dip (set-fullscreen) ; diff --git a/extra/ui/gadgets/worlds/null/null.factor b/extra/ui/gadgets/worlds/null/null.factor new file mode 100644 index 0000000000..26fc3e8a94 --- /dev/null +++ b/extra/ui/gadgets/worlds/null/null.factor @@ -0,0 +1,27 @@ +USING: accessors kernel ui ui.backend ui.gadgets +ui.gadgets.worlds ui.pixel-formats ; +IN: ui.gadgets.worlds.null + +TUPLE: null-world < world ; +M: null-world begin-world drop ; +M: null-world end-world drop ; +M: null-world draw-world* drop ; +M: null-world resize-world drop ; +M: null-world pref-dim* drop { 512 512 } ; + +: null-window ( title -- world ) + + swap >>title + null-world >>world-class + { + windowed + double-buffered + backing-store + T{ depth-bits f 24 } + } >>pixel-format-attributes + f swap open-window* ; + +: into-window ( world quot -- world ) + [ dup handle>> ] dip with-gl-context ; inline + +