fix: 修复窗口尺寸异常问题
This commit is contained in:
parent
a82fe246ac
commit
69000cb2de
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ private:
|
|||
void updateEffects();
|
||||
|
||||
bool m_isTabletMode {false};
|
||||
UkuiQuick::WindowProxy *m_windowProxy {nullptr};
|
||||
UkuiQuick::WindowProxy2 *m_windowProxy {nullptr};
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue