consider screens which haven't finished their initialization as shown. this fixes...
authorFelix Domke <tmbinc@elitedvb.net>
Mon, 23 Apr 2007 22:10:04 +0000 (22:10 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Mon, 23 Apr 2007 22:10:04 +0000 (22:10 +0000)
lib/python/Screens/Screen.py
mytest.py

index 46b94fd..a6106e1 100644 (file)
@@ -22,7 +22,7 @@ class Screen(dict, HTMLSkin, GUISkin):
                self.onHide = [ ]
 
                self.execing = False
-               self.shown = False
+               self.shown = True
 
                self.renderer = [ ]
 
@@ -113,8 +113,8 @@ class Screen(dict, HTMLSkin, GUISkin):
        def setFocus(self, o):
                self.instance.setFocus(o.instance)
 
-       def show(self):
-               if self.shown or not self.instance:
+       def show(self, force = False):
+               if (self.shown and not force) or not self.instance:
                        return
                self.shown = True
                self.instance.show()
index 93c4214..452dd3d 100644 (file)
--- a/mytest.py
+++ b/mytest.py
@@ -173,8 +173,12 @@ class Session:
 
                # when execBegin opened a new dialog, don't bother showing the old one.
                if c == self.current_dialog and do_show:
-                       c.show()
-               
+                       # this is the first show() for each screen.
+                       # screen.shown is already true, because that resembles the state 
+                       # ("not-yet-shown-but-will-be-shown") best, so c.show() would just do nothing.
+                       # show(force=True) will show in any case.
+                       c.show(force = True)
+
        def execEnd(self, last=True):
                assert self.in_exec
                self.in_exec = False