Minor layout issue fixes

darcs
slava 2006-06-29 04:00:21 +00:00
parent 5e14ba0474
commit 7fd74ab6db
14 changed files with 40 additions and 42 deletions

View File

@ -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 -- )

View File

@ -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: ;

View File

@ -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 ]
}

View File

@ -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

View File

@ -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> ;

View File

@ -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 ;

View File

@ -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 ;

View File

@ -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 ;

View File

@ -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 ;

View File

@ -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 ;

View File

@ -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 ;

View File

@ -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

View File

@ -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 ] }

View File

@ -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 ;