diff --git a/src/preview/PreviewModel.cpp b/src/preview/PreviewModel.cpp index cb8adfd06..8a0ff5985 100644 --- a/src/preview/PreviewModel.cpp +++ b/src/preview/PreviewModel.cpp @@ -166,7 +166,7 @@ void PreviewModel::UpdateComments(int pageNumber) { for(int i = 0; i < saveComments->size(); i++) delete saveComments->at(i); - saveComments->clear(); + delete saveComments; saveComments = NULL; } @@ -295,6 +295,7 @@ void PreviewModel::Update() for(int i = 0; i < saveComments->size(); i++) delete saveComments->at(i); saveComments->clear(); + delete saveComments; saveComments = NULL; } commentsLoaded = true; diff --git a/src/preview/PreviewView.cpp b/src/preview/PreviewView.cpp index 1859a2a7d..005cef9d7 100644 --- a/src/preview/PreviewView.cpp +++ b/src/preview/PreviewView.cpp @@ -489,15 +489,18 @@ void PreviewView::NotifyCommentsPageChanged(PreviewModel * sender) void PreviewView::NotifyCommentsChanged(PreviewModel * sender) { - if(sender->GetComments()) - { - comments = std::vector(sender->GetComments()->begin(), sender->GetComments()->end()); - } - else - { - comments.clear(); - } + std::vector * comments = sender->GetComments(); + for(int i = 0; i < commentComponents.size(); i++) + { + commentsPanel->RemoveChild(commentComponents[i]); + delete commentComponents[i]; + } + commentComponents.clear(); + commentTextComponents.clear(); + commentsPanel->InnerSize = ui::Point(0, 0); + + if(comments) { for(int i = 0; i < commentComponents.size(); i++) { @@ -510,10 +513,10 @@ void PreviewView::NotifyCommentsChanged(PreviewModel * sender) int currentY = 0;//-yOffset; ui::Label * tempUsername; ui::Label * tempComment; - for(int i = 0; i < comments.size(); i++) + for(int i = 0; i < comments->size(); i++) { int usernameY = currentY+5, commentY; - tempUsername = new ui::Label(ui::Point(5, currentY+5), ui::Point(Size.X-((XRES/2) + 13), 16), comments[i].authorName); + tempUsername = new ui::Label(ui::Point(5, currentY+5), ui::Point(Size.X-((XRES/2) + 13), 16), comments->at(i)->authorName); tempUsername->Appearance.HorizontalAlign = ui::Appearance::AlignLeft; tempUsername->Appearance.VerticalAlign = ui::Appearance::AlignBottom; currentY += 16; @@ -523,7 +526,7 @@ void PreviewView::NotifyCommentsChanged(PreviewModel * sender) commentY = currentY+5; - tempComment = new ui::Label(ui::Point(5, currentY+5), ui::Point(Size.X-((XRES/2) + 13), -1), comments[i].comment); + tempComment = new ui::Label(ui::Point(5, currentY+5), ui::Point(Size.X-((XRES/2) + 13), -1), comments->at(i)->comment); tempComment->SetMultiline(true); tempComment->Appearance.HorizontalAlign = ui::Appearance::AlignLeft; tempComment->Appearance.VerticalAlign = ui::Appearance::AlignTop; diff --git a/src/preview/PreviewView.h b/src/preview/PreviewView.h index 10dba4d99..03a3a47c2 100644 --- a/src/preview/PreviewView.h +++ b/src/preview/PreviewView.h @@ -37,7 +37,6 @@ class PreviewView: public ui::Window { ui::Label * viewsLabel; ui::Textbox * saveIDTextbox; ui::ScrollPanel * commentsPanel; - std::vector comments; std::vector commentComponents; std::vector commentTextComponents; int votesUp;