mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
refactor: use QWidget::devicePixelRatio to replace QApplication::devicePixelRatio
插入新屏幕后,新屏幕的缩放是1,切换为复制模式后如果继续使用QApplication::devicePixelRatio会导致 显示错误,统一换成QWidget::devicePixelRatio或QScreen::devicePixelRatio。
This commit is contained in:
parent
4be6ba571c
commit
55c4c74a82
@ -511,7 +511,7 @@ bool AppItem::hasAttention() const
|
|||||||
|
|
||||||
QPoint AppItem::appIconPosition() const
|
QPoint AppItem::appIconPosition() const
|
||||||
{
|
{
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = devicePixelRatioF();
|
||||||
const QRectF itemRect = rect();
|
const QRectF itemRect = rect();
|
||||||
const QRectF iconRect = m_appIcon.rect();
|
const QRectF iconRect = m_appIcon.rect();
|
||||||
const qreal iconX = itemRect.center().x() - iconRect.center().x() / ratio;
|
const qreal iconX = itemRect.center().x() - iconRect.center().x() / ratio;
|
||||||
@ -547,9 +547,9 @@ void AppItem::refershIcon()
|
|||||||
const int iconSize = qMin(width(), height());
|
const int iconSize = qMin(width(), height());
|
||||||
|
|
||||||
if (DockDisplayMode == Efficient)
|
if (DockDisplayMode == Efficient)
|
||||||
m_appIcon = ThemeAppIcon::getIcon(icon, iconSize * 0.7);
|
m_appIcon = ThemeAppIcon::getIcon(icon, iconSize * 0.7, devicePixelRatioF());
|
||||||
else
|
else
|
||||||
m_appIcon = ThemeAppIcon::getIcon(icon, iconSize * 0.8);
|
m_appIcon = ThemeAppIcon::getIcon(icon, iconSize * 0.8, devicePixelRatioF());
|
||||||
|
|
||||||
if (m_appIcon.isNull()) {
|
if (m_appIcon.isNull()) {
|
||||||
if (m_retryTimes < 5) {
|
if (m_retryTimes < 5) {
|
||||||
@ -602,7 +602,7 @@ void AppItem::playSwingEffect()
|
|||||||
stopSwingEffect();
|
stopSwingEffect();
|
||||||
|
|
||||||
QPair<QGraphicsView *, QGraphicsItemAnimation *> pair = SwingEffect(
|
QPair<QGraphicsView *, QGraphicsItemAnimation *> pair = SwingEffect(
|
||||||
this, m_appIcon, rect(), qApp->devicePixelRatio());
|
this, m_appIcon, rect(), devicePixelRatioF());
|
||||||
|
|
||||||
m_swingEffectView = pair.first;
|
m_swingEffectView = pair.first;
|
||||||
m_itemAnimation = pair.second;
|
m_itemAnimation = pair.second;
|
||||||
|
@ -48,11 +48,11 @@ void LauncherItem::refershIcon()
|
|||||||
const int iconSize = qMin(width(), height());
|
const int iconSize = qMin(width(), height());
|
||||||
if (DockDisplayMode == Efficient)
|
if (DockDisplayMode == Efficient)
|
||||||
{
|
{
|
||||||
m_smallIcon = ThemeAppIcon::getIcon("deepin-launcher", iconSize * 0.7);
|
m_smallIcon = ThemeAppIcon::getIcon("deepin-launcher", iconSize * 0.7, devicePixelRatioF());
|
||||||
m_largeIcon = ThemeAppIcon::getIcon("deepin-launcher", iconSize * 0.9);
|
m_largeIcon = ThemeAppIcon::getIcon("deepin-launcher", iconSize * 0.9, devicePixelRatioF());
|
||||||
} else {
|
} else {
|
||||||
m_smallIcon = ThemeAppIcon::getIcon("deepin-launcher", iconSize * 0.6);
|
m_smallIcon = ThemeAppIcon::getIcon("deepin-launcher", iconSize * 0.6, devicePixelRatioF());
|
||||||
m_largeIcon = ThemeAppIcon::getIcon("deepin-launcher", iconSize * 0.8);
|
m_largeIcon = ThemeAppIcon::getIcon("deepin-launcher", iconSize * 0.8, devicePixelRatioF());
|
||||||
}
|
}
|
||||||
|
|
||||||
update();
|
update();
|
||||||
@ -69,7 +69,7 @@ void LauncherItem::paintEvent(QPaintEvent *e)
|
|||||||
|
|
||||||
const QPixmap pixmap = DockDisplayMode == Fashion ? m_largeIcon : m_smallIcon;
|
const QPixmap pixmap = DockDisplayMode == Fashion ? m_largeIcon : m_smallIcon;
|
||||||
|
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = devicePixelRatioF();
|
||||||
const int iconX = rect().center().x() - pixmap.rect().center().x() / ratio;
|
const int iconX = rect().center().x() - pixmap.rect().center().x() / ratio;
|
||||||
const int iconY = rect().center().y() - pixmap.rect().center().y() / ratio;
|
const int iconY = rect().center().y() - pixmap.rect().center().y() / ratio;
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "docksettings.h"
|
#include "docksettings.h"
|
||||||
#include "panel/mainpanel.h"
|
#include "panel/mainpanel.h"
|
||||||
#include "item/appitem.h"
|
#include "item/appitem.h"
|
||||||
|
#include "util/utils.h"
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QX11Info>
|
#include <QX11Info>
|
||||||
@ -68,7 +69,7 @@ DockSettings::DockSettings(QWidget *parent)
|
|||||||
m_hideMode = Dock::HideMode(m_dockInter->hideMode());
|
m_hideMode = Dock::HideMode(m_dockInter->hideMode());
|
||||||
m_hideState = Dock::HideState(m_dockInter->hideState());
|
m_hideState = Dock::HideState(m_dockInter->hideState());
|
||||||
m_iconSize = m_dockInter->iconSize();
|
m_iconSize = m_dockInter->iconSize();
|
||||||
AppItem::setIconBaseSize(m_iconSize * qApp->devicePixelRatio());
|
AppItem::setIconBaseSize(m_iconSize * dockRatio());
|
||||||
DockItem::setDockPosition(m_position);
|
DockItem::setDockPosition(m_position);
|
||||||
qApp->setProperty(PROP_POSITION, QVariant::fromValue(m_position));
|
qApp->setProperty(PROP_POSITION, QVariant::fromValue(m_position));
|
||||||
DockItem::setDockDisplayMode(m_displayMode);
|
DockItem::setDockDisplayMode(m_displayMode);
|
||||||
@ -364,7 +365,7 @@ void DockSettings::iconSizeChanged()
|
|||||||
{
|
{
|
||||||
// qDebug() << Q_FUNC_INFO;
|
// qDebug() << Q_FUNC_INFO;
|
||||||
m_iconSize = m_dockInter->iconSize();
|
m_iconSize = m_dockInter->iconSize();
|
||||||
AppItem::setIconBaseSize(m_iconSize * qApp->devicePixelRatio());
|
AppItem::setIconBaseSize(m_iconSize * dockRatio());
|
||||||
|
|
||||||
calculateWindowConfig();
|
calculateWindowConfig();
|
||||||
|
|
||||||
@ -432,7 +433,7 @@ void DockSettings::primaryScreenChanged()
|
|||||||
void DockSettings::resetFrontendGeometry()
|
void DockSettings::resetFrontendGeometry()
|
||||||
{
|
{
|
||||||
const QRect r = windowRect(m_position);
|
const QRect r = windowRect(m_position);
|
||||||
const qreal ratio = qApp->devicePixelRatio();
|
const qreal ratio = dockRatio();
|
||||||
const QPoint p = rawXPosition(r.topLeft());
|
const QPoint p = rawXPosition(r.topLeft());
|
||||||
const uint w = r.width() * ratio;
|
const uint w = r.width() * ratio;
|
||||||
const uint h = r.height() * ratio;
|
const uint h = r.height() * ratio;
|
||||||
@ -540,7 +541,7 @@ void DockSettings::onFashionTraySizeChanged(const QSize &traySize)
|
|||||||
|
|
||||||
void DockSettings::calculateWindowConfig()
|
void DockSettings::calculateWindowConfig()
|
||||||
{
|
{
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = dockRatio();
|
||||||
const int defaultHeight = std::round(AppItem::itemBaseHeight() / ratio);
|
const int defaultHeight = std::round(AppItem::itemBaseHeight() / ratio);
|
||||||
const int defaultWidth = std::round(AppItem::itemBaseWidth() / ratio);
|
const int defaultWidth = std::round(AppItem::itemBaseWidth() / ratio);
|
||||||
|
|
||||||
@ -623,3 +624,10 @@ void DockSettings::gtkIconThemeChanged()
|
|||||||
qDebug() << Q_FUNC_INFO;
|
qDebug() << Q_FUNC_INFO;
|
||||||
m_itemController->refershItemsIcon();
|
m_itemController->refershItemsIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qreal DockSettings::dockRatio() const
|
||||||
|
{
|
||||||
|
QScreen const *screen = Utils::screenAtByScaled(m_frontendRect.center());
|
||||||
|
|
||||||
|
return screen ? screen->devicePixelRatio() : qApp->devicePixelRatio();
|
||||||
|
}
|
||||||
|
@ -80,6 +80,7 @@ public:
|
|||||||
|
|
||||||
const QSize panelSize() const;
|
const QSize panelSize() const;
|
||||||
const QRect windowRect(const Position position, const bool hide = false) const;
|
const QRect windowRect(const Position position, const bool hide = false) const;
|
||||||
|
qreal dockRatio() const;
|
||||||
|
|
||||||
void showDockSettingsMenu();
|
void showDockSettingsMenu();
|
||||||
|
|
||||||
|
@ -38,9 +38,8 @@ ThemeAppIcon::~ThemeAppIcon()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const QPixmap ThemeAppIcon::getIcon(const QString iconName, const int size)
|
const QPixmap ThemeAppIcon::getIcon(const QString iconName, const int size, const qreal ratio)
|
||||||
{
|
{
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
|
||||||
QPixmap pixmap;
|
QPixmap pixmap;
|
||||||
QString key;
|
QString key;
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ public:
|
|||||||
explicit ThemeAppIcon(QObject *parent = 0);
|
explicit ThemeAppIcon(QObject *parent = 0);
|
||||||
~ThemeAppIcon();
|
~ThemeAppIcon();
|
||||||
|
|
||||||
static const QPixmap getIcon(const QString iconName, const int size);
|
static const QPixmap getIcon(const QString iconName, const int size, const qreal ratio);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // THEMEAPPICON_H
|
#endif // THEMEAPPICON_H
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <QImageReader>
|
#include <QImageReader>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
#include <QScreen>
|
||||||
|
|
||||||
namespace Utils {
|
namespace Utils {
|
||||||
static QPixmap renderSVG(const QString &path, const QSize &size) {
|
static QPixmap renderSVG(const QString &path, const QSize &size) {
|
||||||
@ -19,4 +20,26 @@ namespace Utils {
|
|||||||
|
|
||||||
return pixmap;
|
return pixmap;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
static QScreen * screenAt(const QPoint &point) {
|
||||||
|
for (QScreen *screen : qApp->screens()) {
|
||||||
|
const QRect r { screen->geometry() };
|
||||||
|
const QRect rect { r.topLeft(), r.size() * screen->devicePixelRatio() };
|
||||||
|
if (rect.contains(point)) {
|
||||||
|
return screen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static QScreen * screenAtByScaled(const QPoint &point) {
|
||||||
|
for (QScreen *screen : qApp->screens()) {
|
||||||
|
if (screen->geometry().contains(point)) {
|
||||||
|
return screen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "panel/mainpanel.h"
|
#include "panel/mainpanel.h"
|
||||||
|
#include "util/utils.h"
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QEvent>
|
#include <QEvent>
|
||||||
@ -42,36 +43,22 @@ using org::kde::StatusNotifierWatcher;
|
|||||||
|
|
||||||
const QPoint rawXPosition(const QPoint &scaledPos)
|
const QPoint rawXPosition(const QPoint &scaledPos)
|
||||||
{
|
{
|
||||||
QScreen *s = qApp->primaryScreen();
|
QScreen const * screen = Utils::screenAtByScaled(scaledPos);
|
||||||
for (auto *screen : qApp->screens())
|
|
||||||
{
|
|
||||||
const QRect &sg = screen->geometry();
|
|
||||||
if (sg.contains(scaledPos))
|
|
||||||
{
|
|
||||||
s = screen;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const QRect &g = s->geometry();
|
return screen ? screen->geometry().topLeft() +
|
||||||
|
(scaledPos - screen->geometry().topLeft()) *
|
||||||
return g.topLeft() + (scaledPos - g.topLeft()) * s->devicePixelRatio();
|
screen->devicePixelRatio()
|
||||||
|
: scaledPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QPoint scaledPos(const QPoint &rawXPos)
|
const QPoint scaledPos(const QPoint &rawXPos)
|
||||||
{
|
{
|
||||||
QRect g = qApp->primaryScreen()->geometry();
|
QScreen const * screen = Utils::screenAt(rawXPos);
|
||||||
for (auto *screen : qApp->screens())
|
|
||||||
{
|
|
||||||
const QRect &sg = screen->geometry();
|
|
||||||
if (sg.contains(rawXPos))
|
|
||||||
{
|
|
||||||
g = sg;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return g.topLeft() + (rawXPos - g.topLeft()) / qApp->devicePixelRatio();
|
return screen
|
||||||
|
? screen->geometry().topLeft() +
|
||||||
|
(rawXPos - screen->geometry().topLeft()) / screen->devicePixelRatio()
|
||||||
|
: rawXPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget *parent)
|
MainWindow::MainWindow(QWidget *parent)
|
||||||
|
@ -73,7 +73,7 @@ void DatetimeWidget::paintEvent(QPaintEvent *e)
|
|||||||
{
|
{
|
||||||
Q_UNUSED(e);
|
Q_UNUSED(e);
|
||||||
|
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = devicePixelRatioF();
|
||||||
const Dock::DisplayMode displayMode = qApp->property(PROP_DISPLAY_MODE).value<Dock::DisplayMode>();
|
const Dock::DisplayMode displayMode = qApp->property(PROP_DISPLAY_MODE).value<Dock::DisplayMode>();
|
||||||
const Dock::Position position = qApp->property(PROP_POSITION).value<Dock::Position>();
|
const Dock::Position position = qApp->property(PROP_POSITION).value<Dock::Position>();
|
||||||
const QDateTime current = QDateTime::currentDateTime();
|
const QDateTime current = QDateTime::currentDateTime();
|
||||||
@ -188,7 +188,7 @@ void DatetimeWidget::paintEvent(QPaintEvent *e)
|
|||||||
|
|
||||||
const QPixmap DatetimeWidget::loadSvg(const QString &fileName, const QSize size)
|
const QPixmap DatetimeWidget::loadSvg(const QString &fileName, const QSize size)
|
||||||
{
|
{
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = devicePixelRatioF();
|
||||||
|
|
||||||
QPixmap pixmap(size * ratio);
|
QPixmap pixmap(size * ratio);
|
||||||
QSvgRenderer renderer(fileName);
|
QSvgRenderer renderer(fileName);
|
||||||
|
@ -52,7 +52,7 @@ AccessPointWidget::AccessPointWidget()
|
|||||||
m_securityPixmap = Utils::renderSVG(":/wireless/resources/wireless/security.svg", QSize(16, 16));
|
m_securityPixmap = Utils::renderSVG(":/wireless/resources/wireless/security.svg", QSize(16, 16));
|
||||||
m_securityIconSize = m_securityPixmap.size();
|
m_securityIconSize = m_securityPixmap.size();
|
||||||
m_securityLabel->setPixmap(m_securityPixmap);
|
m_securityLabel->setPixmap(m_securityPixmap);
|
||||||
m_securityLabel->setFixedSize(m_securityIconSize / qApp->devicePixelRatio());
|
m_securityLabel->setFixedSize(m_securityIconSize / devicePixelRatioF());
|
||||||
|
|
||||||
QHBoxLayout *infoLayout = new QHBoxLayout;
|
QHBoxLayout *infoLayout = new QHBoxLayout;
|
||||||
infoLayout->addWidget(m_securityLabel);
|
infoLayout->addWidget(m_securityLabel);
|
||||||
|
@ -53,7 +53,7 @@ WirelessList::WirelessList(WirelessDevice *deviceIter, QWidget *parent)
|
|||||||
{
|
{
|
||||||
setFixedHeight(WIDTH);
|
setFixedHeight(WIDTH);
|
||||||
|
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = devicePixelRatioF();
|
||||||
QPixmap iconPix = QIcon::fromTheme("notification-network-wireless-full").pixmap(QSize(48, 48) * ratio);
|
QPixmap iconPix = QIcon::fromTheme("notification-network-wireless-full").pixmap(QSize(48, 48) * ratio);
|
||||||
iconPix.setDevicePixelRatio(ratio);
|
iconPix.setDevicePixelRatio(ratio);
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ void WiredItem::paintEvent(QPaintEvent *e)
|
|||||||
QWidget::paintEvent(e);
|
QWidget::paintEvent(e);
|
||||||
|
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = devicePixelRatioF();
|
||||||
const QRectF &rf = QRectF(rect());
|
const QRectF &rf = QRectF(rect());
|
||||||
const QRectF &rfp = QRectF(m_icon.rect());
|
const QRectF &rfp = QRectF(m_icon.rect());
|
||||||
const int x = rf.center().x() - rfp.center().x() / ratio;
|
const int x = rf.center().x() - rfp.center().x() / ratio;
|
||||||
@ -104,7 +104,7 @@ void WiredItem::reloadIcon()
|
|||||||
|
|
||||||
// const Dock::DisplayMode displayMode = qApp->property(PROP_DISPLAY_MODE).value<Dock::DisplayMode>();
|
// const Dock::DisplayMode displayMode = qApp->property(PROP_DISPLAY_MODE).value<Dock::DisplayMode>();
|
||||||
const Dock::DisplayMode displayMode = Dock::DisplayMode::Efficient;
|
const Dock::DisplayMode displayMode = Dock::DisplayMode::Efficient;
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = devicePixelRatioF();
|
||||||
const int iconSize = displayMode == Dock::Efficient ? 16 : std::min(width(), height()) * 0.8;
|
const int iconSize = displayMode == Dock::Efficient ? 16 : std::min(width(), height()) * 0.8;
|
||||||
|
|
||||||
QString iconName = "network-";
|
QString iconName = "network-";
|
||||||
|
@ -98,7 +98,7 @@ void WirelessItem::paintEvent(QPaintEvent *e)
|
|||||||
// const Dock::DisplayMode displayMode = qApp->property(PROP_DISPLAY_MODE).value<Dock::DisplayMode>();
|
// const Dock::DisplayMode displayMode = qApp->property(PROP_DISPLAY_MODE).value<Dock::DisplayMode>();
|
||||||
const Dock::DisplayMode displayMode = Dock::DisplayMode::Efficient;
|
const Dock::DisplayMode displayMode = Dock::DisplayMode::Efficient;
|
||||||
|
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = devicePixelRatioF();
|
||||||
const int iconSize = displayMode == Dock::Fashion ? std::min(width(), height()) * 0.8 : 16;
|
const int iconSize = displayMode == Dock::Fashion ? std::min(width(), height()) * 0.8 : 16;
|
||||||
QPixmap pixmap = iconPix(displayMode, iconSize * ratio);
|
QPixmap pixmap = iconPix(displayMode, iconSize * ratio);
|
||||||
pixmap.setDevicePixelRatio(ratio);
|
pixmap.setDevicePixelRatio(ratio);
|
||||||
|
@ -56,12 +56,12 @@ void OnboardItem::paintEvent(QPaintEvent *e)
|
|||||||
pixmap = loadSvg(iconName, QSize(iconSize, iconSize));
|
pixmap = loadSvg(iconName, QSize(iconSize, iconSize));
|
||||||
|
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
painter.drawPixmap(rect().center() - pixmap.rect().center() / qApp->devicePixelRatio(), pixmap);
|
painter.drawPixmap(rect().center() - pixmap.rect().center() / devicePixelRatioF(), pixmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
const QPixmap OnboardItem::loadSvg(const QString &fileName, const QSize &size) const
|
const QPixmap OnboardItem::loadSvg(const QString &fileName, const QSize &size) const
|
||||||
{
|
{
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = devicePixelRatioF();
|
||||||
|
|
||||||
QPixmap pixmap;
|
QPixmap pixmap;
|
||||||
pixmap = QIcon::fromTheme(fileName).pixmap(size * ratio);
|
pixmap = QIcon::fromTheme(fileName).pixmap(size * ratio);
|
||||||
|
@ -57,12 +57,12 @@ void PluginWidget::paintEvent(QPaintEvent *e)
|
|||||||
pixmap = loadSvg(iconName, QSize(iconSize, iconSize));
|
pixmap = loadSvg(iconName, QSize(iconSize, iconSize));
|
||||||
|
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
painter.drawPixmap(rect().center() - pixmap.rect().center() / qApp->devicePixelRatio(), pixmap);
|
painter.drawPixmap(rect().center() - pixmap.rect().center() / devicePixelRatioF(), pixmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
const QPixmap PluginWidget::loadSvg(const QString &fileName, const QSize &size) const
|
const QPixmap PluginWidget::loadSvg(const QString &fileName, const QSize &size) const
|
||||||
{
|
{
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = devicePixelRatioF();
|
||||||
|
|
||||||
QPixmap pixmap;
|
QPixmap pixmap;
|
||||||
pixmap = QIcon::fromTheme(fileName).pixmap(size * ratio);
|
pixmap = QIcon::fromTheme(fileName).pixmap(size * ratio);
|
||||||
|
@ -56,12 +56,12 @@ void PluginWidget::paintEvent(QPaintEvent *e)
|
|||||||
pixmap = loadSvg(iconName, QSize(iconSize, iconSize));
|
pixmap = loadSvg(iconName, QSize(iconSize, iconSize));
|
||||||
|
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
painter.drawPixmap(rect().center() - pixmap.rect().center() / qApp->devicePixelRatio(), pixmap);
|
painter.drawPixmap(rect().center() - pixmap.rect().center() / devicePixelRatioF(), pixmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
const QPixmap PluginWidget::loadSvg(const QString &fileName, const QSize &size) const
|
const QPixmap PluginWidget::loadSvg(const QString &fileName, const QSize &size) const
|
||||||
{
|
{
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = devicePixelRatioF();
|
||||||
|
|
||||||
QPixmap pixmap;
|
QPixmap pixmap;
|
||||||
pixmap = QIcon::fromTheme(fileName).pixmap(size * ratio);
|
pixmap = QIcon::fromTheme(fileName).pixmap(size * ratio);
|
||||||
|
@ -28,9 +28,8 @@
|
|||||||
|
|
||||||
DWIDGET_USE_NAMESPACE
|
DWIDGET_USE_NAMESPACE
|
||||||
|
|
||||||
const QPixmap getIconFromTheme(const QString &name, const QSize &size)
|
const QPixmap getIconFromTheme(const QString &name, const QSize &size, const qreal ratio)
|
||||||
{
|
{
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
|
||||||
QPixmap ret = QIcon::fromTheme(name, QIcon::fromTheme("application-x-desktop")).pixmap(size * ratio);
|
QPixmap ret = QIcon::fromTheme(name, QIcon::fromTheme("application-x-desktop")).pixmap(size * ratio);
|
||||||
ret.setDevicePixelRatio(ratio);
|
ret.setDevicePixelRatio(ratio);
|
||||||
|
|
||||||
@ -47,7 +46,7 @@ SinkInputWidget::SinkInputWidget(const QString &inputPath, QWidget *parent)
|
|||||||
{
|
{
|
||||||
const QString iconName = m_inputInter->icon();
|
const QString iconName = m_inputInter->icon();
|
||||||
m_volumeIcon->setAccessibleName("app-" + iconName + "-icon");
|
m_volumeIcon->setAccessibleName("app-" + iconName + "-icon");
|
||||||
m_volumeIcon->setPixmap(getIconFromTheme(iconName, QSize(24, 24)));
|
m_volumeIcon->setPixmap(getIconFromTheme(iconName, QSize(24, 24), devicePixelRatioF()));
|
||||||
m_volumeSlider->setAccessibleName("app-" + iconName + "-slider");
|
m_volumeSlider->setAccessibleName("app-" + iconName + "-slider");
|
||||||
m_volumeSlider->setMinimum(0);
|
m_volumeSlider->setMinimum(0);
|
||||||
m_volumeSlider->setMaximum(1000);
|
m_volumeSlider->setMaximum(1000);
|
||||||
@ -89,7 +88,7 @@ void SinkInputWidget::setMuteIcon()
|
|||||||
if (m_inputInter->mute()) {
|
if (m_inputInter->mute()) {
|
||||||
const auto ratio = devicePixelRatioF();
|
const auto ratio = devicePixelRatioF();
|
||||||
QPixmap muteIcon = DHiDPIHelper::loadNxPixmap("://audio-volume-muted-symbolic.svg");
|
QPixmap muteIcon = DHiDPIHelper::loadNxPixmap("://audio-volume-muted-symbolic.svg");
|
||||||
QPixmap appIconSource(getIconFromTheme(m_inputInter->icon(), QSize(24, 24)));
|
QPixmap appIconSource(getIconFromTheme(m_inputInter->icon(), QSize(24, 24), devicePixelRatioF()));
|
||||||
|
|
||||||
QPixmap temp(appIconSource.size());
|
QPixmap temp(appIconSource.size());
|
||||||
temp.fill(Qt::transparent);
|
temp.fill(Qt::transparent);
|
||||||
@ -107,7 +106,7 @@ void SinkInputWidget::setMuteIcon()
|
|||||||
appIconSource.setDevicePixelRatio(ratio);
|
appIconSource.setDevicePixelRatio(ratio);
|
||||||
m_volumeIcon->setPixmap(appIconSource);
|
m_volumeIcon->setPixmap(appIconSource);
|
||||||
} else {
|
} else {
|
||||||
m_volumeIcon->setPixmap(getIconFromTheme(m_inputInter->icon(), QSize(24, 24)));
|
m_volumeIcon->setPixmap(getIconFromTheme(m_inputInter->icon(), QSize(24, 24), devicePixelRatioF()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,7 +178,7 @@ void SoundItem::refreshIcon()
|
|||||||
iconString = QString("audio-volume-%1-symbolic").arg(volumeString);
|
iconString = QString("audio-volume-%1-symbolic").arg(volumeString);
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = devicePixelRatioF();
|
||||||
const int iconSize = displayMode == Dock::Fashion ? std::min(width(), height()) * 0.8 : 16;
|
const int iconSize = displayMode == Dock::Fashion ? std::min(width(), height()) * 0.8 : 16;
|
||||||
const QIcon icon = QIcon::fromTheme(iconString);
|
const QIcon icon = QIcon::fromTheme(iconString);
|
||||||
m_iconPixmap = icon.pixmap(iconSize * ratio, iconSize * ratio);
|
m_iconPixmap = icon.pixmap(iconSize * ratio, iconSize * ratio);
|
||||||
|
@ -170,7 +170,7 @@ void TrashWidget::paintEvent(QPaintEvent *e)
|
|||||||
QWidget::paintEvent(e);
|
QWidget::paintEvent(e);
|
||||||
|
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
painter.drawPixmap(rect().center() - m_icon.rect().center() / qApp->devicePixelRatio(), m_icon);
|
painter.drawPixmap(rect().center() - m_icon.rect().center() / devicePixelRatioF(), m_icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrashWidget::resizeEvent(QResizeEvent *e)
|
void TrashWidget::resizeEvent(QResizeEvent *e)
|
||||||
@ -192,8 +192,8 @@ void TrashWidget::updateIcon()
|
|||||||
|
|
||||||
const int size = displayMode == Dock::Fashion ? std::min(width(), height()) * 0.8 : 16;
|
const int size = displayMode == Dock::Fashion ? std::min(width(), height()) * 0.8 : 16;
|
||||||
QIcon icon = QIcon::fromTheme(iconString);
|
QIcon icon = QIcon::fromTheme(iconString);
|
||||||
m_icon = icon.pixmap(size * qApp->devicePixelRatio(), size * qApp->devicePixelRatio());
|
m_icon = icon.pixmap(size * devicePixelRatioF(), size * devicePixelRatioF());
|
||||||
m_icon.setDevicePixelRatio(qApp->devicePixelRatio());
|
m_icon.setDevicePixelRatio(devicePixelRatioF());
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -474,7 +474,7 @@ QPixmap SNITrayWidget::newIconPixmap(IconType iconType)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto ratio = qApp->devicePixelRatio();
|
const auto ratio = devicePixelRatioF();
|
||||||
const int iconSizeScaled = IconSize * ratio;
|
const int iconSizeScaled = IconSize * ratio;
|
||||||
do {
|
do {
|
||||||
// load icon from sni dbus
|
// load icon from sni dbus
|
||||||
@ -521,7 +521,7 @@ QPixmap SNITrayWidget::newIconPixmap(IconType iconType)
|
|||||||
// so, it should be the last fallback
|
// so, it should be the last fallback
|
||||||
if (!iconName.isEmpty()) {
|
if (!iconName.isEmpty()) {
|
||||||
// ThemeAppIcon::getIcon 会处理高分屏缩放问题
|
// ThemeAppIcon::getIcon 会处理高分屏缩放问题
|
||||||
pixmap = ThemeAppIcon::getIcon(iconName, IconSize);
|
pixmap = ThemeAppIcon::getIcon(iconName, IconSize, devicePixelRatioF());
|
||||||
if (!pixmap.isNull()) {
|
if (!pixmap.isNull()) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user