|
|
@@ -690,6 +690,7 @@ void MainPanel::onChatWindowCloseRequested()
|
|
|
// 非推流:回归嵌入显示
|
|
|
showChatEmbedded();
|
|
|
if (m_chatButton) m_chatButton->setText(tr("聊天"));
|
|
|
+ applyModeLayout();
|
|
|
}
|
|
|
|
|
|
void MainPanel::onChatButtonClicked()
|
|
|
@@ -747,11 +748,13 @@ void MainPanel::onChatButtonClicked()
|
|
|
showChatEmbedded();
|
|
|
if (m_chatButton)
|
|
|
m_chatButton->setText(tr("聊天"));
|
|
|
+ applyModeLayout();
|
|
|
} else {
|
|
|
// 目前为嵌入状态,弹出为独立窗口
|
|
|
showChatStandalone();
|
|
|
if (m_chatButton)
|
|
|
m_chatButton->setText(tr("嵌入聊天"));
|
|
|
+ applyModeLayout();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -793,16 +796,20 @@ void MainPanel::applyModeLayout()
|
|
|
const int panelW = width() > 0 ? width() : 1200;
|
|
|
|
|
|
if (isPlayer) {
|
|
|
- // 播放模式:默认折叠右侧,让视频获得更大可视区域
|
|
|
- if (m_rightWidget) m_rightWidget->hide();
|
|
|
-
|
|
|
- // 如果聊天仍处于嵌入容器,将其弹出为独立窗口,避免占位
|
|
|
- if (chatView && m_chatContainer && chatView->parent() == m_chatContainer) {
|
|
|
- showChatStandalone();
|
|
|
+ // 播放模式:根据聊天是否嵌入来决定右侧面板显示
|
|
|
+ const bool embeddedChat = (chatView && m_chatContainer && chatView->parent() == m_chatContainer);
|
|
|
+ if (embeddedChat) {
|
|
|
+ if (m_rightWidget) m_rightWidget->show();
|
|
|
+ int chatW = panelW / 3;
|
|
|
+ chatW = qBound(300, chatW, 420);
|
|
|
+ const int leftW = qMax(0, panelW - chatW);
|
|
|
+ QList<int> sizes; sizes << leftW << chatW;
|
|
|
+ splitter->setSizes(sizes);
|
|
|
+ } else {
|
|
|
+ if (m_rightWidget) m_rightWidget->hide();
|
|
|
+ QList<int> sizes; sizes << panelW << 0;
|
|
|
+ splitter->setSizes(sizes);
|
|
|
}
|
|
|
- // 左侧铺满
|
|
|
- QList<int> sizes; sizes << panelW << 0;
|
|
|
- splitter->setSizes(sizes);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -860,6 +867,7 @@ bool MainPanel::eventFilter(QObject *watched, QEvent *event)
|
|
|
chatView->show();
|
|
|
if (m_chatButton)
|
|
|
m_chatButton->setText(tr("聊天"));
|
|
|
+ applyModeLayout();
|
|
|
}
|
|
|
return false; // 继续关闭流程
|
|
|
}
|