NEW
  AUTO 3,1
*--------------------------------------
* NewBut(HWND, bFlags, wW, pICON, pTEXT, bKEYMOD, bKEY, wID, wX, wY)
*--------------------------------------
BUT.New			lda #S.OBJ.T.BUT	
				jsr OBJ.New
*				bcs .9
				
				phx						hOBJ

				jsr OBJ.PullY1X1
				
				ldy #S.BUT.ID
				jsr OBJ.PullWordAtY
				
				ldy #S.BUT.KEYMOD
				jsr OBJ.PullWordAtY
				
				ldy #S.BUT.pTEXT
				jsr OBJ.PullWordAtY
				
				ldy #S.BUT.pICON
				jsr OBJ.PullWordAtY
				
				ldy #S.OBJ.W
				jsr OBJ.PullWordAtY
				
				ldy #S.OBJ.F
				jsr OBJ.PullByteAtY

				jsr OBJ.PullHWND

				ldy #S.OBJ.W
				jsr OBJ.GetPropAtY
				bcc .5					W in !NULL, static size

				stz DX
				stz DX+1

				ldy #S.BUT.pICON
				jsr OBJ.GetPropAtY
				bcs .1					no icon

				lda #16					IconW
				sta DX

.1				ldy #S.BUT.pTEXT
				jsr OBJ.GetPropAtY
				bcs .3					no text

				ldx hSYSFON
				jsr FON.GetTextSize

				ldy #S.OBJ.F
				lda (ZPObjPtr),y
				and #S.BUT.F.NOSPACE
				bne .2

				lda DX
				beq .2

				clc
				adc PREFS.XSeparator
				sta DX

.2				clc
				lda CB.CACHE+S.CB.SrcW
				adc DX
				sta DX
				
				lda CB.CACHE+S.CB.SrcW+1
				adc DX+1
				sta DX+1
				
.3				lda PREFS.XSeparator
				asl
*				clc
				adc DX
				ldy #S.OBJ.W
				sta (ZPObjPtr),y
				lda #0
				adc DX+1
				iny
				sta (ZPObjPtr),y

.5				lda SYSFON.Hp2
				ldy #S.OBJ.H
				sta (ZPObjPtr),y
				
				>LDYA ZPObjPtr
				jsr OBJ.SetX2Y2



.8				jsr WND.AddChild.I

				pla						hOBJ
				clc
				rts
				
.9				>POP 16
				rts
*--------------------------------------
BUT.Enter		ldy #S.OBJ.S
				lda (ZPObjPtr),y
				bpl BUT.Paint

.8				clc				
				rts
*--------------------------------------
BUT.Leave		ldy #S.OBJ.S
				lda (ZPObjPtr),y
				bpl .8
				
				bit #S.BUT.F.NOLEAVE
				beq BUT.Paint
				
.8				clc
				rts
*--------------------------------------
BUT.Close

				clc
				rts
*--------------------------------------
BUT.Paint		eor #S.BUT.S.SELECTED
				sta (ZPObjPtr),y

				jsr WND.GetInnerInClip

BUT.fPaint		jsr CB.GetBuf
				bcs .9

				ldx #1
				jsr DRAW.BordersAtX

				ldx #C.WHITE

				ldy #S.OBJ.S
				lda (ZPObjPtr),y
				bpl .1
				
*				and #S.BUT.S.SELECTED
*				beq .1

				ldx #C.BLACK

.1				txa
				jsr CB.FillRectMonoA
				
				jsr CB.GetObjX1Y1X2Y2
				
				jsr CB.Cache2CBBufG

				ldy #S.BUT.pTEXT
				jsr OBJ.GetPropAtY
				ldx hSYSFON
				jsr FON.GetTextSize
				
				jsr CB.SrcWCenterH

				jsr CB.IncY1

				ldy #S.BUT.pTEXT
				jsr OBJ.GetPropAtY
				ldx hSYSFON
				jsr DRAW.YAText



.8				jmp CB.FlushBuf

.9				rts
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s.but
LOAD usr/src/lib/libgui.s
ASM
