*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* *+ +* *+ GadgetSupport - Routinen zum De-/Selektieren v. BoolGadgets +* *+ +* *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* *+ +* *+ Modification History: +* *+ -------------------- +* *+ +* *+ 26-Oct-87 CHW Created this file! +* *+ 25-Jun-89 CHW Cleaned up for chlib +* *+ 20-Jan-90 CHW Window pointer may be 0 +* *+ 10-Sep-90 CHW A6 wird jetzt auch gerettet, macht jetzt brav +* *+ RemoveGadget() und wieder AddGadget(), kann jetzt +* *+ auch GRELRIGHT und GRELHEIGHT +* *+ +* *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* IDNT GadgetSupport SECTION text,CODE INCLUDE "exec/macros.i" INCLUDE "intuition/intuition.i" XREF _GfxBase,_IntuitionBase XDEF @SelectGadget,@DeselectGadget GB_RELBOTTOM: EQU 3 ; Bit 3 im WORD GB_RELRIGHT: EQU 4 ; Bit 4 im WORD GB_SELECTED: EQU 7 ; Bit 7 im WORD ************************************************************************** ** ** ** SelectGadget - Boolean-Gadget selektieren & highlighten ** ** ** ** Parameter : A0.L : Adresse der Window-Struktur oder 0 ** ** A1.L : Zeiger auf zu selektierendes Gadget ** ** Resultat : nix ** ** ** ************************************************************************** @SelectGadget: movem.l d0-d4/a0-a3/a6,-(SP) ; muss so bleiben, siehe unten movea.l a0,a2 ; A2 : Window movea.l a1,a3 ; A3 : Gadget bset.b #GB_SELECTED,gg_Flags+1(a3) bne norefresh ; Gleicher wie vorher ---> fertig bra.s commoncont ; ---> ************************************************************************** ** ** ** DeselectGadget - Boolean-Gadget deselektieren ** ** ** ** Parameter : A0.L : Adresse der Window-Struktur oder 0 ** ** A1.L : Zeiger auf zu deselektierendes Gadget ** ** Resultat : nix ** ** ** ************************************************************************** @DeselectGadget: movem.l d0-d4/a0-a3/a6,-(SP) ; muss so bleiben movea.l a0,a2 ; A2 : Window movea.l a1,a3 ; A3 : Gadget bclr.b #GB_SELECTED,gg_Flags+1(a3) beq.s norefresh ; Gleicher wie vorher ---> fertig commoncont: move.l a2,d0 ; Window beq.s norefresh ; Null ---> Kein Refresh movea.l _IntuitionBase,a6 JSRLIB RemoveGadget move.l d0,d4 ; D4 : Gadget-Position moveq.l #0,d0 ; Farbe 0 movea.l wd_RPort(a2),a1 ; Window's RastPort movea.l _GfxBase,a6 JSRLIB SetAPen ; Farbe setzen moveq.l #RP_JAM2,d0 movea.l wd_RPort(a2),a1 ; Window's RastPort JSRLIB SetDrMd ; Modus setzen movea.l wd_RPort(a2),a1 movem.w gg_LeftEdge(a3),d0-d3 ; Alles auf einmal! btst #GB_RELRIGHT,gg_Flags+1(a3) beq.s 1$ add.w wd_Width(a2),d0 ; Korrektur von GRELRIGHT subq.w #1,d0 1$: btst #GB_RELBOTTOM,gg_Flags+1(a3) beq.s 2$ add.w wd_Height(a2),d1 ; Korrektur von GRELBOTTOM subq.w #1,d1 2$: add.w d0,d2 ; Width -> X2 add.w d1,d3 ; Height -> Y2 subq.w #1,d2 subq.w #1,d3 JSRLIB RectFill ; Gadget löschen move.l d4,d0 ; Gadget-Position movea.l a2,a0 ; Window movea.l a3,a1 ; Gadget movea.l _IntuitionBase,a6 JSRLIB AddGadget movea.l a3,a0 ; Gadget movea.l a2,a1 ; Window suba.l a2,a2 ; Requester moveq.l #1,d0 ; nur dieses Gadget JSRLIB RefreshGList norefresh: movem.l (SP)+,d0-d4/a0-a3/a6 rts END