desk grid: do not recreate DesktopButtonsViews
Same issue as with present windows closers: qml is slow Interestingly "hide" means "hide" here and there're also no visual artifacts. BUG: 347339 REVIEW: 123668
This commit is contained in:
parent
b3bd9ea144
commit
c56d64b837
1 changed files with 20 additions and 13 deletions
|
@ -1117,18 +1117,34 @@ void DesktopGridEffect::setup()
|
|||
}
|
||||
bool enableAdd = effects->numberOfDesktops() < 20;
|
||||
bool enableRemove = effects->numberOfDesktops() > 1;
|
||||
|
||||
QHash< DesktopButtonsView*, EffectWindow* >::iterator it = m_desktopButtonsViews.begin();
|
||||
for (int i = 0; i < effects->numScreens(); ++i) {
|
||||
DesktopButtonsView* view = new DesktopButtonsView();
|
||||
DesktopButtonsView *view;
|
||||
if (it == m_desktopButtonsViews.end()) {
|
||||
view = new DesktopButtonsView();
|
||||
m_desktopButtonsViews.insert(view, NULL);
|
||||
it = m_desktopButtonsViews.end(); // changed through insert!
|
||||
connect(view, SIGNAL(addDesktop()), SLOT(slotAddDesktop()));
|
||||
connect(view, SIGNAL(removeDesktop()), SLOT(slotRemoveDesktop()));
|
||||
} else {
|
||||
view = it.key();
|
||||
++it;
|
||||
}
|
||||
view->setAddDesktopEnabled(enableAdd);
|
||||
view->setRemoveDesktopEnabled(enableRemove);
|
||||
connect(view, SIGNAL(addDesktop()), SLOT(slotAddDesktop()));
|
||||
connect(view, SIGNAL(removeDesktop()), SLOT(slotRemoveDesktop()));
|
||||
const QRect screenRect = effects->clientArea(FullScreenArea, i, 1);
|
||||
view->setGeometry(screenRect.right() + 1 - view->width(),
|
||||
screenRect.bottom() + 1 - view->height(),
|
||||
view->width(), view->height());
|
||||
view->show();
|
||||
m_desktopButtonsViews.insert(view, NULL);
|
||||
}
|
||||
while (it != m_desktopButtonsViews.end()) {
|
||||
if (*it && (*it)->isDeleted())
|
||||
(*it)->unrefWindow();
|
||||
DesktopButtonsView *view = it.key();
|
||||
it = m_desktopButtonsViews.erase(it);
|
||||
view->deleteLater();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1208,15 +1224,6 @@ void DesktopGridEffect::finish()
|
|||
}
|
||||
m_proxy = 0;
|
||||
}
|
||||
|
||||
QHash< DesktopButtonsView*, EffectWindow* >::iterator i = m_desktopButtonsViews.begin();
|
||||
while (i != m_desktopButtonsViews.end()) {
|
||||
if (*i && (*i)->isDeleted())
|
||||
(*i)->unrefWindow();
|
||||
DesktopButtonsView *view = i.key();
|
||||
i = m_desktopButtonsViews.erase(i);
|
||||
view->deleteLater();
|
||||
}
|
||||
}
|
||||
|
||||
void DesktopGridEffect::globalShortcutChanged(QAction *action, const QKeySequence& seq)
|
||||
|
|
Loading…
Reference in a new issue