diff --git a/debian/changelog b/debian/changelog index 87948b3e..d5dd39f4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +kylin-nm (4.10.0.0-ok0.9) nile; urgency=medium + + * BUG:#240566 【兆芯KX6000】【冒烟1级】【WiFi】控制面板多次点击未连接的WiFi,高概率出现密码输入框不显示输入光标 + * 需求:无 + * 其他改动说明:更新翻译 + * 其他改动影响域:无 + + -- lixiang1 Thu, 25 Jul 2024 09:31:57 +0800 + kylin-nm (4.10.0.0-ok0.8) nile; urgency=medium * BUG:无 diff --git a/src/frontend/mainwindow.cpp b/src/frontend/mainwindow.cpp index a72ea88a..be72f8d2 100644 --- a/src/frontend/mainwindow.cpp +++ b/src/frontend/mainwindow.cpp @@ -537,31 +537,41 @@ void MainWindow::resetWindowPosition() #define PANEL_LEFT 2 #define PANEL_RIGHT 3 //#define PANEL_BOTTOM 4 - QRect availableGeo = QGuiApplication::screenAt(QCursor::pos())->geometry(); - int x, y; - switch(m_panelPosition){ - //任务栏位于上方 - case PANEL_TOP: - x = availableGeo.x() + availableGeo.width() - this->width() - MARGIN; - y = availableGeo.y() + m_panelSize + MARGIN; +#define MARGIN 8 + QDBusInterface iface("org.ukui.panel", + "/panel/position", + "org.ukui.panel", + QDBusConnection::sessionBus()); + QDBusReply reply=iface.call("GetPrimaryScreenGeometry"); + QVariantList position_list=reply.value(); + + /* + * 通过这个dbus接口获取到的6个参数分别为 :可用屏幕大小的x坐标、y坐标、宽度、高度,任务栏位置 + */ + QRect rect; + switch(reply.value().at(4).toInt()){ + case 1: + rect = QRect(position_list.at(0).toInt()+position_list.at(2).toInt()-this->width()-MARGIN, + position_list.at(1).toInt()+MARGIN, + this->width(),this->height()); break; - //任务栏位于左边 - case PANEL_LEFT: - x = availableGeo.x() + m_panelSize + MARGIN; - y = availableGeo.y() + availableGeo.height() - this->height() - MARGIN; + case 2: + rect = QRect(position_list.at(0).toInt()+MARGIN, + position_list.at(1).toInt()+reply.value().at(3).toInt()-this->height()-MARGIN, + this->width(),this->height()); break; - //任务栏位于右边 - case PANEL_RIGHT: - x = availableGeo.x() + availableGeo.width() - m_panelSize - this->width() - MARGIN; - y = availableGeo.y() + availableGeo.height() - this->height() - MARGIN; + case 3: + rect = QRect(position_list.at(0).toInt()+position_list.at(2).toInt()-this->width()-MARGIN, + position_list.at(1).toInt()+reply.value().at(3).toInt()-this->height()-MARGIN, + this->width(),this->height()); break; - //任务栏位于下方 default: - x = availableGeo.x() + availableGeo.width() - this->width() - MARGIN; - y = availableGeo.y() + availableGeo.height() - m_panelSize - this->height() - MARGIN; + rect = QRect(position_list.at(0).toInt()+position_list.at(2).toInt()-this->width()-MARGIN, + position_list.at(1).toInt()+reply.value().at(3).toInt()-this->height()-MARGIN, + this->width(),this->height()); break; } - kdk::WindowManager::setGeometry(this->windowHandle(), QRect(x, y, this->width(), this->height())); + kdk::WindowManager::setGeometry(this->windowHandle(), rect); qDebug() << " Position of ukui-panel is " << m_panelPosition << "; Position of mainwindow is " << this->geometry() << "." << Q_FUNC_INFO << __LINE__; } @@ -643,6 +653,7 @@ void MainWindow::showByWaylandHelper() //去除窗管标题栏,传入参数为QWidget* kdk::UkuiStyleHelper::self()->removeHeader(this); this->show(); + this->setFocus(); QWindow* window = this->windowHandle(); if (window) { //跳过任务栏和分页器的属性