Skip to content

Commit 7ee8905

Browse files
fix: Prevent sidebar from interfering with scroll screenshot auto-scroll
- Added sidebar area detection in scrollShotMouseMoveEvent() to pause auto-scroll when mouse hovers over sidebar - Calculate sidebar rect with pixel ratio when sidebar is visible - Updated mouse position check to include sidebar alongside toolbar and shot option areas - Added exclusive button group for scroll screenshot toolbar buttons to ensure proper radio button behavior - Connected AI Assistant button to scroll button group for bug: https://pms.uniontech.com/bug-view-342295.html
1 parent fec784a commit 7ee8905

2 files changed

Lines changed: 15 additions & 3 deletions

File tree

src/main_window.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5929,8 +5929,17 @@ void MainWindow::scrollShotMouseMoveEvent(int x, int y)
59295929
static_cast<int>(m_toolBar->getShotOptionRect().y() * m_pixelRatio),
59305930
static_cast<int>(m_toolBar->getShotOptionRect().width() * m_pixelRatio),
59315931
static_cast<int>(m_toolBar->getShotOptionRect().height() * m_pixelRatio)};
5932-
// 判断当前鼠标是否在工具栏或截图保存按钮或滚动截图提示上(此时工具栏或截图保存按钮或滚动截图的提示框在捕捉区域内部)
5933-
if (toolBarRect.contains(mouseMovePoint) || shotOptionRect.contains(mouseMovePoint)) {
5932+
// 二级工具栏(SideBar)区域
5933+
QRect sideBarRect;
5934+
if (m_sideBar && m_sideBar->isVisible()) {
5935+
sideBarRect = QRect{static_cast<int>(m_sideBar->x() * m_pixelRatio),
5936+
static_cast<int>(m_sideBar->y() * m_pixelRatio),
5937+
static_cast<int>(m_sideBar->width() * m_pixelRatio),
5938+
static_cast<int>(m_sideBar->height() * m_pixelRatio)};
5939+
}
5940+
5941+
// 判断当前鼠标是否在工具栏或截图保存按钮或滚动截图提示或二级工具栏上(此时这些控件在捕捉区域内部)
5942+
if (toolBarRect.contains(mouseMovePoint) || shotOptionRect.contains(mouseMovePoint) || sideBarRect.contains(mouseMovePoint)) {
59345943
// 滚动截图启动后,鼠标移动到工具栏或保存按钮时,需暂停自动滚动,并取消捕捉区域穿透
59355944
if (0 != m_scrollShotStatus) {
59365945
m_scrollShotStatus = 4;

src/widgets/subtoolwidget.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1433,11 +1433,13 @@ void SubToolWidget::initScrollLabel()
14331433
m_scrollSubTool = new DLabel(this);
14341434
QList<ToolButton *> btnList;
14351435

1436+
QButtonGroup *scrollBtnGroup = new QButtonGroup(this);
1437+
scrollBtnGroup->setExclusive(true);
1438+
14361439
// AI 助手(滚动截图工具栏首位)
14371440
m_aiAssistantScrollButton = new ToolButton();
14381441
m_aiAssistantScrollButton->setIconSize(SMALL_TOOL_ICON_SIZE);
14391442
m_aiAssistantScrollButton->setIcon(QIcon::fromTheme("ai_assistant"));
1440-
14411443
// 设置常驻的 AI Icon 角标
14421444
QString scrollBadgePath = ":/icons/deepin/builtin/texts/ai_badge_32px.svg";
14431445
m_aiAssistantScrollButton->setBadgeIcon(scrollBadgePath);
@@ -1446,6 +1448,7 @@ void SubToolWidget::initScrollLabel()
14461448
Utils::setAccessibility(m_aiAssistantScrollButton, AC_SUBTOOLWIDGET_AI_ASSISTANT_BUTTON);
14471449
m_aiAssistantScrollButton->setFixedSize(TOOL_BUTTON_SIZE);
14481450
installTipHint(m_aiAssistantScrollButton, tr("AI Screenshot (A)"));
1451+
scrollBtnGroup->addButton(m_aiAssistantScrollButton);
14491452
btnList.append(m_aiAssistantScrollButton);
14501453
connect(m_aiAssistantScrollButton, &ToolButton::clicked, this, [=]{
14511454
emit changeShotToolFunc("aiassistant");

0 commit comments

Comments
 (0)