summaryrefslogtreecommitdiff
path: root/utils/themeeditor/models/parsetreemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/themeeditor/models/parsetreemodel.cpp')
-rw-r--r--utils/themeeditor/models/parsetreemodel.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/utils/themeeditor/models/parsetreemodel.cpp b/utils/themeeditor/models/parsetreemodel.cpp
index f83443a5e4..e30d0be09d 100644
--- a/utils/themeeditor/models/parsetreemodel.cpp
+++ b/utils/themeeditor/models/parsetreemodel.cpp
@@ -35,7 +35,7 @@
35#include <iostream> 35#include <iostream>
36 36
37ParseTreeModel::ParseTreeModel(const char* document, QObject* parent): 37ParseTreeModel::ParseTreeModel(const char* document, QObject* parent):
38 QAbstractItemModel(parent) 38 QAbstractItemModel(parent), sbsModel(0)
39{ 39{
40 this->tree = skin_parse(document); 40 this->tree = skin_parse(document);
41 41
@@ -54,6 +54,8 @@ ParseTreeModel::~ParseTreeModel()
54 delete root; 54 delete root;
55 if(tree) 55 if(tree)
56 skin_free_tree(tree); 56 skin_free_tree(tree);
57 if(sbsModel)
58 sbsModel->deleteLater();
57} 59}
58 60
59QString ParseTreeModel::genCode() 61QString ParseTreeModel::genCode()
@@ -324,19 +326,22 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project,
324 { 326 {
325 QFile sbs(sbsFile); 327 QFile sbs(sbsFile);
326 sbs.open(QFile::ReadOnly | QFile::Text); 328 sbs.open(QFile::ReadOnly | QFile::Text);
327 ParseTreeModel sbsModel(QString(sbs.readAll()).toAscii());
328 329
329 if(sbsModel.root != 0) 330 if(sbsModel)
331 sbsModel->deleteLater();
332 sbsModel = new ParseTreeModel(QString(sbs.readAll()).toAscii());
333
334 if(sbsModel->root != 0)
330 { 335 {
331 RBRenderInfo sbsInfo(&sbsModel, project, doc, &settings, device, 336 RBRenderInfo sbsInfo(sbsModel, project, doc, &settings, device,
332 sbsScreen); 337 sbsScreen);
333 338
334 sbsScreen = new RBScreen(sbsInfo, remote); 339 sbsScreen = new RBScreen(sbsInfo, remote);
335 scene->addItem(sbsScreen); 340 scene->addItem(sbsScreen);
336 341
337 sbsInfo = RBRenderInfo(&sbsModel, project, doc, &settings, 342 sbsInfo = RBRenderInfo(sbsModel, project, doc, &settings,
338 device, sbsScreen); 343 device, sbsScreen);
339 sbsModel.root->render(sbsInfo); 344 sbsModel->root->render(sbsInfo);
340 } 345 }
341 346
342 } 347 }