[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/4.5/kdebase/workspace/plasma/desktop/shell
From: Anthony Bryant <antjbryant () gmail ! com>
Date: 2010-09-23 0:08:01
Message-ID: 20100923000801.CD269AC888 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1178409 by abryant:
Hide panel applet handles when their associated applet is destroyed.
Also, always check before using the QWeakPointer's value.
M +37 -9 panelapplethandle.cpp
M +1 -0 panelapplethandle.h
--- branches/KDE/4.5/kdebase/workspace/plasma/desktop/shell/panelapplethandle.cpp #1178408:1178409
@@ -92,6 +92,10 @@
moveToApplet();
return;
}
+ Plasma::Applet *oldApplet = m_applet.data();
+ if (oldApplet) {
+ disconnect(oldApplet, SIGNAL(destroyed()), this, SLOT(appletDestroyed()));
+ }
m_applet = applet;
m_hideTimer->stop();
@@ -112,6 +116,8 @@
QAction *configAction = applet->action("configure");
m_configureButton->setVisible(configAction && configAction->isEnabled());
+ connect(applet, SIGNAL(destroyed()), this, SLOT(appletDestroyed()));
+
moveToApplet();
}
}
@@ -138,25 +144,38 @@
void PanelAppletHandle::startHideTimeout()
{
m_hideTimer->start(800);
- if (m_applet) {
- Plasma::WindowEffects::slideWindow(this, m_applet.data()->location());
+ Plasma::Applet *applet = m_applet.data();
+ if (applet) {
+ Plasma::WindowEffects::slideWindow(this, applet->location());
}
}
void PanelAppletHandle::configureApplet()
{
- if (m_applet) {
- m_applet.data()->showConfigurationInterface();
+ Plasma::Applet *applet = m_applet.data();
+ if (applet) {
+ applet->showConfigurationInterface();
}
}
void PanelAppletHandle::closeApplet()
{
- if (m_applet) {
- m_applet.data()->destroy();
+ Plasma::Applet *applet = m_applet.data();
+ if (applet) {
+ applet->destroy();
}
}
+void PanelAppletHandle::appletDestroyed()
+{
+ Plasma::Applet *applet = m_applet.data();
+ if (applet) {
+ disconnect(applet, SIGNAL(destroyed()), this, SLOT(appletDestroyed()));
+ m_applet.clear();
+ }
+ hide();
+}
+
void PanelAppletHandle::enterEvent(QEvent *event)
{
Q_UNUSED(event)
@@ -173,18 +192,27 @@
void PanelAppletHandle::mousePressEvent(QMouseEvent *event)
{
- emit mousePressed(m_applet.data(), event);
+ Plasma::Applet *applet = m_applet.data();
+ if (applet) {
+ emit mousePressed(applet, event);
}
+}
void PanelAppletHandle::mouseMoveEvent(QMouseEvent *event)
{
- emit mouseMoved(m_applet.data(), event);
+ Plasma::Applet *applet = m_applet.data();
+ if (applet) {
+ emit mouseMoved(applet, event);
}
+}
void PanelAppletHandle::mouseReleaseEvent(QMouseEvent *event)
{
- emit mouseReleased(m_applet.data(), event);
+ Plasma::Applet *applet = m_applet.data();
+ if (applet) {
+ emit mouseReleased(applet, event);
}
+}
#include "panelapplethandle.moc"
--- branches/KDE/4.5/kdebase/workspace/plasma/desktop/shell/panelapplethandle.h #1178408:1178409
@@ -56,6 +56,7 @@
protected Q_SLOTS:
void configureApplet();
void closeApplet();
+ void appletDestroyed();
void updatePalette();
Q_SIGNALS:
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic