summaryrefslogtreecommitdiff
path: root/src/localbrowser/LocalBrowserController.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-07-21 12:09:59 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-07-21 12:09:59 (GMT)
commit5bf0a084ace0e6b673efa4552b40de8b36e0668e (patch)
tree8683ff6c11167cb3b95f7b4ae65269b3cb6dce98 /src/localbrowser/LocalBrowserController.cpp
parent78b1ffb11dc78130cdb120acf37d5930807bff6c (diff)
downloadpowder-5bf0a084ace0e6b673efa4552b40de8b36e0668e.zip
powder-5bf0a084ace0e6b673efa4552b40de8b36e0668e.tar.gz
Prevent race condition when reloading local stamps, fix task so "after()" gets called and correct stamp name so they actually get deleted"
Diffstat (limited to 'src/localbrowser/LocalBrowserController.cpp')
-rw-r--r--src/localbrowser/LocalBrowserController.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/localbrowser/LocalBrowserController.cpp b/src/localbrowser/LocalBrowserController.cpp
index 47f02bb..28a7c64 100644
--- a/src/localbrowser/LocalBrowserController.cpp
+++ b/src/localbrowser/LocalBrowserController.cpp
@@ -65,8 +65,9 @@ void LocalBrowserController::removeSelectedC()
class RemoveSavesTask : public Task
{
std::vector<std::string> saves;
+ LocalBrowserController * c;
public:
- RemoveSavesTask(std::vector<std::string> saves_) { saves = saves_; }
+ RemoveSavesTask(LocalBrowserController * c, std::vector<std::string> saves_) : c(c) { saves = saves_; }
virtual bool doWork()
{
for(int i = 0; i < saves.size(); i++)
@@ -80,10 +81,18 @@ void LocalBrowserController::removeSelectedC()
}
return true;
}
+ virtual void after()
+ {
+ c->RefreshSavesList();
+ }
};
std::vector<std::string> selected = browserModel->GetSelected();
- new TaskWindow("Removing saves", new RemoveSavesTask(selected));
+ new TaskWindow("Removing saves", new RemoveSavesTask(this, selected));
+}
+
+void LocalBrowserController::RefreshSavesList()
+{
ClearSelection();
browserModel->UpdateSavesList(browserModel->GetPageNum());
}