mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
fix: 修复高分辨率快捷面板显示异常的问题
1、高缩放率下,图标尺寸需要除以缩放率 2、拖动快捷面板图标到任务栏的时候,设置拖动图标 Log: 修复高分辨率快捷面板显示异常的问题 Influence: 高分辨率,任务栏快捷面板,观察全局搜索图标显示 Bug: https://pms.uniontech.com/bug-view-176421.html Change-Id: Iddd5dfc6851a9d8a3f35be10cdfa780c11862a4c
This commit is contained in:
parent
ef7d532008
commit
7a8016abe5
@ -9,6 +9,7 @@
|
||||
#include <QDebug>
|
||||
#include <QCoreApplication>
|
||||
#include <QDragEnterEvent>
|
||||
#include <QGuiApplication>
|
||||
|
||||
QuickPluginMimeData::QuickPluginMimeData(PluginsItemInterface *item, QDrag *drag)
|
||||
: QMimeData()
|
||||
@ -46,7 +47,7 @@ QuickIconDrag::QuickIconDrag(QObject *dragSource, const QPixmap &pixmap)
|
||||
connect(m_timer, &QTimer::timeout, this, &QuickIconDrag::onDragMove);
|
||||
m_timer->start();
|
||||
|
||||
m_imageWidget->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowDoesNotAcceptFocus);
|
||||
m_imageWidget->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowDoesNotAcceptFocus);
|
||||
m_imageWidget->setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||
m_imageWidget->installEventFilter(this);
|
||||
useSourcePixmap();
|
||||
@ -64,7 +65,7 @@ void QuickIconDrag::updatePixmap(QPixmap pixmap)
|
||||
|
||||
m_pixmap = pixmap;
|
||||
m_useSourcePixmap = false;
|
||||
m_imageWidget->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowDoesNotAcceptFocus | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
|
||||
m_imageWidget->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowDoesNotAcceptFocus | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
|
||||
m_imageWidget->setFixedSize(pixmap.size());
|
||||
m_imageWidget->show();
|
||||
m_imageWidget->raise();
|
||||
@ -74,7 +75,7 @@ void QuickIconDrag::updatePixmap(QPixmap pixmap)
|
||||
void QuickIconDrag::useSourcePixmap()
|
||||
{
|
||||
m_useSourcePixmap = true;
|
||||
m_imageWidget->setFixedSize(m_sourcePixmap.size());
|
||||
m_imageWidget->setFixedSize(m_sourcePixmap.size() / qApp->devicePixelRatio());
|
||||
m_imageWidget->show();
|
||||
m_imageWidget->raise();
|
||||
m_imageWidget->update();
|
||||
|
@ -134,7 +134,7 @@ QPixmap SingleQuickItem::pixmap() const
|
||||
}
|
||||
}
|
||||
|
||||
return icon.pixmap(pixmapWidth, pixmapHeight);
|
||||
return icon.pixmap(pixmapWidth / qApp->devicePixelRatio(), pixmapHeight / qApp->devicePixelRatio());
|
||||
}
|
||||
|
||||
QLabel *SingleQuickItem::findChildLabel(QWidget *parent, const QString &childObjectName) const
|
||||
|
@ -178,7 +178,7 @@ QIcon PluginAdapter::icon(const DockPart &dockPart, DGuiApplicationHelper::Color
|
||||
|
||||
// 如果图标为空,就使用itemWidget的截图作为它的图标,这种一般是适用于老版本插件或者没有实现v23接口的插件
|
||||
QSize oldSize = itemWidget->size();
|
||||
itemWidget->setFixedSize(ICONWIDTH, ICONHEIGHT);
|
||||
itemWidget->setFixedSize(ICONWIDTH / qApp->devicePixelRatio(), ICONHEIGHT / qApp->devicePixelRatio());
|
||||
QPixmap pixmap = itemWidget->grab();
|
||||
itemWidget->setFixedSize(oldSize);
|
||||
return pixmap;
|
||||
|
@ -280,7 +280,13 @@ void QuickPluginWindow::dragEnterEvent(QDragEnterEvent *event)
|
||||
{
|
||||
m_dragEnterMimeData = const_cast<QuickPluginMimeData *>(qobject_cast<const QuickPluginMimeData *>(event->mimeData()));
|
||||
if (m_dragEnterMimeData) {
|
||||
QIcon icon = m_dragEnterMimeData->pluginItemInterface()->icon(DockPart::QuickShow);
|
||||
PluginsItemInterface *plugin = m_dragEnterMimeData->pluginItemInterface();
|
||||
QIcon icon = plugin->icon(DockPart::QuickShow);
|
||||
if (icon.isNull()) {
|
||||
QWidget *widget = plugin->itemWidget(QuickSettingController::instance()->itemKey(plugin));
|
||||
if (widget)
|
||||
icon = widget->grab();
|
||||
}
|
||||
QuickIconDrag *drag = qobject_cast<QuickIconDrag *>(m_dragEnterMimeData->drag());
|
||||
if (drag && !icon.isNull()) {
|
||||
QPixmap pixmap = icon.pixmap(QSize(16, 16));
|
||||
|
Loading…
x
Reference in New Issue
Block a user