Группа :: Система/Библиотеки
Пакет: 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()
{