From 9bf49b7acbe1654744399a73de363f84d50f1574 Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Wed, 2 Dec 2020 20:15:03 -0500 Subject: Fixed status bar rendering issues in AppGraphics due to double-buffering. --- ag_render.f90 | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) (limited to 'ag_render.f90') diff --git a/ag_render.f90 b/ag_render.f90 index b3b76b1..bddec84 100644 --- a/ag_render.f90 +++ b/ag_render.f90 @@ -387,18 +387,30 @@ contains type(appgraphics_renderer)::self character(*), intent(in)::text - + + ! Double-buffer + integer::i, active_page + + call resetviewport() + call setviewport(0, getmaxy()-self%status_bar_height, getmaxx()+1, getmaxy()+1, .true.) + active_page = getactivepage() self%status_bar_height = 16 - + + do i = 0, 1 + call setactivepage(i) + + call setbkcolor(LIGHTGRAY) + call setcolor(BLACK) + call settextstyle(WINDOWS_FONT, HORIZ_DIR, 12) + + + call clearviewport() + call outtextxy(5, 2, trim(text)) + + end do + call setactivepage(active_page) call resetviewport() - call setbkcolor(LIGHTGRAY) - call setcolor(BLACK) - call settextstyle(WINDOWS_FONT, HORIZ_DIR, 12) - - call bar(0, getmaxy()-self%status_bar_height, getmaxx()+1, getmaxy()+1) - call outtextxy(5, getmaxy()-self%status_bar_height+2, trim(text)) - end subroutine draw_status_bar subroutine draw_scroll_bar(self) @@ -472,7 +484,8 @@ contains self%scroll_id = -1 call draw_address_bar(self) - call draw_status_bar(self, "Welcome to the LR-87 Gemini Client") + !call draw_status_bar(self, "Welcome to the LR-87 Gemini Client") + call self%report_status("Welcome to the LR-87 Gemini Client") call draw_scroll_bar(self) self%background_color = WHITE @@ -859,19 +872,11 @@ contains class(appgraphics_renderer)::self character(*), intent(in)::text character(64), save::last_text - integer::vp, ap if(trim(last_text) == trim(text)) then return end if - vp = getvisualpage() - ap = getactivepage() - - call setactivepage(vp) - call draw_status_bar(self, text) - - call setactivepage(ap) call draw_status_bar(self, text) last_text = text @@ -955,7 +960,7 @@ contains ! Effectively have to redraw everything call draw_address_bar(self, expanding=expanding_horizontally) - call draw_status_bar(self, idle_status) + call self%report_status(idle_status) call draw_scroll_bar(self) call setscrollposition(self%scroll_id, 0) -- cgit v1.2.3