fix: 修复窗口尺寸异常问题

This commit is contained in:
hewenfei 2024-05-24 10:29:54 +08:00
parent a82fe246ac
commit 69000cb2de
4 changed files with 20 additions and 34 deletions

View File

@ -44,9 +44,9 @@ void PopupNotificationWindow::initWindow()
setResizeMode(SharedEngineView::SizeViewToRootObject);
setFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
setColor("transparent");
KWindowSystem::setType(this->winId(), NET::Notification);
new UkuiQuick::WindowProxy(this, UkuiQuick::WindowProxy::SkipTaskBar | UkuiQuick::WindowProxy::SkipSwitcher);
m_windowProxy = new UkuiQuick::WindowProxy2(this);
m_windowProxy->setWindowType(UkuiQuick::WindowType::Notification);
// 监听窗口尺寸变化,屏幕变化
setScreen(Sidebar::ScreenMonitor::getInstance()->getPrimaryScreen());
@ -129,7 +129,7 @@ void PopupNotificationWindow::updateGeometry()
m_notificationPoint.setX(m_notificationPoint.x() - m_sidebarWidth);
}
kdk::WindowManager::setGeometry(this, QRect(m_notificationPoint, QSize(width(), height())));
m_windowProxy->setPosition(m_notificationPoint);
}
void PopupNotificationWindow::updataWindowRegion(QVariantMap windowRect, int contentY)
@ -198,26 +198,12 @@ void PopupNotificationWindow::updateWindowPosition(bool isSidebarShow, int sideb
m_sidebarWidth = sidebarWidth;
int forward = isSidebarShow ? 1 : -1;
m_notificationPoint.setX(m_notificationPoint.x() - sidebarWidth * forward);
kdk::WindowManager::setGeometry(this, QRect(m_notificationPoint, QSize(width(), height())));
m_windowProxy->setPosition(m_notificationPoint);
}
bool PopupNotificationWindow::event(QEvent *event)
{
switch (event->type()) {
case QEvent::Show:
case QEvent::Expose: {
if (isExposed()) {
KWindowSystem::setType(this->winId(), NET::Notification);
// kdk::WindowManager::setSkipTaskBar(this, true);
// kdk::WindowManager::setSkipSwitcher(this, true);
kdk::WindowManager::setGeometry(this, QRect(m_notificationPoint, QSize(width(), height())));
}
break;
}
default:
break;
}
return QQuickWindow::event(event);
return SharedEngineView::event(event);
}
int PopupNotificationWindow::viewWidth() const

View File

@ -24,6 +24,10 @@
#include <QVariant>
#include <shared-engine-view.h>
namespace UkuiQuick {
class WindowProxy2;
}
namespace UkuiNotification {
class PopupNotificationWindow : public UkuiQuick::SharedEngineView
@ -66,6 +70,8 @@ private:
int m_sidebarWidth = 400;
int m_itemWidth = 374;
int m_viewWidth = 374;
UkuiQuick::WindowProxy2 *m_windowProxy {nullptr};
};
}
#endif //UKUI_SIDEBAR_POPUP_NOTIFICATION_WINDOW_H

View File

@ -43,7 +43,7 @@ ShortcutsWindow::ShortcutsWindow(QWindow *parent) : SharedEngineView(parent)
setResizeMode(UkuiQuick::SharedEngineView::SizeViewToRootObject);
// 去除标题栏等
//setFlags(flags() | Qt::FramelessWindowHint);
m_windowProxy = new UkuiQuick::WindowProxy(this);
m_windowProxy = new UkuiQuick::WindowProxy2(this);
onPrimaryScreenChanged(QGuiApplication::primaryScreen());
m_isTabletMode = Sidebar::GlobalSettings::globalInstance()->getValue(TABLET_MODE).toBool();
@ -66,7 +66,7 @@ void ShortcutsWindow::initUI()
{
setColor(Qt::transparent);
KWindowSystem::setType(winId(), NET::SystemWindow);
m_windowProxy->setWindowType(UkuiQuick::WindowType::SystemWindow);
setBlurStrength();
// 上下文属性
@ -124,8 +124,9 @@ void ShortcutsWindow::updateGeometry()
return;
}
QRect newGeometry;
if (m_isTabletMode) {
m_windowProxy->setGeometry(screen()->geometry());
newGeometry = screen()->geometry();
} else {
int pos = Sidebar::GlobalSettings::globalInstance()->getValue(UKUI_PANEL_POSITION_KEY).toInt();
int panelSize = Sidebar::GlobalSettings::globalInstance()->getValue(UKUI_PANEL_SIZE_KEY).toInt();
@ -163,28 +164,21 @@ void ShortcutsWindow::updateGeometry()
geometry.setSize(rootObject()->size().toSize());
}
setGeometry(geometry);
m_windowProxy->setGeometry(geometry);
newGeometry = geometry;
}
setGeometry(newGeometry);
m_windowProxy->setPosition(newGeometry.topLeft());
}
bool ShortcutsWindow::event(QEvent *event)
{
switch (event->type()) {
case QEvent::Show:
updateGeometry();
if (QX11Info::isPlatformX11()) {
requestActivate();
}
case QEvent::Expose:
if (isExposed()) {
updateGeometry();
}
break;
case QEvent::Move: {
updateGeometry();
return true;
}
default:
break;
}

View File

@ -63,7 +63,7 @@ private:
void updateEffects();
bool m_isTabletMode {false};
UkuiQuick::WindowProxy *m_windowProxy {nullptr};
UkuiQuick::WindowProxy2 *m_windowProxy {nullptr};
};