OSDN Git Service

[denncoCreator] fixed crash issue in saveAll action.
authortkawata <tkawata@users.sourceforge.jp>
Sat, 6 Oct 2012 02:55:35 +0000 (11:55 +0900)
committertkawata <tkawata@users.sourceforge.jp>
Sat, 6 Oct 2012 02:55:35 +0000 (11:55 +0900)
Source/dccreator.cpp
Source/visualizer/dcglvisualizerwidget.cpp
Source/visualizer/toolwindow/dctoolwindowbase.h
Source/visualizer/toolwindow/dctoolwindowcellcodeeditor.cpp

index 30ab345..30ef9f5 100644 (file)
@@ -168,7 +168,8 @@ bool DCCreator::saveAll(bool showResultInMessageBox)
 {
     bool r = false;
 
-    getCellCodeEditor()->saveScriptToFile();
+    if (getCellCodeEditor()->getIsOnStage())
+        getCellCodeEditor()->saveScriptToFile();
 
 
     if (d_scene && d_vcontent)
index 5d6889a..1adc65d 100644 (file)
@@ -452,7 +452,7 @@ void DCUIGraphicsScene::sceneChanged(const void *requester, DCScene *scene)
         removeToolWindow(toolWindow);
     }
 
-    if (d_creator->getCellCodeEditor()->graphicsProxyWidget())
+    if (d_creator->getCellCodeEditor()->getIsOnStage())
     {
         removeToolWindow(d_creator->getCellCodeEditor());
     }
@@ -1289,7 +1289,7 @@ void DCUIGraphicsScene::updateCellCodeEditorToolWindow()
 
 void DCUIGraphicsScene::closeCellCodeEditorToolWindow()
 {
-    if (d_creator->getCellCodeEditor()->graphicsProxyWidget())
+    if (d_creator->getCellCodeEditor()->getIsOnStage())
     {
         removeToolWindow(d_creator->getCellCodeEditor());
     }
index afa914b..7e98e22 100644 (file)
@@ -74,6 +74,7 @@ public:
     DCCreator*      getController() const { return d_creator; }
     int             getTitleButtonHeight() const { return d_titleButtonHeight; }
     virtual int     getPosPriority() const = 0;
+    bool            getIsOnStage() const { return graphicsProxyWidget() != NULL; }
     QVBoxLayout*    contentLayout() { return d_layout; }
 
     void            setButtonedWindowTitle(const QString &title);
index 1083756..dfa777d 100644 (file)
@@ -421,7 +421,8 @@ void DCToolWindowCellCodeEditor::saveScriptToFile()
         break;
 
     case CUSTOMSCRIPT_EDIT_MODE:
-        d_ownerCell->saveCustomScript(d_editor->toPlainText());
+        if (d_ownerCell)
+            d_ownerCell->saveCustomScript(d_editor->toPlainText());
         break;
 
     }