Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions panels/dock/taskmanager/x11preview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ class AppItemWindowDeletegate : public QAbstractItemDelegate
{
auto closeButton = new DIconButton(parent);
closeButton->setIcon(DDciIcon::fromTheme("close"));

closeButton->setEnabledCircle(true);
QPalette palette = closeButton->palette();

QColor lightColor = palette.color(QPalette::Normal, QPalette::Light);
Expand Down Expand Up @@ -409,7 +409,7 @@ X11WindowPreviewContainer::X11WindowPreviewContainer(X11WindowMonitor* monitor,

connect(m_hideTimer, &QTimer::timeout, this, &X11WindowPreviewContainer::callHide);

connect(m_closeAllButton, &DToolButton::clicked, this, [this](){
connect(m_closeAllButton, &DIconButton::clicked, this, [this](){
if (m_previewItem.isNull()) return;
for (auto window : m_previewItem->getAppendWindows()) {
window->close();
Expand Down Expand Up @@ -575,10 +575,15 @@ void X11WindowPreviewContainer::initUI()
m_previewIcon->setFixedSize(PREVIEW_TITLE_HEIGHT, PREVIEW_TITLE_HEIGHT);
m_previewIcon->setScaledContents(true);

m_closeAllButton = new DToolButton(this);
m_closeAllButton = new DIconButton(this);

m_closeAllButton->setIconSize(QSize(16, 16));
m_closeAllButton->setIcon(QIcon::fromTheme("close"));
m_closeAllButton->setIcon(DDciIcon::fromTheme("close"));
m_closeAllButton->setFixedSize(PREVIEW_TITLE_HEIGHT, PREVIEW_TITLE_HEIGHT);
m_closeAllButton->setEnabledCircle(true);

DIconButtonHoverFilter *hoverHandler = new DIconButtonHoverFilter(this);
m_closeAllButton->installEventFilter(hoverHandler);

m_previewIcon->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
m_previewTitle->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
Expand Down
38 changes: 37 additions & 1 deletion panels/dock/taskmanager/x11preview.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
#include <DToolButton>
#include <QVBoxLayout>
#include <DBlurEffectWidget>
#include <DGuiApplicationHelper>
#include <DIconButton>

DWIDGET_USE_NAMESPACE

Expand All @@ -24,6 +26,40 @@ class AppItemWindowModel;
class AppItemWindowDeletegate;
class PreviewsListView;

class DIconButtonHoverFilter : public QObject
{
Q_OBJECT public:
explicit DIconButtonHoverFilter(QObject* parent = nullptr) : QObject(parent)
{
}

void setButtonColor(QObject* watched, QColor color)
{
DIconButton* button = qobject_cast<DIconButton*>(watched);
if (button) {
QPalette pt = button->palette();
pt.setColor(QPalette::Button, color);
button->setPalette(pt);
}
}

protected:
bool eventFilter(QObject* watched, QEvent* event) override
{
if (event->type() == QEvent::HoverEnter) {
// 处理 HoverEnter 事件
QColor color = DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::DarkType ? Qt::white : Qt::black;
color.setAlphaF(0.1);
setButtonColor(watched, color);
} else if (event->type() == QEvent::HoverLeave || event->type() == QEvent::Show) {
// 处理 HoverLeave 和 show事件
setButtonColor(watched, Qt::transparent);
}
return QObject::eventFilter(watched, event);
}
};


class X11WindowPreviewContainer: public DBlurEffectWidget
{
Q_OBJECT
Expand Down Expand Up @@ -66,7 +102,7 @@ private Q_SLOTS:

QLabel* m_previewIcon;
DLabel* m_previewTitle;
DToolButton* m_closeAllButton;
DIconButton* m_closeAllButton;

QTimer* m_hideTimer;

Expand Down