Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37567258
en ru br
Репозитории ALT

Группа :: Система/Библиотеки
Пакет: libqtsingleapplication

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: qtsingleapplication-qupzilla.patch
Скачать


diff --git a/src/qtsingleapplication.h b/src/qtsingleapplication.h
index 049406f..aedd45e 100644
--- a/src/qtsingleapplication.h
+++ b/src/qtsingleapplication.h
@@ -78,6 +78,7 @@ public:
 #endif // QT_VERSION < 0x050000
 
     bool isRunning();
+    void setAppId(const QString &id);
     QString id() const;
 
     void setActivationWindow(QWidget* aw, bool activateOnMessage = true);
@@ -87,6 +88,8 @@ public:
     void initialize(bool dummy = true)
         { isRunning(); Q_UNUSED(dummy) }
 
+    void removeLockFile();
+
 public Q_SLOTS:
     bool sendMessage(const QString &message, int timeout = 5000);
     void activateWindow();
diff --git a/src/qtsingleapplication.cpp b/src/qtsingleapplication.cpp
index d0fb15d..9428a82 100644
--- a/src/qtsingleapplication.cpp
+++ b/src/qtsingleapplication.cpp
@@ -153,6 +153,8 @@ void QtSingleApplication::sysInit(const QString &appId)
 
 QtSingleApplication::QtSingleApplication(int &argc, char **argv, bool GUIenabled)
     : QApplication(argc, argv, GUIenabled)
+    , peer(0)
+    , actWin(0)
 {
     sysInit();
 }
@@ -166,6 +168,8 @@ QtSingleApplication::QtSingleApplication(int &argc, char **argv, bool GUIenabled
 
 QtSingleApplication::QtSingleApplication(const QString &appId, int &argc, char **argv)
     : QApplication(argc, argv)
+    , peer(0)
+    , actWin(0)
 {
     sysInit(appId);
 }
@@ -239,9 +243,13 @@ QtSingleApplication::QtSingleApplication(Display* dpy, const QString &appId, int
 
 bool QtSingleApplication::isRunning()
 {
-    return peer->isClient();
+    return (peer && peer->isClient());
 }
 
+void QtSingleApplication::setAppId(const QString &id)
+{
+    sysInit(id);
+}
 
 /*!
     Tries to send the text \a message to the currently running
@@ -258,7 +266,7 @@ bool QtSingleApplication::isRunning()
 */
 bool QtSingleApplication::sendMessage(const QString &message, int timeout)
 {
-    return peer->sendMessage(message, timeout);
+    return (peer && peer->sendMessage(message, timeout));
 }
 
 
@@ -268,7 +276,7 @@ bool QtSingleApplication::sendMessage(const QString &message, int timeout)
 */
 QString QtSingleApplication::id() const
 {
-    return peer->applicationId();
+    return (peer ? peer->applicationId() : QString());
 }
 
 
@@ -287,6 +295,10 @@ QString QtSingleApplication::id() const
 void QtSingleApplication::setActivationWindow(QWidget* aw, bool activateOnMessage)
 {
     actWin = aw;
+    if (!peer) {
+        return;
+    }
+
     if (activateOnMessage)
         connect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow()));
     else
@@ -305,6 +317,11 @@ QWidget* QtSingleApplication::activationWindow() const
     return actWin;
 }
 
+void QtSingleApplication::removeLockFile()
+{
+    peer->removeLockedFile();
+}
+
 
 /*!
   De-minimizes, raises, and activates this application's activation window.
@@ -326,6 +343,7 @@ void QtSingleApplication::activateWindow()
         actWin->setWindowState(actWin->windowState() & ~Qt::WindowMinimized);
         actWin->raise();
         actWin->activateWindow();
+        actWin->setFocus();
     }
 }
 
diff --git a/src/qtlocalpeer.h b/src/qtlocalpeer.h
index 2ff1512..6a5e57e 100644
--- a/src/qtlocalpeer.h
+++ b/src/qtlocalpeer.h
@@ -57,6 +57,7 @@ public:
     bool sendMessage(const QString &message, int timeout);
     QString applicationId() const
         { return id; }
+    void removeLockedFile();
 
 Q_SIGNALS:
     void messageReceived(const QString &message);
diff --git a/src/qtlocalpeer.cpp b/src/qtlocalpeer.cpp
index 5a2abf9..321f861 100644
--- a/src/qtlocalpeer.cpp
+++ b/src/qtlocalpeer.cpp
@@ -159,6 +159,10 @@ bool QtLocalPeer::sendMessage(const QString &message, int timeout)
     return res;
 }
 
+void QtLocalPeer::removeLockedFile()
+{
+    lockFile.remove();
+}
 
 void QtLocalPeer::receiveConnection()
 {
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin