1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

fix(chatform): Subscribe on accept and reject buttons once

Fix #4799

For every call was created new connection. First call was success. The second
call leaded to double answer: after the second core removes 'friendNum' from
'calls' list and cancels call. The third call leaded to triple answer, where the
first two same as before and the last one - tried to answer on call with removed
'friendNum' => assert failed.
This commit is contained in:
Diadlo 2017-11-18 02:06:46 +03:00
parent f4a3bb2812
commit d77fbb4b19
No known key found for this signature in database
GPG Key ID: 5AF9F2E29107C727
2 changed files with 7 additions and 4 deletions

View File

@ -113,6 +113,7 @@ ChatForm::ChatForm(Friend* chatFriend)
: f(chatFriend) : f(chatFriend)
, callDuration(new QLabel(this)) , callDuration(new QLabel(this))
, isTyping(false) , isTyping(false)
, lastCallIsVideo{false}
{ {
setName(f->getDisplayedName()); setName(f->getDisplayedName());
@ -190,6 +191,10 @@ ChatForm::ChatForm(Friend* chatFriend)
connect(headWidget, &ChatFormHeader::nameChanged, this, [=](const QString& newName) { connect(headWidget, &ChatFormHeader::nameChanged, this, [=](const QString& newName) {
f->setAlias(newName); f->setAlias(newName);
}); });
connect(headWidget, &ChatFormHeader::callAccepted, this, [this] {
onAnswerCallTriggered(lastCallIsVideo);
});
connect(headWidget, &ChatFormHeader::callRejected, this, &ChatForm::onRejectCallTriggered);
updateCallButtons(); updateCallButtons();
setAcceptDrops(true); setAcceptDrops(true);
@ -345,10 +350,7 @@ void ChatForm::onAvInvite(uint32_t friendId, bool video)
onAvStart(friendId, video); onAvStart(friendId, video);
} else { } else {
headWidget->showCallConfirm(video); headWidget->showCallConfirm(video);
connect(headWidget, &ChatFormHeader::callAccepted, this, [this, video] { lastCallIsVideo = video;
onAnswerCallTriggered(video);
});
connect(headWidget, &ChatFormHeader::callRejected, this, &ChatForm::onRejectCallTriggered);
auto msg = ChatMessage::createChatInfoMessage(tr("%1 calling").arg(displayedName), auto msg = ChatMessage::createChatInfoMessage(tr("%1 calling").arg(displayedName),
ChatMessage::INFO, QDateTime::currentDateTime()); ChatMessage::INFO, QDateTime::currentDateTime());
insertChatMessage(msg); insertChatMessage(msg);

View File

@ -134,6 +134,7 @@ private:
QHash<uint, FileTransferInstance*> ftransWidgets; QHash<uint, FileTransferInstance*> ftransWidgets;
bool isTyping; bool isTyping;
bool lastCallIsVideo;
}; };
#endif // CHATFORM_H #endif // CHATFORM_H