fix: 任务栏最近使用任务区域残留锯齿图标应用
部分修复了两种场景: - 无法点击图标打开的锯齿应用在系统启动时残留在最近任务栏(如Deepin-Lock) - 锯齿图标应用被关闭后,残留在最近任务栏.(如dde-dconfig-editor) 当前存在问题: 第二种情况在锯齿应用被移除时,任务栏会闪一下. Issue: https://github.com/linuxdeepin/developer-center/issues/3788 Log: 任务栏最近使用任务区域残留锯齿图标应用
This commit is contained in:
parent
2031f59203
commit
b0383d43da
@ -23,6 +23,16 @@
|
|||||||
#define SETTING DockSettings::instance()
|
#define SETTING DockSettings::instance()
|
||||||
#define XCB XCBUtils::instance()
|
#define XCB XCBUtils::instance()
|
||||||
|
|
||||||
|
bool shouldShowEntry(Entry *entry)
|
||||||
|
{
|
||||||
|
if (entry->getApp()->isValidApp()) {
|
||||||
|
QString path = entry->getApp()->getFileName();
|
||||||
|
DesktopInfo desktopInfo(path.toStdString());
|
||||||
|
return desktopInfo.shouldShow();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
Dock::Dock(ApplicationManager *applicationManager, QObject *parent)
|
Dock::Dock(ApplicationManager *applicationManager, QObject *parent)
|
||||||
: SynModule(parent)
|
: SynModule(parent)
|
||||||
, m_entriesSum(0)
|
, m_entriesSum(0)
|
||||||
@ -1221,8 +1231,9 @@ void Dock::updateRecentApps()
|
|||||||
QStringList unDockedApps;
|
QStringList unDockedApps;
|
||||||
QList<Entry *> recentEntrys = m_entries->unDockedEntries();
|
QList<Entry *> recentEntrys = m_entries->unDockedEntries();
|
||||||
for (Entry *entry : recentEntrys) {
|
for (Entry *entry : recentEntrys) {
|
||||||
QString path = entry->getApp()->getFileName();
|
if (shouldShowEntry(entry)) {
|
||||||
unDockedApps << path;
|
unDockedApps << entry->getApp()->getFileName();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 保存未驻留的应用作为最近打开的应用
|
// 保存未驻留的应用作为最近打开的应用
|
||||||
@ -1242,9 +1253,17 @@ void Dock::removeEntryFromDock(Entry *entry)
|
|||||||
// 移除应用后,同时更新最近打开的应用
|
// 移除应用后,同时更新最近打开的应用
|
||||||
updateRecentApps();
|
updateRecentApps();
|
||||||
// 如果是高效模式,则发送消息或者关闭了显示最近应用的功能,则从任务栏移除
|
// 如果是高效模式,则发送消息或者关闭了显示最近应用的功能,则从任务栏移除
|
||||||
|
// 或者时尚模式显示最近应用时,当前应用不应该驻留最近应用时,需要移除
|
||||||
if ((SETTING->getDisplayMode() == DisplayMode::Efficient
|
if ((SETTING->getDisplayMode() == DisplayMode::Efficient
|
||||||
|| !m_showRecent) && !entry->getIsDocked()) {
|
|| !m_showRecent) && !entry->getIsDocked()) {
|
||||||
Q_EMIT entryRemoved(entry->getId());
|
Q_EMIT entryRemoved(entry->getId());
|
||||||
|
} else if (SETTING->getDisplayMode() == DisplayMode::Fashion && m_showRecent && !entry->getIsDocked()) {
|
||||||
|
if (shouldShowEntry(entry)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
removeAppEntry(entry);
|
||||||
|
// 移除应用后,同时更新最近打开的应用
|
||||||
|
updateRecentApps();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
removeAppEntry(entry);
|
removeAppEntry(entry);
|
||||||
|
Loading…
Reference in New Issue
Block a user