mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-02 15:45:21 +00:00
fix: 修复截图插件显示尺寸问题
判断插件的尺寸如果是自定义,则设置为插件自己的尺寸 Log: 修复截图插件的显示问题 Influence: 截图-查看截图计时插件是否正常显示 Bug: https://pms.uniontech.com/bug-view-179083.html Change-Id: Ia7f08f78429df68b045c074c3054aca388ae7ce4
This commit is contained in:
parent
05a98ac8b7
commit
4cf80b7f32
@ -128,6 +128,7 @@ void QuickPluginWindow::setPositon(Position position)
|
||||
|
||||
m_position = position;
|
||||
QuickSettingContainer::setPosition(position);
|
||||
QuickDockItem::setPosition(position);
|
||||
if (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom) {
|
||||
m_mainLayout->setDirection(QBoxLayout::RightToLeft);
|
||||
m_mainLayout->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
|
||||
@ -169,19 +170,27 @@ QSize QuickPluginWindow::suitableSize() const
|
||||
|
||||
QSize QuickPluginWindow::suitableSize(const Dock::Position &position) const
|
||||
{
|
||||
if (position == Dock::Position::Top || position == Dock::Position::Bottom)
|
||||
return QSize((ITEMSPACE + ICONWIDTH) * m_mainLayout->count() + ITEMSPACE, ITEMSIZE);
|
||||
if (position == Dock::Position::Top || position == Dock::Position::Bottom) {
|
||||
int itemWidth = 0;
|
||||
for (int i = 0; i < m_mainLayout->count(); i++) {
|
||||
QWidget *itemWidget = m_mainLayout->itemAt(i)->widget();
|
||||
if (itemWidget)
|
||||
itemWidth += itemWidget->width() + ITEMSPACE;
|
||||
}
|
||||
itemWidth += ITEMSPACE;
|
||||
|
||||
int height = 0;
|
||||
int itemCount = m_mainLayout->count();
|
||||
if (itemCount > 0) {
|
||||
// 每个图标占据的高度
|
||||
height += ICONHEIGHT * itemCount;
|
||||
// 图标间距占据的高度
|
||||
height += ITEMSPACE * itemCount;
|
||||
return QSize(itemWidth, ITEMSIZE);
|
||||
}
|
||||
|
||||
return QSize(ITEMSIZE, height);
|
||||
int itemHeight = 0;
|
||||
for (int i = 0; i < m_mainLayout->count(); i++) {
|
||||
QWidget *itemWidget = m_mainLayout->itemAt(i)->widget();
|
||||
if (itemWidget)
|
||||
itemHeight += itemWidget->height() + ITEMSPACE;
|
||||
}
|
||||
itemHeight += ITEMSPACE;
|
||||
|
||||
return QSize(ITEMSIZE, itemHeight);
|
||||
}
|
||||
|
||||
PluginsItemInterface *QuickPluginWindow::findQuickSettingItem(const QPoint &mousePoint, const QList<PluginsItemInterface *> &settingItems)
|
||||
@ -346,13 +355,8 @@ void QuickPluginWindow::onRequestUpdate()
|
||||
if (pluginItems.contains(item)) {
|
||||
itemWidget = pluginItems[item];
|
||||
} else {
|
||||
QJsonObject metaData;
|
||||
QPluginLoader *pluginLoader = ProxyPluginController::instance(PluginType::QuickPlugin)->pluginLoader(item);
|
||||
if (pluginLoader)
|
||||
metaData = pluginLoader->metaData().value("MetaData").toObject();
|
||||
|
||||
itemWidget = new QuickDockItem(item, quickController->itemKey(item), this);
|
||||
itemWidget->setFixedSize(ICONWIDTH, ICONHEIGHT);
|
||||
itemWidget->setFixedSize(itemWidget->suitableSize());
|
||||
itemWidget->installEventFilter(this);
|
||||
itemWidget->setMouseTracking(true);
|
||||
countChanged = true;
|
||||
@ -409,9 +413,11 @@ void QuickPluginWindow::onUpdatePlugin(PluginsItemInterface *itemInter, const Do
|
||||
if (dockPart != DockPart::QuickShow)
|
||||
return;
|
||||
|
||||
QuickDockItem *dockItem = getDockItemByPlugin(itemInter);
|
||||
if (dockItem)
|
||||
dockItem->update();
|
||||
QuickDockItem *quickDockItem = getDockItemByPlugin(itemInter);
|
||||
if (quickDockItem) {
|
||||
quickDockItem->setFixedSize(quickDockItem->suitableSize());
|
||||
quickDockItem->update();
|
||||
}
|
||||
}
|
||||
|
||||
void QuickPluginWindow::onRequestAppletShow(PluginsItemInterface *itemInter, const QString &itemKey)
|
||||
@ -591,11 +597,13 @@ void QuickPluginWindow::initConnection()
|
||||
* @param pluginItem
|
||||
* @param parent
|
||||
*/
|
||||
|
||||
Dock::Position QuickDockItem::m_position(Dock::Position::Bottom);
|
||||
|
||||
QuickDockItem::QuickDockItem(PluginsItemInterface *pluginItem, const QString &itemKey, QWidget *parent)
|
||||
: QWidget(parent)
|
||||
, m_pluginItem(pluginItem)
|
||||
, m_itemKey(itemKey)
|
||||
, m_position(Dock::Position::Bottom)
|
||||
, m_popupWindow(new DockPopupWindow)
|
||||
, m_contextMenu(new QMenu(this))
|
||||
, m_tipParent(nullptr)
|
||||
@ -616,6 +624,11 @@ QuickDockItem::~QuickDockItem()
|
||||
m_popupWindow->deleteLater();
|
||||
}
|
||||
|
||||
void QuickDockItem::setPosition(Dock::Position position)
|
||||
{
|
||||
m_position = position;
|
||||
}
|
||||
|
||||
PluginsItemInterface *QuickDockItem::pluginItem()
|
||||
{
|
||||
return m_pluginItem;
|
||||
@ -631,6 +644,37 @@ void QuickDockItem::hideToolTip()
|
||||
m_popupWindow->hide();
|
||||
}
|
||||
|
||||
QSize QuickDockItem::suitableSize() const
|
||||
{
|
||||
if (m_pluginItem->pluginSizePolicy() == PluginsItemInterface::PluginSizePolicy::Custom) {
|
||||
QPixmap pixmap = iconPixmap();
|
||||
if (!pixmap.isNull())
|
||||
return pixmap.size();
|
||||
|
||||
QWidget *itemWidget = m_pluginItem->itemWidget(m_itemKey);
|
||||
if (itemWidget) {
|
||||
int itemWidth = ICONWIDTH;
|
||||
int itemHeight = ICONHEIGHT;
|
||||
QSize itemSize = itemWidget->sizeHint();
|
||||
if (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom) {
|
||||
if (itemSize.width() > 0)
|
||||
itemWidth = itemSize.width();
|
||||
if (itemSize.height() > 0 && itemSize.height() <= topLevelWidget()->height())
|
||||
itemHeight = itemSize.height();
|
||||
} else {
|
||||
if (itemSize.width() > 0 && itemSize.width() < topLevelWidget()->width())
|
||||
itemWidth = itemSize.width();
|
||||
if (itemSize.height() > 0 && itemSize.height() < ICONHEIGHT)
|
||||
itemHeight = itemSize.height();
|
||||
}
|
||||
|
||||
return QSize(itemWidth, itemHeight);
|
||||
}
|
||||
}
|
||||
|
||||
return QSize(ICONWIDTH, ICONHEIGHT);
|
||||
}
|
||||
|
||||
void QuickDockItem::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
if (!m_pluginItem)
|
||||
|
@ -100,10 +100,13 @@ public:
|
||||
explicit QuickDockItem(PluginsItemInterface *pluginItem, const QString &itemKey, QWidget *parent = nullptr);
|
||||
~QuickDockItem();
|
||||
|
||||
static void setPosition(Dock::Position position);
|
||||
PluginsItemInterface *pluginItem();
|
||||
bool canInsert() const;
|
||||
void hideToolTip();
|
||||
|
||||
QSize suitableSize() const;
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *event) override;
|
||||
void mousePressEvent(QMouseEvent *event) override;
|
||||
@ -129,7 +132,7 @@ private Q_SLOTS:
|
||||
private:
|
||||
PluginsItemInterface *m_pluginItem;
|
||||
QString m_itemKey;
|
||||
Dock::Position m_position;
|
||||
static Dock::Position m_position;
|
||||
DockPopupWindow *m_popupWindow;
|
||||
QMenu *m_contextMenu;
|
||||
QWidget *m_tipParent;
|
||||
|
Loading…
x
Reference in New Issue
Block a user