summaryrefslogtreecommitdiff
path: root/client/ProxyClientApp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'client/ProxyClientApp.cpp')
-rw-r--r--client/ProxyClientApp.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/client/ProxyClientApp.cpp b/client/ProxyClientApp.cpp
index c20d232..3b703d8 100644
--- a/client/ProxyClientApp.cpp
+++ b/client/ProxyClientApp.cpp
@@ -11,6 +11,7 @@ using namespace std;
ProxyClientApp::ProxyClientApp(int &argc, char *argv[]): QApplication(argc, argv)
{
dialog = NULL;
+ closeTime = 0;
/* initiates UpdatedConfig singleton that start sending configuration requests */
UpdatedConfig *cfg = UpdatedConfig::CurrentConfig();
@@ -81,6 +82,14 @@ void ProxyClientApp::trayActivated(QSystemTrayIcon::ActivationReason reason)
if (dialog == NULL)
{
+ // part of tray click workaround
+ quint64 time = QDateTime::currentMSecsSinceEpoch();
+ if (time - closeTime < 400)
+ {
+ return;
+ }
+ closeTime = 0;
+
showProxyDialog();
}
else
@@ -95,7 +104,30 @@ void ProxyClientApp::showProxyDialog()
{
dialog = new ProxyDialog();
dialog->setAttribute(Qt::WA_DeleteOnClose);
+ connect(dialog, SIGNAL(finished(int)), this, SLOT(DialogClosed(int)));
dialog->show();
+ dialog->activateWindow();
+
+ closeTime = 0;
+}
+
+void ProxyClientApp::DialogClosed(int result)
+{
+ // part of tray click workaround
+ closeTime = QDateTime::currentMSecsSinceEpoch();
+
+ Logger::Trace("Dialog closed\n");
+ dialog = NULL;
+ Proxifier *proxifier = Proxifier::GetInstance();
+ if (!proxifier->IsValid())
+ {
+ Logger::Error("No valid proxifier configuration file found!\n");
+ return; // do not restart if no config found
+ }
+ if (!proxifier->ReloadConfig())
+ {
+ Logger::Error("Unable to restart Proxifier process!\n");
+ }
}
void ProxyClientApp::configUpdated()