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

List:       kde-commits
Subject:    KDE/kdebase/workspace/systemsettings
From:       Darío Andrés Rodríguez <andresbajotierra () gmail ! co
Date:       2009-04-11 20:54:39
Message-ID: 1239483279.139057.19300.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 952427 by darioandres:

Fix a possible crash when emitting requestClose() twice from the module
(This can happen due a bug in the widgets-on-list framework, (used by the KWin Effects page),
which duplicates the KeyEvent under certain situations)

BUG: 189381


 M  +1 -2      kcmultiwidget.cpp  
 M  +1 -1      kcmultiwidget.h  
 M  +6 -2      mainwindow.cpp  


--- trunk/KDE/kdebase/workspace/systemsettings/kcmultiwidget.cpp #952426:952427
@@ -123,9 +123,8 @@
             }
         }
         if ( event->key() == Qt::Key_Escape ) {
+            emit requestClose();
             event->accept();
-            if( queryClose() ) //Close modules
-                emit finished();
             return;
         }
     } else if ( event->key() == Qt::Key_F1 && event->modifiers() == Qt::ShiftModifier ) {
--- trunk/KDE/kdebase/workspace/systemsettings/kcmultiwidget.h #952426:952427
@@ -113,7 +113,7 @@
      * Signal to emulate former KDialog behaviour
      * Emitted when quitting manually (Esc key)
      */
-    void finished();
+    void requestClose();
     
 protected slots:
     /**
--- trunk/KDE/kdebase/workspace/systemsettings/mainwindow.cpp #952426:952427
@@ -287,6 +287,11 @@
 
 void MainWindow::showOverview()
 {
+    //Some modules create duplicated keyboard event that may crash 
+    //the application if the pointer was already deassigned
+    if (!groupWidget) { 
+        return;
+    }
     if (!groupWidget->queryClose()) {
         return;
     }
@@ -301,7 +306,6 @@
     searchText->setEnabled(true);
     search->setEnabled(true);
     searchAction->setEnabled(true);
-
 }
 
 void MainWindow::selectionChanged( const QModelIndex& selected )
@@ -332,7 +336,7 @@
         moduleItemToWidgetDict.insert(mItem->service,groupWidget);
 
         // That shouldn't be needed.
-        connect(groupWidget, SIGNAL(finished()), this, SLOT(showOverview()));
+        connect(groupWidget, SIGNAL(requestClose()), this, SLOT(showOverview()));
 
         if ( ! mItem->menu ) {
             groupWidget->addModule( mItem->item );
[prev in list] [next in list] [prev in thread] [next in thread] 

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