# # # patch "src/view/DatabaseWindow.cpp" # from [e1fd8f4486121956aded2e1d68bebd9df0a2302e] # to [491b36f2e124643652255aa67c209057dedeb45c] # # patch "src/view/DatabaseWindow.h" # from [7f0562511c36acfb89b99df42f8550d5f3e4dda3] # to [fcbed5e70a24525711b45b6f840dde9c9fa94527] # # patch "src/view/MainWindow.h" # from [11442617d19c644fd50a46ccebf34bd2048c2052] # to [aec45dc484db45f56d74532941abe658e385d6f5] # # patch "src/view/WorkspaceWindow.cpp" # from [c10f2d00a86eb48c8436b52f8376012d6f27d996] # to [c0edca2787683a449e4f3a1a540cbeb2a122fe83] # ============================================================ --- src/view/DatabaseWindow.cpp e1fd8f4486121956aded2e1d68bebd9df0a2302e +++ src/view/DatabaseWindow.cpp 491b36f2e124643652255aa67c209057dedeb45c @@ -27,7 +27,7 @@ #include #include -DatabaseWindow::DatabaseWindow() : MainWindow() {} +DatabaseWindow::DatabaseWindow() : MainWindow(), loadedDatabase(0) {} DatabaseWindow::~DatabaseWindow() { ============================================================ --- src/view/DatabaseWindow.h 7f0562511c36acfb89b99df42f8550d5f3e4dda3 +++ src/view/DatabaseWindow.h fcbed5e70a24525711b45b6f840dde9c9fa94527 @@ -31,7 +31,7 @@ public: Q_OBJECT public: DatabaseWindow(); - ~DatabaseWindow(); + virtual ~DatabaseWindow(); virtual void init(); virtual void setup(); ============================================================ --- src/view/MainWindow.h 11442617d19c644fd50a46ccebf34bd2048c2052 +++ src/view/MainWindow.h aec45dc484db45f56d74532941abe658e385d6f5 @@ -30,7 +30,7 @@ public: Q_OBJECT public: MainWindow(); - ~MainWindow(); + virtual ~MainWindow(); virtual void init(); virtual void setup() = 0; virtual void load(const QString &) = 0; ============================================================ --- src/view/WorkspaceWindow.cpp c10f2d00a86eb48c8436b52f8376012d6f27d996 +++ src/view/WorkspaceWindow.cpp c0edca2787683a449e4f3a1a540cbeb2a122fe83 @@ -28,20 +28,26 @@ #include "WorkspaceMenuBar.h" #include "WorkspaceDialogManager.h" -WorkspaceWindow::WorkspaceWindow() : DatabaseWindow() {} +WorkspaceWindow::WorkspaceWindow() : DatabaseWindow(), mainSplitter(0), + listSplitter(0), treeView(0), listView(0), attrView(0), statusBar(0), + invModel(0), attrModel(0), proxyModelFolderTree(0), proxyModelFileList(0) {} WorkspaceWindow::~WorkspaceWindow() { - if (mainSplitter) delete mainSplitter; - if (listSplitter) delete listSplitter; + // order is important here - at first the views inside the splitters, + // then the splitters themselves! if (treeView) delete treeView; if (listView) delete listView; if (attrView) delete attrView; + if (listSplitter) delete listSplitter; + if (mainSplitter) delete mainSplitter; if (statusBar) delete statusBar; - if (invModel) delete invModel; - if (attrModel) delete attrModel; + + // do the same with the models if (proxyModelFolderTree) delete proxyModelFolderTree; if (proxyModelFileList) delete proxyModelFileList; + if (invModel) delete invModel; + if (attrModel) delete attrModel; } void WorkspaceWindow::init()