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

List:       kde-commits
Subject:    kdebase/klipper
From:       Esben Mose Hansen <kde () mosehansen ! dk>
Date:       2005-02-10 17:35:30
Message-ID: 20050210173530.99E691D1BB () office ! kde ! org
[Download RAW message or body]

CVS commit by esben: 

Patch by Lubos Lunak to save data on session end without enabling session management.
The patch has been slightly modified (added comments, move unneeded declarations from headerfile) by me.


  M +1 -0      main.cpp   1.44
  M +24 -1     toplevel.cpp   1.172
  M +2 -1      toplevel.h   1.61


--- kdebase/klipper/toplevel.cpp  #1.171:1.172
@@ -92,4 +92,26 @@ namespace {
 }
 
+/**
+ * Helper class to save history upon session exit.
+ */
+class KlipperSessionManaged : public KSessionManaged
+{
+public:
+    KlipperSessionManaged( KlipperWidget* k )
+        : klipper( k )
+        {}
+
+    /**
+     * Save state upon session exit.
+     *
+     * Saving history on session save
+     */
+    virtual bool commitData( QSessionManager& ) {
+        klipper->saveSession();
+        return true;
+    }
+private:
+    KlipperWidget* klipper;
+};
 
 extern bool qt_qclipboard_bailout_hack;
@@ -108,4 +130,5 @@ KlipperWidget::KlipperWidget( QWidget *p
     , m_config( config )
     , m_pendingContentsCheck( false )
+    , session_managed( new KlipperSessionManaged( this ))
 {
     qt_qclipboard_bailout_hack = true;
@@ -164,5 +187,4 @@ KlipperWidget::KlipperWidget( QWidget *p
 
     readProperties(m_config);
-    connect(kapp, SIGNAL(saveYourself()), SLOT(saveSession()));
     connect(kapp, SIGNAL(settingsChanged(int)), SLOT(slotSettingsChanged(int)));
 
@@ -204,4 +226,5 @@ KlipperWidget::KlipperWidget( QWidget *p
 KlipperWidget::~KlipperWidget()
 {
+    delete session_managed;
     delete showTimer;
     delete hideTimer;

--- kdebase/klipper/toplevel.h  #1.60:1.61
@@ -40,4 +40,5 @@ class KAction;
 class QMimeSource;
 class HistoryItem;
+class KlipperSessionManaged;
 
 class KlipperWidget : public QWidget, public DCOPObject
@@ -200,4 +201,5 @@ private:
 
     bool blockFetchingNewData();
+    KlipperSessionManaged* session_managed;
 };
 

--- kdebase/klipper/main.cpp  #1.43:1.44
@@ -47,4 +47,5 @@ extern "C" int KDE_EXPORT kdemain(int ar
   }
   KUniqueApplication app;
+  app.disableSessionManagement();
 
   Klipper *toplevel = new Klipper();


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

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