mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-23 18:32:50 +00:00
plasma: disable "under mouse" checks while updating launcher layouts
as optimization Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
e9ae856f8c
commit
59a9976052
1 changed files with 38 additions and 21 deletions
|
@ -619,6 +619,7 @@ protected:
|
||||||
LauncherApplet* b_launcherapplet;
|
LauncherApplet* b_launcherapplet;
|
||||||
QGraphicsLinearLayout* b_layout;
|
QGraphicsLinearLayout* b_layout;
|
||||||
QList<LauncherWidget*> b_launcherwidgets;
|
QList<LauncherWidget*> b_launcherwidgets;
|
||||||
|
bool b_disableundercheck;
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void slotTimeout();
|
void slotTimeout();
|
||||||
|
@ -631,6 +632,7 @@ LauncherWidgetBase::LauncherWidgetBase(QGraphicsWidget *parent, LauncherApplet *
|
||||||
: QGraphicsWidget(parent),
|
: QGraphicsWidget(parent),
|
||||||
b_launcherapplet(launcherapplet),
|
b_launcherapplet(launcherapplet),
|
||||||
b_layout(nullptr),
|
b_layout(nullptr),
|
||||||
|
b_disableundercheck(false),
|
||||||
m_undertimer(nullptr)
|
m_undertimer(nullptr)
|
||||||
{
|
{
|
||||||
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
|
@ -641,29 +643,31 @@ LauncherWidgetBase::LauncherWidgetBase(QGraphicsWidget *parent, LauncherApplet *
|
||||||
QVariant LauncherWidgetBase::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
|
QVariant LauncherWidgetBase::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
|
||||||
{
|
{
|
||||||
const QVariant result = QGraphicsWidget::itemChange(change, value);
|
const QVariant result = QGraphicsWidget::itemChange(change, value);
|
||||||
switch (change) {
|
if (!b_disableundercheck) {
|
||||||
case QGraphicsItem::ItemPositionHasChanged: {
|
switch (change) {
|
||||||
if (!m_undertimer) {
|
case QGraphicsItem::ItemPositionHasChanged: {
|
||||||
m_undertimer = new QTimer(this);
|
if (!m_undertimer) {
|
||||||
m_undertimer->setInterval(s_undertimeout);
|
m_undertimer = new QTimer(this);
|
||||||
m_undertimer->setSingleShot(true);
|
m_undertimer->setInterval(s_undertimeout);
|
||||||
connect(
|
m_undertimer->setSingleShot(true);
|
||||||
m_undertimer, SIGNAL(timeout()),
|
connect(
|
||||||
this, SLOT(slotTimeout())
|
m_undertimer, SIGNAL(timeout()),
|
||||||
);
|
this, SLOT(slotTimeout())
|
||||||
}
|
);
|
||||||
if (!m_undertimer->isActive()) {
|
|
||||||
QMutexLocker locker(&b_mutex);
|
|
||||||
foreach (LauncherWidget* launcherwidget, b_launcherwidgets) {
|
|
||||||
launcherwidget->setUnderMouse(false);
|
|
||||||
}
|
}
|
||||||
|
if (!m_undertimer->isActive()) {
|
||||||
|
QMutexLocker locker(&b_mutex);
|
||||||
|
foreach (LauncherWidget* launcherwidget, b_launcherwidgets) {
|
||||||
|
launcherwidget->setUnderMouse(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// compresses checks until position stop changing
|
||||||
|
m_undertimer->start();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
// compresses checks until position stop changing
|
|
||||||
m_undertimer->start();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
@ -671,12 +675,15 @@ QVariant LauncherWidgetBase::itemChange(QGraphicsItem::GraphicsItemChange change
|
||||||
|
|
||||||
void LauncherWidgetBase::clearLauncherWidgets()
|
void LauncherWidgetBase::clearLauncherWidgets()
|
||||||
{
|
{
|
||||||
|
Q_ASSERT(b_disableundercheck == false);
|
||||||
|
b_disableundercheck = true;
|
||||||
foreach (LauncherWidget* launcherwidget, b_launcherwidgets) {
|
foreach (LauncherWidget* launcherwidget, b_launcherwidgets) {
|
||||||
b_layout->removeItem(launcherwidget);
|
b_layout->removeItem(launcherwidget);
|
||||||
}
|
}
|
||||||
qDeleteAll(b_launcherwidgets);
|
qDeleteAll(b_launcherwidgets);
|
||||||
b_launcherwidgets.clear();
|
b_launcherwidgets.clear();
|
||||||
adjustSize();
|
adjustSize();
|
||||||
|
b_disableundercheck = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LauncherWidgetBase::checkUnderMouse()
|
void LauncherWidgetBase::checkUnderMouse()
|
||||||
|
@ -762,6 +769,7 @@ void LauncherSearch::query(const QString &text)
|
||||||
void LauncherSearch::slotUpdateLayout()
|
void LauncherSearch::slotUpdateLayout()
|
||||||
{
|
{
|
||||||
QMutexLocker locker(&b_mutex);
|
QMutexLocker locker(&b_mutex);
|
||||||
|
b_disableundercheck = true;
|
||||||
const QList<Plasma::QueryMatch> matches = m_runnermanager->matches();
|
const QList<Plasma::QueryMatch> matches = m_runnermanager->matches();
|
||||||
m_busywidget->setRunning(false);
|
m_busywidget->setRunning(false);
|
||||||
m_busywidget->setVisible(false);
|
m_busywidget->setVisible(false);
|
||||||
|
@ -806,6 +814,7 @@ void LauncherSearch::slotUpdateLayout()
|
||||||
this, SLOT(slotActivated())
|
this, SLOT(slotActivated())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
b_disableundercheck = false;
|
||||||
locker.unlock();
|
locker.unlock();
|
||||||
checkUnderMouse();
|
checkUnderMouse();
|
||||||
emit queryFinished();
|
emit queryFinished();
|
||||||
|
@ -887,6 +896,7 @@ void LauncherFavorites::slotUpdateLayout()
|
||||||
{
|
{
|
||||||
QMutexLocker locker(&b_mutex);
|
QMutexLocker locker(&b_mutex);
|
||||||
clearLauncherWidgets();
|
clearLauncherWidgets();
|
||||||
|
b_disableundercheck = true;
|
||||||
|
|
||||||
bool isfirsttime = true;
|
bool isfirsttime = true;
|
||||||
KBookmarkGroup bookmarkgroup = m_bookmarkmanager->root();
|
KBookmarkGroup bookmarkgroup = m_bookmarkmanager->root();
|
||||||
|
@ -962,6 +972,7 @@ void LauncherFavorites::slotUpdateLayout()
|
||||||
m_bookmarkmanager->blockSignals(false);
|
m_bookmarkmanager->blockSignals(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
b_disableundercheck = false;
|
||||||
locker.unlock();
|
locker.unlock();
|
||||||
checkUnderMouse();
|
checkUnderMouse();
|
||||||
}
|
}
|
||||||
|
@ -1130,6 +1141,7 @@ LauncherServiceWidget::LauncherServiceWidget(QGraphicsWidget *parent, LauncherAp
|
||||||
m_bookmarkmanager(launcherapplet->bookmarkManager()),
|
m_bookmarkmanager(launcherapplet->bookmarkManager()),
|
||||||
m_serviceid(serviceid)
|
m_serviceid(serviceid)
|
||||||
{
|
{
|
||||||
|
b_disableundercheck = true;
|
||||||
KServiceGroup::Ptr servicegroup = KServiceGroup::group(serviceid);
|
KServiceGroup::Ptr servicegroup = KServiceGroup::group(serviceid);
|
||||||
if (!servicegroup.isNull() && servicegroup->isValid()) {
|
if (!servicegroup.isNull() && servicegroup->isValid()) {
|
||||||
const QSizeF iconsize = kIconSize();
|
const QSizeF iconsize = kIconSize();
|
||||||
|
@ -1170,6 +1182,7 @@ LauncherServiceWidget::LauncherServiceWidget(QGraphicsWidget *parent, LauncherAp
|
||||||
} else {
|
} else {
|
||||||
kWarning() << "invalid serivce group" << serviceid;
|
kWarning() << "invalid serivce group" << serviceid;
|
||||||
}
|
}
|
||||||
|
b_disableundercheck = false;
|
||||||
|
|
||||||
checkUnderMouse();
|
checkUnderMouse();
|
||||||
slotCheckBookmarks();
|
slotCheckBookmarks();
|
||||||
|
@ -1424,6 +1437,7 @@ void LauncherRecent::slotUpdateLayout()
|
||||||
{
|
{
|
||||||
QMutexLocker locker(&b_mutex);
|
QMutexLocker locker(&b_mutex);
|
||||||
clearLauncherWidgets();
|
clearLauncherWidgets();
|
||||||
|
b_disableundercheck = true;
|
||||||
|
|
||||||
const QSizeF iconsize = kIconSize();
|
const QSizeF iconsize = kIconSize();
|
||||||
foreach (const QString &recent, KRecentDocument::recentDocuments()) {
|
foreach (const QString &recent, KRecentDocument::recentDocuments()) {
|
||||||
|
@ -1453,6 +1467,7 @@ void LauncherRecent::slotUpdateLayout()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
b_disableundercheck = false;
|
||||||
locker.unlock();
|
locker.unlock();
|
||||||
checkUnderMouse();
|
checkUnderMouse();
|
||||||
}
|
}
|
||||||
|
@ -1528,6 +1543,7 @@ void LauncherLeave::slotUpdateLayout()
|
||||||
{
|
{
|
||||||
QMutexLocker locker(&b_mutex);
|
QMutexLocker locker(&b_mutex);
|
||||||
clearLauncherWidgets();
|
clearLauncherWidgets();
|
||||||
|
b_disableundercheck = true;
|
||||||
|
|
||||||
if (m_systemseparator) {
|
if (m_systemseparator) {
|
||||||
b_layout->removeItem(m_systemseparator);
|
b_layout->removeItem(m_systemseparator);
|
||||||
|
@ -1638,6 +1654,7 @@ void LauncherLeave::slotUpdateLayout()
|
||||||
this, SLOT(slotActivated())
|
this, SLOT(slotActivated())
|
||||||
);
|
);
|
||||||
|
|
||||||
|
b_disableundercheck = false;
|
||||||
locker.unlock();
|
locker.unlock();
|
||||||
checkUnderMouse();
|
checkUnderMouse();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue