fix: 修复任务栏在智能隐藏模式下窗口拖动到任务栏下方没有隐藏的问题

1.计算窗口的位置和大小的时候,调用的接口获取到的数据不正确,已完善从上游xcb相关的接口获取其他相关的位置等数据,重新计算得到正确的窗口信息
2.松开鼠标的时候没有激活定时器处理,已增加松开鼠标后,对当前活动窗口的处理

Log:
Influence: 任务栏设置为智能隐藏,在窗口移动到任务栏下方或者移出来,观察隐藏状态是否正确
Bug: https://pms.uniontech.com/bug-view-154513.html
Change-Id: I2bcc4c0d922349a6c98636caab03bdf1a108964c
This commit is contained in:
donghualin
2022-10-13 05:36:33 +00:00
parent fc1f9038f0
commit bb3473e74a
3 changed files with 143 additions and 19 deletions

View File

@ -102,28 +102,44 @@ void X11Manager::listenXEventUseXlib()
XEvent event;
XNextEvent (dpy, &event);
if (event.type == DestroyNotify) {
XDestroyWindowEvent *eD = (XDestroyWindowEvent *) (&event);
switch (event.type) {
case DestroyNotify: {
XDestroyWindowEvent *eD = (XDestroyWindowEvent *)(&event);
qDebug() << "DestroyNotify windowId=" << eD->window;
handleDestroyNotifyEvent(XWindow(eD->window));
} else if (event.type == MapNotify) {
break;
}
case MapNotify: {
XMapEvent *eM = (XMapEvent *)(&event);
qDebug() << "MapNotify windowId=" << eM->window;
handleMapNotifyEvent(XWindow(eM->window));
} else if (event.type == ConfigureNotify ) {
XConfigureEvent *eC = (XConfigureEvent *) (&event);
break;
}
case ConfigureNotify: {
XConfigureEvent *eC = (XConfigureEvent *)(&event);
qDebug() << "ConfigureNotify windowId=" << eC->window;
handleConfigureNotifyEvent(XWindow(eC->window), eC->x, eC->y, eC->width, eC->height);
} else if (event.type == PropertyNotify) {
XPropertyEvent *eP = (XPropertyEvent *) (&event);
break;
}
case PropertyNotify: {
XPropertyEvent *eP = (XPropertyEvent *)(&event);
qDebug() << "PropertyNotify windowId=" << eP->window;
handlePropertyNotifyEvent(XWindow(eP->window), XCBAtom(eP->atom));
} else {
break;
}
case UnmapNotify: {
// 当松开鼠标的时候会触发该事件,在松开鼠标的时候,需要检测当前窗口是否符合智能隐藏的条件,因此在此处加上该功能
// 如果不加上该处理,那么就会出现将窗口从任务栏下方移动到屏幕中央的时候,任务栏不隐藏
handleActiveWindowChangedX();
break;
}
default:
qDebug() << "Unknown event type " << event.type;
break;
}
}