Projects
Eulaceura:Mainline
kiran-session-guard
_service:obs_scm:0008-fix-styleditemdelegate-up...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:0008-fix-styleditemdelegate-updateEditorGeometry-to-updat.patch of Package kiran-session-guard
From 66d11ae4717a846e06a7fc85354993ba2e90ce0e Mon Sep 17 00:00:00 2001 From: liuxinhao <liuxinhao@kylinsec.com.cn> Date: Thu, 26 Oct 2023 14:40:23 +0800 Subject: [PATCH] fix(styleditemdelegate): updateEditorGeometry to update the wrong size of ItemWidgets in QStyledItemDelegate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用自定义的代理,避免QStyledItemDelegate中错误的使用updateEditorGeometry更新ItemWidget大小 Closes #16513 --- .../widgets/styled-item-delegate.cpp | 33 +++++++++++++++++++ .../widgets/styled-item-delegate.h | 28 ++++++++++++++++ src/lightdm-greeter/widgets/user-list.cpp | 2 ++ 3 files changed, 63 insertions(+) create mode 100644 src/lightdm-greeter/widgets/styled-item-delegate.cpp create mode 100644 src/lightdm-greeter/widgets/styled-item-delegate.h diff --git a/src/lightdm-greeter/widgets/styled-item-delegate.cpp b/src/lightdm-greeter/widgets/styled-item-delegate.cpp new file mode 100644 index 0000000..a5323ce --- /dev/null +++ b/src/lightdm-greeter/widgets/styled-item-delegate.cpp @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2020 ~ 2023 KylinSec Co., Ltd. + * kiran-session-guard is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * + * Author: liuxinhao <liuxinhao@kylinsec.com.cn> + */ +#include "styled-item-delegate.h" + +StyledItemDelegate::StyledItemDelegate(QObject *parent) + : QStyledItemDelegate(parent) +{ +} + +StyledItemDelegate::~StyledItemDelegate() +{ +} + +/** + * 避免某些时候QListWidget更新item大小时调用QStyledItemDelegate相关接口错误的更新Editor大小 +*/ +void StyledItemDelegate::updateEditorGeometry(QWidget *editor, + const QStyleOptionViewItem &option, + const QModelIndex &index) const +{ + editor->setGeometry(option.rect); +} \ No newline at end of file diff --git a/src/lightdm-greeter/widgets/styled-item-delegate.h b/src/lightdm-greeter/widgets/styled-item-delegate.h new file mode 100644 index 0000000..e229306 --- /dev/null +++ b/src/lightdm-greeter/widgets/styled-item-delegate.h @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2020 ~ 2023 KylinSec Co., Ltd. + * kiran-session-guard is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * + * Author: liuxinhao <liuxinhao@kylinsec.com.cn> + */ +#pragma once + +#include <QStyledItemDelegate> + +class StyledItemDelegate : public QStyledItemDelegate +{ + Q_OBJECT +public: + StyledItemDelegate(QObject* parent = nullptr); + ~StyledItemDelegate(); + + void updateEditorGeometry(QWidget *editor, + const QStyleOptionViewItem &option, + const QModelIndex &index) const override; +}; \ No newline at end of file diff --git a/src/lightdm-greeter/widgets/user-list.cpp b/src/lightdm-greeter/widgets/user-list.cpp index b83efdf..e59fa8b 100644 --- a/src/lightdm-greeter/widgets/user-list.cpp +++ b/src/lightdm-greeter/widgets/user-list.cpp @@ -24,6 +24,7 @@ #include "ui_user-list.h" #include "user-info.h" #include "user-item.h" +#include "styled-item-delegate.h" using namespace QLightDM; @@ -126,6 +127,7 @@ int UserList::userCount() void UserList::initUI() { setAttribute(Qt::WA_Hover, true); + ui->userList->setItemDelegate(new StyledItemDelegate(this)); ui->userList->setFocusPolicy(Qt::ClickFocus); ui->userList->setSelectionBehavior(QAbstractItemView::SelectRows); ui->userList->setSelectionMode(QAbstractItemView::SingleSelection); -- 2.27.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2