[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdebase/kicker/taskmanager
From:       Aaron J. Seigo <aseigo () kde ! org>
Date:       2005-02-24 3:30:15
Message-ID: 20050224033015.C6DDEEDBC () office ! kde ! org
[Download RAW message or body]

CVS commit by aseigo: 

make sure the window still is around before accessing its attributes
i wonder if this is the cause of the "crashes when i close the gimp" bugs?
CCBUG:97083


  M +45 -35    taskmanager.cpp   1.89


--- kdebase/kicker/taskmanager/taskmanager.cpp  #1.88:1.89
@@ -476,35 +476,35 @@ void Task::setActive(bool a)
 bool Task::isMaximized() const
 {
-    return(_info.state() & NET::Max);
+    return _info.valid() && (_info.state() & NET::Max);
 }
 
 bool Task::isMinimized() const
 {
-    return _info.isMinimized();
+    return _info.valid() && _info.isMinimized();
 }
 
 bool Task::isIconified() const
 {
-    return _info.isMinimized();
+    return _info.valid() && _info.isMinimized();
 }
 
 bool Task::isAlwaysOnTop() const
 {
-    return (_info.state() & NET::StaysOnTop);
+    return _info.valid() && (_info.state() & NET::StaysOnTop);
 }
 
 bool Task::isShaded() const
 {
-    return (_info.state() & NET::Shaded);
+    return _info.valid() && (_info.state() & NET::Shaded);
 }
 
 bool Task::isOnCurrentDesktop() const
 {
-    return (_info.isOnCurrentDesktop());
+    return _info.valid() && (_info.isOnCurrentDesktop());
 }
 
 bool Task::isOnAllDesktops() const
 {
-    return _info.onAllDesktops();
+    return _info.valid() && _info.onAllDesktops();
 }
 
@@ -521,5 +521,7 @@ bool Task::isOnTop() const
 bool Task::isModified() const
 {
-  static QString modStr = QString::fromUtf8("[") + i18n("modified") + QString::fromUtf8("]");
+  static QString modStr = QString::fromUtf8("[") +
+                          i18n("modified") +
+                          QString::fromUtf8("]");
   int modStrPos = _info.visibleName().find(modStr);
 
@@ -529,6 +531,6 @@ bool Task::isModified() const
 bool Task::demandsAttention() const
 {
-    return (_info.state() & NET::DemandsAttention)
-        || _transients_demanding_attention.count() > 0;
+    return (_info.valid() && (_info.state() & NET::DemandsAttention)) ||
+           _transients_demanding_attention.count() > 0;
 }
 
@@ -554,8 +556,8 @@ void Task::updateDemandsAttentionState( 
 void Task::addTransient( WId w, const NETWinInfo& info )
 {
-    _transients.append( w );
-    if( info.state() & NET::DemandsAttention )
+    _transients.append(w);
+    if (_info.valid() && info.state() & NET::DemandsAttention)
         {
-        _transients_demanding_attention.append( w );
+        _transients_demanding_attention.append(w);
         emit changed();
         }
@@ -840,11 +842,16 @@ void Task::toDesktop(int desk)
 {
     NETWinInfo ni(qt_xdisplay(), _win, qt_xrootwin(), NET::WMDesktop);
-    if (desk == 0) {
-        if (_info.onAllDesktops()) {
+    if (desk == 0)
+    {
+        if (_info.valid() && _info.onAllDesktops())
+        {
             ni.setDesktop(TaskManager::the()->winModule()->currentDesktop());
             KWin::forceActiveWindow(_win);
         }
         else
+        {
             ni.setDesktop(NETWinInfo::OnAllDesktops);
+        }
+
         return;
     }
@@ -900,10 +907,11 @@ void Task::publishIconGeometry(QRect rec
 void Task::updateThumbnail()
 {
-  if ( !isOnCurrentDesktop() )
-    return;
-  if ( !isActive() )
-    return;
-  if ( !_grab.isNull() ) // We're already processing one...
+    if ( !_info.valid() ||
+            !isOnCurrentDesktop() ||
+            !isActive() ||
+            !_grab.isNull() ) // We're already processing one...
+    {
     return;
+    }
 
    //
@@ -914,10 +922,12 @@ void Task::updateThumbnail()
    QWidget *rootWin = qApp->desktop();
    QRect geom = _info.geometry();
-   _grab = QPixmap::grabWindow( rootWin->winId(),
+    _grab = QPixmap::grabWindow(rootWin->winId(),
                                 geom.x(), geom.y(),
-                                geom.width(), geom.height() );
+                                geom.width(), geom.height());
 
-   if ( !_grab.isNull() )
-     QTimer::singleShot( 200, this, SLOT( generateThumbnail() ) );
+    if (!_grab.isNull())
+    {
+       QTimer::singleShot(200, this, SLOT(generateThumbnail()));
+    }
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic