aboutsummaryrefslogtreecommitdiff
path: root/src/base_tab/BaseGameTab.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/base_tab/BaseGameTab.cpp')
-rw-r--r--src/base_tab/BaseGameTab.cpp24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/base_tab/BaseGameTab.cpp b/src/base_tab/BaseGameTab.cpp
index ae652cc..a652478 100644
--- a/src/base_tab/BaseGameTab.cpp
+++ b/src/base_tab/BaseGameTab.cpp
@@ -70,7 +70,7 @@ void BaseGameTab::OnSave(wxCommandEvent &event) {
edited_games.end()); // Add edited game (since they are also deleted)
base->Save(deleted, new_games_bases, new_games);
- // CLose all opened games in this database
+ // Close all opened games in this database
wxCommandEvent closeLinkedTabEvent(CLOSE_LINKED_TAB, GetId());
closeLinkedTabEvent.SetClientData(main_tab);
ProcessEvent(closeLinkedTabEvent);
@@ -82,17 +82,23 @@ void BaseGameTab::OnSave(wxCommandEvent &event) {
}
void BaseGameTab::OnOpenGame(wxListEvent &event) {
- wxLogDebug("Open!");
long id = std::stoi(event.GetItem().GetText().ToStdString());
std::shared_ptr<Game> *g = new std::shared_ptr<Game>(base->GetGame(id));
if (g != NULL) {
- edited[id]=*g;
- deleted.push_back(id);
- game_list->SetItemBackgroundColour(event.GetIndex(), *wxGREEN);
- wxCommandEvent openGameEvent(OPEN_GAME_EVENT, GetId());
- openGameEvent.SetEventObject(this);
- openGameEvent.SetClientData(g);
- ProcessEvent(openGameEvent);
+ if(edited.find(id) != edited.end()){
+ // TODO: Focus on the game tab and if close reopen it
+ wxLogDebug("Already opened!");
+ }
+ else {
+ wxLogDebug("Open game");
+ edited[id]=*g;
+ deleted.push_back(id);
+ game_list->SetItemBackgroundColour(event.GetIndex(), *wxGREEN);
+ wxCommandEvent openGameEvent(OPEN_GAME_EVENT, GetId());
+ openGameEvent.SetEventObject(this);
+ openGameEvent.SetClientData(g);
+ ProcessEvent(openGameEvent);
+ }
}
}