Minor layout issue fixes
parent
5e14ba0474
commit
7fd74ab6db
|
@ -5,8 +5,6 @@ DEFER: set-title ( string handle -- )
|
|||
|
||||
DEFER: draw-world ! defined in world.factor
|
||||
|
||||
: redraw-world ( world -- ) draw-world ;
|
||||
|
||||
DEFER: open-window* ( world title -- )
|
||||
|
||||
DEFER: select-gl-context ( handle -- )
|
||||
|
|
|
@ -43,9 +43,6 @@ namespaces objc sequences errors freetype ;
|
|||
|
||||
IN: gadgets
|
||||
|
||||
: redraw-world ( world -- )
|
||||
world-handle first 1 -> setNeedsDisplay: ;
|
||||
|
||||
: set-title ( string world -- )
|
||||
world-handle second swap <NSString> -> setTitle: ;
|
||||
|
||||
|
|
|
@ -94,10 +94,6 @@ opengl sequences ;
|
|||
r> add-observer ;
|
||||
|
||||
"NSOpenGLView" "FactorView" {
|
||||
{ "drawRect:" "void" { "id" "SEL" "NSRect" }
|
||||
[ 2drop window draw-world ]
|
||||
}
|
||||
|
||||
{ "acceptsFirstMouse:" "bool" { "id" "SEL" "id" }
|
||||
[ 3drop 1 ]
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ M: array rect-dim drop { 0 0 } ;
|
|||
(rect-intersect) <extent-rect> ;
|
||||
|
||||
: intersects? ( rect/point rect -- ? )
|
||||
(rect-intersect) v- [ 0 <= ] all? ;
|
||||
(rect-intersect) [v-] { 0 0 } = ;
|
||||
|
||||
TUPLE: gadget
|
||||
pref-dim parent children orientation
|
||||
|
|
|
@ -23,7 +23,7 @@ C: book ( pages -- book )
|
|||
M: book pref-dim* ( book -- dim ) book-page pref-dim ;
|
||||
|
||||
M: book layout* ( book -- )
|
||||
dup rect-dim swap book-page set-gadget-dim ;
|
||||
dup rect-dim swap book-page set-layout-dim ;
|
||||
|
||||
: make-book ( model obj quots -- assoc )
|
||||
[ make-pane <scroller> ] map-with <book-control> ;
|
||||
|
|
|
@ -18,7 +18,7 @@ C: border ( child gap -- border )
|
|||
|
||||
: layout-border-dim ( border -- )
|
||||
dup rect-dim over border-size 2 v*n v-
|
||||
swap gadget-child set-gadget-dim ;
|
||||
swap gadget-child set-layout-dim ;
|
||||
|
||||
M: border pref-dim* ( border -- dim )
|
||||
[ border-size 2 v*n ] keep
|
||||
|
@ -28,4 +28,4 @@ M: border layout* ( border -- )
|
|||
dup layout-border-loc layout-border-dim ;
|
||||
|
||||
: <spacing> ( -- gadget )
|
||||
<gadget> { 10 10 } over set-gadget-dim ;
|
||||
<gadget> { 10 10 } over set-layout-dim ;
|
||||
|
|
|
@ -103,7 +103,7 @@ M: editor pref-dim* ( editor -- dim )
|
|||
label-size { 1 0 } v+ ;
|
||||
|
||||
M: editor layout* ( editor -- )
|
||||
dup editor-caret over caret-dim swap set-gadget-dim
|
||||
dup editor-caret over caret-dim swap set-layout-dim
|
||||
dup editor-caret swap caret-loc swap set-rect-loc ;
|
||||
|
||||
M: editor label-text editor-text ;
|
||||
|
|
|
@ -60,7 +60,7 @@ M: grid pref-dim* ( grid -- dim )
|
|||
pair-up [ set-rect-loc ] do-grid ;
|
||||
|
||||
: resize-grid ( horiz vert -- )
|
||||
pair-up [ set-gadget-dim ] do-grid ;
|
||||
pair-up [ set-layout-dim ] do-grid ;
|
||||
|
||||
: grid-layout ( horiz vert -- )
|
||||
2dup position-grid resize-grid ;
|
||||
|
|
|
@ -87,11 +87,6 @@ M: pane focusable-child* ( pane -- editor )
|
|||
{ [ t ] [ drop ] }
|
||||
} cond ;
|
||||
|
||||
M: pane stream-terpri ( pane -- )
|
||||
dup pane-current prepare-print
|
||||
over pane-output add-incremental
|
||||
prepare-line ;
|
||||
|
||||
: pane-write ( pane seq -- )
|
||||
[ over pane-current stream-write ]
|
||||
[ dup stream-terpri ] interleave drop ;
|
||||
|
@ -119,6 +114,12 @@ M: pane stream-readln ( pane -- line )
|
|||
|
||||
: scroll-pane ( pane -- ) pane-active [ scroll>gadget ] when* ;
|
||||
|
||||
M: pane stream-terpri ( pane -- )
|
||||
dup pane-current prepare-print
|
||||
over pane-output add-incremental
|
||||
dup prepare-line
|
||||
scroll-pane ;
|
||||
|
||||
M: pane stream-write1 ( char pane -- )
|
||||
[ pane-current stream-write1 ] keep scroll-pane ;
|
||||
|
||||
|
|
|
@ -108,7 +108,7 @@ C: elevator ( vector -- elevator )
|
|||
: layout-thumb-dim ( slider -- )
|
||||
dup dup thumb-dim (layout-thumb)
|
||||
>r >r dup rect-dim r> rot gadget-orientation set-axis r>
|
||||
set-gadget-dim ;
|
||||
set-layout-dim ;
|
||||
|
||||
: layout-thumb ( slider -- )
|
||||
dup layout-thumb-loc layout-thumb-dim ;
|
||||
|
|
|
@ -8,23 +8,24 @@ IN: gadgets
|
|||
|
||||
: forget-pref-dim ( gadget -- ) f swap set-gadget-pref-dim ;
|
||||
|
||||
: invalidate* ( gadget -- ) dup invalidate forget-pref-dim ;
|
||||
|
||||
: invalid ( -- queue ) \ invalid get-global ;
|
||||
|
||||
: add-invalid ( gadget -- ) invalid enque ;
|
||||
|
||||
DEFER: relayout
|
||||
|
||||
: invalidate* ( gadget -- )
|
||||
dup invalidate
|
||||
dup forget-pref-dim
|
||||
dup gadget-root?
|
||||
[ add-invalid ] [ gadget-parent [ relayout ] when* ] if ;
|
||||
|
||||
: relayout ( gadget -- )
|
||||
#! Relayout and redraw a gadget and its parent before the
|
||||
#! next iteration of the event loop. Should be used when the
|
||||
#! gadget's size has potentially changed. See relayout-1.
|
||||
dup gadget-relayout? [
|
||||
drop
|
||||
] [
|
||||
dup invalidate*
|
||||
dup gadget-root?
|
||||
[ add-invalid ] [ gadget-parent [ relayout ] when* ] if
|
||||
] if ;
|
||||
dup gadget-relayout?
|
||||
[ drop ] [ invalidate* ] if ;
|
||||
|
||||
: relayout-1 ( gadget -- )
|
||||
#! Relayout and redraw a gadget before th next iteration of
|
||||
|
@ -41,12 +42,17 @@ IN: gadgets
|
|||
: toggle-visible ( gadget -- )
|
||||
dup gadget-visible? [ hide-gadget ] [ show-gadget ] if ;
|
||||
|
||||
: (set-rect-dim) ( dim gadget quot -- )
|
||||
>r 2dup rect-dim =
|
||||
[ [ 2drop ] [ set-rect-dim ] if ] 2keep
|
||||
[ drop ] r> if ; inline
|
||||
|
||||
: set-layout-dim ( dim gadget -- )
|
||||
#! Can only be used inside layout*.
|
||||
[ invalidate ] (set-rect-dim) ;
|
||||
|
||||
: set-gadget-dim ( dim gadget -- )
|
||||
2dup rect-dim = [
|
||||
2drop
|
||||
] [
|
||||
[ set-rect-dim ] keep dup add-invalid invalidate
|
||||
] if ;
|
||||
[ invalidate* ] (set-rect-dim) ;
|
||||
|
||||
GENERIC: pref-dim* ( gadget -- dim )
|
||||
|
||||
|
@ -61,7 +67,7 @@ GENERIC: layout* ( gadget -- )
|
|||
|
||||
M: gadget layout* drop ;
|
||||
|
||||
: prefer ( gadget -- ) dup pref-dim swap set-gadget-dim ;
|
||||
: prefer ( gadget -- ) dup pref-dim swap set-layout-dim ;
|
||||
|
||||
DEFER: layout
|
||||
|
||||
|
@ -101,7 +107,7 @@ TUPLE: pack align fill gap ;
|
|||
: packed-layout ( gadget sizes -- )
|
||||
over gadget-children
|
||||
>r dupd packed-dims r> 2dup
|
||||
[ >r [ ceiling >fixnum ] map r> set-gadget-dim ] 2each
|
||||
[ >r [ ceiling >fixnum ] map r> set-layout-dim ] 2each
|
||||
>r packed-locs r>
|
||||
[ >r [ >fixnum ] map r> set-rect-loc ] 2each ;
|
||||
|
||||
|
|
|
@ -7,8 +7,9 @@ sequences ;
|
|||
: gl-color ( { r g b a } -- ) first4 glColor4d ; inline
|
||||
|
||||
: gl-error ( -- )
|
||||
glGetError dup zero?
|
||||
[ drop ] [ "GL error: " write gluErrorString print ] if ;
|
||||
glGetError dup zero? [
|
||||
"GL error: " write dup gluErrorString print flush
|
||||
] unless drop ;
|
||||
|
||||
: do-state ( what quot -- )
|
||||
swap glBegin call glEnd ; inline
|
||||
|
|
|
@ -70,7 +70,6 @@ DEFER: draw-gadget
|
|||
|
||||
: draw-gadget ( gadget -- )
|
||||
{
|
||||
{ [ dup gadget-relayout? ] [ drop ] }
|
||||
{ [ dup gadget-visible? not ] [ drop ] }
|
||||
{ [ dup gadget-clipped? not ] [ (draw-gadget) ] }
|
||||
{ [ t ] [ [ (draw-gadget) ] with-clipping ] }
|
||||
|
|
|
@ -69,7 +69,7 @@ M: titled-gadget gadget-title titled-gadget-title ;
|
|||
M: titled-gadget pref-dim* viewport-dim ;
|
||||
|
||||
M: titled-gadget layout*
|
||||
dup rect-dim swap gadget-child set-gadget-dim ;
|
||||
dup rect-dim swap gadget-child set-layout-dim ;
|
||||
|
||||
M: titled-gadget focusable-child* gadget-child ;
|
||||
|
||||
|
@ -83,7 +83,7 @@ C: titled-gadget ( gadget title -- )
|
|||
[ >r gadget-title r> set-title ] [ 2drop ] if ;
|
||||
|
||||
: open-window ( gadget -- )
|
||||
<world> dup prefer open-window* ;
|
||||
<world> dup pref-dim over set-gadget-dim open-window* ;
|
||||
|
||||
: open-titled-window ( gadget title -- )
|
||||
<titled-gadget> open-window ;
|
||||
|
|
Loading…
Reference in New Issue