optimize last active window color scheme update

pull/9/head
Michail Vourlakos 5 years ago
parent c2a1c20d92
commit fb8428bc20

@ -48,6 +48,12 @@ LastActiveWindow::LastActiveWindow(TrackedGeneralInfo *trackedInfo)
m_windowsTracker(trackedInfo->wm()->windowsTracker()),
m_wm(trackedInfo->wm())
{
connect(m_wm->schemesTracker(), &Schemes::colorSchemeChanged, this, [&](WindowId wid) {
if (wid == m_winId) {
updateColorScheme();
}
});
connect(m_windowsTracker, &Windows::windowChanged, this, &LastActiveWindow::windowChanged);
connect(m_windowsTracker, &Windows::windowRemoved, this, &LastActiveWindow::windowRemoved);
}
@ -307,9 +313,8 @@ void LastActiveWindow::setInformation(const WindowInfoWrap &info)
setGeometry(info.geometry());
setIsKeepAbove(info.isKeepAbove());
auto scheme = m_wm->schemesTracker()->schemeForWindow(info.wid());
if (scheme) {
setColorScheme(scheme->schemeFile());
if (firstActiveness) {
updateColorScheme();
}
if (info.appName().isEmpty()) {
@ -405,6 +410,14 @@ void LastActiveWindow::clearHistory()
}
}
void LastActiveWindow::updateColorScheme()
{
auto scheme = m_wm->schemesTracker()->schemeForWindow(m_winId);
if (scheme) {
setColorScheme(scheme->schemeFile());
}
}
//! FUNCTIONALITY
void LastActiveWindow::requestActivate()

@ -149,6 +149,7 @@ private:
void setWinId(QVariant winId);
void clearHistory();
void updateColorScheme();
private:
bool m_isActive{false};

@ -54,6 +54,12 @@ void Schemes::init()
{
updateDefaultScheme();
connect(this, &Schemes::colorSchemeChanged, this, [&](WindowId wid) {
if (wid == m_wm->activeWindow()) {
emit m_wm->activeWindowChanged(wid);
}
});
connect(m_wm, &AbstractWindowInterface::windowRemoved, this, [&](WindowId wid) {
m_windowScheme.remove(wid);
});
@ -129,9 +135,7 @@ void Schemes::setColorSchemeForWindow(WindowId wid, QString scheme)
m_windowScheme[wid] = schemeFile;
}
if (wid == m_wm->activeWindow()) {
emit m_wm->activeWindowChanged(wid);
}
emit colorSchemeChanged(wid);
}
}

@ -48,6 +48,9 @@ public:
SchemeColors *schemeForWindow(WindowId wId);
void setColorSchemeForWindow(WindowId wId, QString scheme);
signals:
void colorSchemeChanged(const WindowId &wid);
private slots:
void updateDefaultScheme();

Loading…
Cancel
Save