Revert "consolidate full refresh logic in widgets.Panel"

This reverts commit 33787473f0.

I've already found another use case where we need a more general
implementation -- modal dialogs that inherit from FramedScreen that
appear and disappear
develop
Myk Taylor 2022-12-30 22:13:53 -08:00
parent 33787473f0
commit dd0cc087d5
No known key found for this signature in database
3 changed files with 12 additions and 5 deletions

@ -2366,6 +2366,12 @@ Supported callbacks and fields are:
In order to make a dialog where portions of the parent viewscreen are still
visible in the background, call ``screen:renderParent()``.
If artifacts are left on the parent even after this function is called, such
as when the window is dragged or is resized, any code can set
``gui.Screen.request_full_screen_refresh`` to ``true``. Then when
``screen.renderParent()`` is next called, it will do a full flush of the
graphics and clear the screen of artifacts.
* ``function screen:onIdle()``
Called every frame when the screen is on top of the stack.

@ -597,6 +597,7 @@ end
Screen = defclass(Screen, View)
Screen.text_input_mode = false
Screen.request_full_screen_refresh = false
function Screen:postinit()
self:onResize(dscreen.getWindowSize())
@ -622,6 +623,10 @@ function Screen:renderParent()
else
dscreen.clear()
end
if Screen.request_full_screen_refresh then
df.global.gps.force_full_display_count = 1
Screen.request_full_screen_refresh = false
end
end
function Screen:sendInputToParent(...)

@ -442,7 +442,7 @@ end
-- adding gaps between widgets according to self.autoarrange_gap.
function Panel:postUpdateLayout()
-- don't leave artifacts behind on the parent screen when we move
self.request_full_screen_refresh = true
gui.Screen.request_full_screen_refresh = true
if not self.autoarrange_subviews then return end
@ -464,10 +464,6 @@ end
function Panel:onRenderFrame(dc, rect)
Panel.super.onRenderFrame(self, dc, rect)
if self.request_full_screen_refresh then
df.global.gps.force_full_display_count = 1
self.request_full_screen_refresh = false
end
if not self.frame_style then return end
gui.paint_frame(dc, rect, self.frame_style, self.frame_title)
if self.kbd_get_pos then