Theme Editor: WPS documents rendered within SBS documents can now set backdrops

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27269 a1c6a512-1295-4272-9138-f99709370657
diff --git a/utils/themeeditor/graphics/rbrenderinfo.cpp b/utils/themeeditor/graphics/rbrenderinfo.cpp
index 3116034..0b9ea41 100644
--- a/utils/themeeditor/graphics/rbrenderinfo.cpp
+++ b/utils/themeeditor/graphics/rbrenderinfo.cpp
@@ -23,9 +23,11 @@
 
 RBRenderInfo::RBRenderInfo(ParseTreeModel* model, ProjectModel* project,
                            QMap<QString, QString>* settings,
-                           DeviceState* device, RBScreen* screen)
+                           DeviceState* device, RBScreen* screen,
+                           RBScreen* sbsScreen)
                                :mProject(project), mSettings(settings),
-                               mDevice(device), mScreen(screen), mModel(model)
+                               mDevice(device), mScreen(screen),
+                               mSbsScreen(sbsScreen), mModel(model)
 {
 }
 
@@ -40,6 +42,7 @@
     mSettings = other.mSettings;
     mDevice = other.mDevice;
     mScreen = other.mScreen;
+    mSbsScreen = other.mSbsScreen;
     mModel = other.mModel;
 }
 
@@ -49,6 +52,7 @@
     mSettings = other.mSettings;
     mDevice = other.mDevice;
     mScreen = other.mScreen;
+    mSbsScreen = other.mSbsScreen;
     mModel = other.mModel;
 
     return *this;
diff --git a/utils/themeeditor/graphics/rbrenderinfo.h b/utils/themeeditor/graphics/rbrenderinfo.h
index 0e21938..599a563 100644
--- a/utils/themeeditor/graphics/rbrenderinfo.h
+++ b/utils/themeeditor/graphics/rbrenderinfo.h
@@ -34,7 +34,7 @@
 public:
     RBRenderInfo(ParseTreeModel* model,  ProjectModel* project,
                  QMap<QString, QString>* settings, DeviceState* device,
-                 RBScreen* screen);
+                 RBScreen* screen, RBScreen* sbsScreen = 0);
     RBRenderInfo();
     RBRenderInfo(const RBRenderInfo& other);
     virtual ~RBRenderInfo();
@@ -45,6 +45,7 @@
     DeviceState* device() const{ return mDevice; }
     QMap<QString, QString>* settings() const{ return mSettings; }
     RBScreen* screen() const{ return mScreen; }
+    RBScreen* sbsScreen() const{ return mSbsScreen; }
     ParseTreeModel* model() const{ return mModel; }
 
 private:
@@ -52,6 +53,7 @@
     QMap<QString, QString>* mSettings;
     DeviceState* mDevice;
     RBScreen* mScreen;
+    RBScreen* mSbsScreen;
     ParseTreeModel* mModel;
 };
 
diff --git a/utils/themeeditor/models/parsetreemodel.cpp b/utils/themeeditor/models/parsetreemodel.cpp
index 47b2417..a04a0d9 100644
--- a/utils/themeeditor/models/parsetreemodel.cpp
+++ b/utils/themeeditor/models/parsetreemodel.cpp
@@ -340,7 +340,7 @@
     }
 
     RBScreen* screen = 0;
-    RBRenderInfo info(this, project, &settings, device, screen);
+    RBRenderInfo info(this, project, &settings, device, screen, sbsScreen);
 
     /* Adding the screen */
     if(sbsScreen)
@@ -351,7 +351,7 @@
     if(!sbsScreen)
         scene->addItem(screen);
 
-    info = RBRenderInfo(this, project, &settings, device, screen);
+    info = RBRenderInfo(this, project, &settings, device, screen, sbsScreen);
 
 
     /* Rendering the tree */
diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp
index 1fda29f..7efcbc3 100644
--- a/utils/themeeditor/models/parsetreenode.cpp
+++ b/utils/themeeditor/models/parsetreenode.cpp
@@ -811,7 +811,10 @@
         case '\0':
             /* %X */
             filename = QString(element->params[0].data.text);
-            info.screen()->setBackdrop(filename);
+            if(info.sbsScreen())
+                info.sbsScreen()->setBackdrop(filename);
+            else
+                info.screen()->setBackdrop(filename);
             return true;
         }