behave sanely in that situation as well.
void TreeModel::clear() {
removeRows(0, rowCount());
void TreeModel::clear() {
removeRows(0, rowCount());
nickViews[buf] = view;
ui.stackedWidget->addWidget(view);
ui.stackedWidget->setCurrentWidget(view);
nickViews[buf] = view;
ui.stackedWidget->addWidget(view);
ui.stackedWidget->setCurrentWidget(view);
+ connect(buf, SIGNAL(destroyed(QObject *)), this, SLOT(bufferDestroyed(QObject *)));
ui.stackedWidget->removeWidget(view);
view->deleteLater();
}
ui.stackedWidget->removeWidget(view);
view->deleteLater();
}
+
+void NickListWidget::bufferDestroyed(QObject *buf) {
+ if(nickViews.contains((Buffer *)buf)) {
+ NickView *view = nickViews.take((Buffer *)buf);
+ ui.stackedWidget->removeWidget(view);
+ view->deleteLater();
+ }
+}
+
void setBuffer(Buffer *);
void reset();
void setBuffer(Buffer *);
void reset();
+ private slots:
+ void bufferDestroyed(QObject *);
+
private:
Ui::NickListWidget ui;
QHash<Buffer *, NickView *> nickViews;
private:
Ui::NickListWidget ui;
QHash<Buffer *, NickView *> nickViews;
// ui.ownNick->addItem(state->ownNick);
ChatWidget *chatWidget;
// ui.ownNick->addItem(state->ownNick);
ChatWidget *chatWidget;
- if(_chatWidgets.contains(buf->uid())) {
- chatWidget = _chatWidgets[buf->uid()];
+ if(_chatWidgets.contains(buf)) {
+ chatWidget = _chatWidgets[buf];
} else {
chatWidget = new ChatWidget(this);
chatWidget->init(buf->networkName(), buf->name());
} else {
chatWidget = new ChatWidget(this);
chatWidget->init(buf->networkName(), buf->name());
lines.append(dynamic_cast<ChatLine*>(msg));
}
chatWidget->setContents(lines);
lines.append(dynamic_cast<ChatLine*>(msg));
}
chatWidget->setContents(lines);
+ connect(buf, SIGNAL(destroyed(QObject *)), this, SLOT(bufferDestroyed(QObject *)));
connect(buf, SIGNAL(msgAppended(AbstractUiMsg *)), chatWidget, SLOT(appendMsg(AbstractUiMsg *)));
connect(buf, SIGNAL(msgPrepended(AbstractUiMsg *)), chatWidget, SLOT(prependMsg(AbstractUiMsg *)));
connect(buf, SIGNAL(msgAppended(AbstractUiMsg *)), chatWidget, SLOT(appendMsg(AbstractUiMsg *)));
connect(buf, SIGNAL(msgPrepended(AbstractUiMsg *)), chatWidget, SLOT(prependMsg(AbstractUiMsg *)));
- _chatWidgets[buf->uid()] = chatWidget;
+ _chatWidgets[buf] = chatWidget;
ui.stackedWidget->addWidget(chatWidget);
}
ui.stackedWidget->setCurrentWidget(chatWidget);
ui.stackedWidget->addWidget(chatWidget);
}
ui.stackedWidget->setCurrentWidget(chatWidget);
// ui.ownNick->addItem(state->ownNick);
}
// ui.ownNick->addItem(state->ownNick);
}
+void BufferWidget::bufferDestroyed(QObject *buf) {
+ QWidget *widget = _chatWidgets[(Buffer*)buf];
+ ui.stackedWidget->removeWidget(widget);
+ widget->deleteLater();
+}
+
void BufferWidget::saveState() {
}
void BufferWidget::saveState() {
}
/*
void BufferWidget::displayMsg(Message msg) {
chatWidget->appendMsg(msg);
/*
void BufferWidget::displayMsg(Message msg) {
chatWidget->appendMsg(msg);
private slots:
void enterPressed();
void setActive(bool act = true);
private slots:
void enterPressed();
void setActive(bool act = true);
+ void bufferDestroyed(QObject *);
private:
Ui::BufferWidget ui;
//QHash<BufferId, ChatView*> _chatViews;
private:
Ui::BufferWidget ui;
//QHash<BufferId, ChatView*> _chatViews;
- QHash<BufferId, ChatWidget *> _chatWidgets;
+ QHash<Buffer *, ChatWidget *> _chatWidgets;
bool active;
QString _networkName;
bool active;
QString _networkName;
nickViews[buf] = view;
ui.stackedWidget->addWidget(view);
ui.stackedWidget->setCurrentWidget(view);
nickViews[buf] = view;
ui.stackedWidget->addWidget(view);
ui.stackedWidget->setCurrentWidget(view);
+ connect(buf, SIGNAL(destroyed(QObject *)), this, SLOT(bufferDestroyed(QObject *)));
ui.stackedWidget->removeWidget(view);
view->deleteLater();
}
ui.stackedWidget->removeWidget(view);
view->deleteLater();
}
+ nickViews.clear();
+}
+
+void NickListWidget::bufferDestroyed(QObject *buf) {
+ if(nickViews.contains((Buffer *)buf)) {
+ NickView *view = nickViews.take((Buffer *)buf);
+ ui.stackedWidget->removeWidget(view);
+ view->deleteLater();
+ }
void setBuffer(Buffer *);
void reset();
void setBuffer(Buffer *);
void reset();
+ private slots:
+ void bufferDestroyed(QObject *);
+
private:
Ui::NickListWidget ui;
QHash<Buffer *, NickView *> nickViews;
private:
Ui::NickListWidget ui;
QHash<Buffer *, NickView *> nickViews;