diff --git a/src/widget/widget.cpp b/src/widget/widget.cpp index 3fd11f795..e651b3647 100644 --- a/src/widget/widget.cpp +++ b/src/widget/widget.cpp @@ -55,6 +55,7 @@ #include "src/model/friend.h" #include "src/friendlist.h" #include "src/model/group.h" +#include "src/model/profile/profileinfo.h" #include "src/grouplist.h" #include "src/net/autoupdate.h" #include "src/nexus.h" @@ -73,8 +74,6 @@ #include "src/widget/translator.h" #include "tool/removefrienddialog.h" -#include - bool toxActivateEventHandler(const QByteArray&) { Widget* widget = Nexus::getDesktopGUI(); @@ -1132,16 +1131,23 @@ void Widget::openDialog(GenericChatroomWidget* widget, bool newWindow) GenericChatForm* form; const Friend* frnd = widget->getFriend(); if (frnd) { - form = chatForms[frnd->getId()]; id = frnd->getId(); + form = chatForms[id]; } else { Group* g = widget->getGroup(); form = g->getChatForm(); id = g->getId(); } - ContentDialog::focusFriend(id); - bool chatFormIsSet = ContentDialog::friendWidgetExists(id); + bool chatFormIsSet; + if (frnd) { + ContentDialog::focusFriend(id); + chatFormIsSet = ContentDialog::friendWidgetExists(id); + } else { + ContentDialog::focusGroup(id); + chatFormIsSet = ContentDialog::groupWidgetExists(id); + } + if ((chatFormIsSet || form->isVisible()) && !newWindow) { return; }