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 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)
|
||||
: SynModule(parent)
|
||||
, m_entriesSum(0)
|
||||
@ -1221,8 +1231,9 @@ void Dock::updateRecentApps()
|
||||
QStringList unDockedApps;
|
||||
QList<Entry *> recentEntrys = m_entries->unDockedEntries();
|
||||
for (Entry *entry : recentEntrys) {
|
||||
QString path = entry->getApp()->getFileName();
|
||||
unDockedApps << path;
|
||||
if (shouldShowEntry(entry)) {
|
||||
unDockedApps << entry->getApp()->getFileName();
|
||||
}
|
||||
}
|
||||
|
||||
// 保存未驻留的应用作为最近打开的应用
|
||||
@ -1242,9 +1253,17 @@ void Dock::removeEntryFromDock(Entry *entry)
|
||||
// 移除应用后,同时更新最近打开的应用
|
||||
updateRecentApps();
|
||||
// 如果是高效模式,则发送消息或者关闭了显示最近应用的功能,则从任务栏移除
|
||||
// 或者时尚模式显示最近应用时,当前应用不应该驻留最近应用时,需要移除
|
||||
if ((SETTING->getDisplayMode() == DisplayMode::Efficient
|
||||
|| !m_showRecent) && !entry->getIsDocked()) {
|
||||
Q_EMIT entryRemoved(entry->getId());
|
||||
} else if (SETTING->getDisplayMode() == DisplayMode::Fashion && m_showRecent && !entry->getIsDocked()) {
|
||||
if (shouldShowEntry(entry)) {
|
||||
return;
|
||||
}
|
||||
removeAppEntry(entry);
|
||||
// 移除应用后,同时更新最近打开的应用
|
||||
updateRecentApps();
|
||||
}
|
||||
} else {
|
||||
removeAppEntry(entry);
|
||||
|
Loading…
Reference in New Issue
Block a user