diff --git a/res/WEEGUI b/res/WEEGUI index cc8d5c6..599094f 100644 Binary files a/res/WEEGUI and b/res/WEEGUI differ diff --git a/src/WeeGUI_MLI.s b/src/WeeGUI_MLI.s index 60b95e7..86ce176 100644 --- a/src/WeeGUI_MLI.s +++ b/src/WeeGUI_MLI.s @@ -73,8 +73,9 @@ WGSetContentWidth = 78 WGSetContentHeight = 80 WGStrokeRoundRect = 82 WGCreateRadio = 84 -WGReset = 86 +WGResetAll = 86 WGGetState = 88 WGPendingClick = 90 WGClearPendingClick = 92 +WGResetView = 94 diff --git a/src/ui.main.a b/src/ui.main.a index 11fca24..1a4b89e 100644 --- a/src/ui.main.a +++ b/src/ui.main.a @@ -40,7 +40,7 @@ gViewInUse ;------------------------------------------------------------------------------ !zone { PaintMain - ldx #WGReset + ldx #WGResetAll jsr WeeGUI stz gViewInUse+ID_BOXART stz gViewInUse+ID_HINTS @@ -95,6 +95,7 @@ RepaintMainIfDirty ldx #WGClearScreen ; clear screen jsr WeeGUI + jsr PaintTitleBar ; paint top bar lda #4 ; paint horizontal separator bar @@ -110,25 +111,33 @@ RepaintMainIfDirty bne - ldx #WGSyncGlobalCursor jsr WeeGUI - .nohome - lda #ID_INFO - jsr WGResetView + ldx #WGSelectView ; delete info box but leave its contents on screen + lda #ID_INFO ; (harmless if it doesn't exist yet) + jsr WeeGUI + ldx #WGResetView + jsr WeeGUI - lda #ID_DESCRIPTION - jsr WGResetView + ldx #WGSelectView ; delete description box but leave its contents on screen + lda #ID_DESCRIPTION ; (harmless if it doesn't exist yet) + jsr WeeGUI + ldx #WGResetView + jsr WeeGUI + + ldx #WGSelectView ; WeeGUI does NOT like repainting if the selected view does not exist + lda #ID_PREVIOUS + jsr WeeGUI ldx #WGViewPaintAll ; repaint all WeeGUI-controlled UI elements jsr WeeGUI - ldx #WGCreateView ; create borderless frame for game title and info - +LDADDR kViewInfo + ldx #WGCreateView ; (re)create borderless frame for game title and info + +LDADDR kViewInfo ; (has the nice side effect of resetting the scroll) +STAY PARAM0 jsr WeeGUI + jsr PaintInfoView ; paint contents of info box - jsr PaintInfoView ; paint info box manually - - ldx #WGCreateView ; create scrollable frame for game description text + ldx #WGCreateView ; (re)create scrollable frame for game description text +LDADDR kViewDescription +STAY PARAM0 jsr WeeGUI @@ -136,32 +145,11 @@ RepaintMainIfDirty +LDADDR PaintDescriptionView +STAY PARAM0 jsr WeeGUI - - ldx #WGSelectView ; reset scrolling of description box - lda #ID_DESCRIPTION + ldx #WGPaintView ; paint frame of description box jsr WeeGUI - ldx #WGScrollX - lda #0 - jsr WeeGUI - ldx #WGScrollY - lda #0 - jsr WeeGUI - ldx #WGPaintView - jsr WeeGUI - jmp PaintDescriptionView ; paint description box manually + jmp PaintDescriptionView ; paint contents of description box } -WGResetView -WG_VIEWRECORDS=$59B5 - asl - asl - asl - asl - tay - lda #0 - sta WG_VIEWRECORDS+2,y - rts - ;------------------------------------------------------------------------------ ; CreateOrDestroyButton ; create or destroy a WeeGUI Button view, based on per-game options @@ -224,8 +212,8 @@ CreateOrDestroyButton jsr WeeGUI ldx #WGEraseView jsr WeeGUI - lda .viewID - jsr WGResetView + ldx #WGResetView + jsr WeeGUI .done rts } diff --git a/src/ui.options.a b/src/ui.options.a index 84a7faa..7ac5cce 100644 --- a/src/ui.options.a +++ b/src/ui.options.a @@ -46,7 +46,7 @@ ID_OPTIONS_CANCEL = 7 OptionsDialog ldx #$FF txs - ldx #WGReset ; reset WeeGUI + ldx #WGResetAll ; reset WeeGUI, destroy all views jsr WeeGUI ldx #WGCreateView ; create frame