summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--pidgin/libpidgin.c27
2 files changed, 31 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index f1bb9b07ec..cd47bc9afe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -36,6 +36,11 @@ version 3.0.0 (??/??/????):
joining a room. (Kha) (#15458)
* Fix gevolution plugin to compile with e-d-s >= 3.6, older versions are
not supported anymore. (Ed Catmur) (#15353)
+ * Removed command line argument --multiple in *nix in favor of using
+ GApplication's uniqueness checking directly. The new way to allow
+ multiple Pidgin instances is to pass --gapplication-app-id with an
+ alternate, valid app id. Be careful not to use the same configuration
+ directory as the primary instance.
Finch:
* Support the conversation-extended signal for extending the
diff --git a/pidgin/libpidgin.c b/pidgin/libpidgin.c
index 0167366c72..ea867f64ee 100644
--- a/pidgin/libpidgin.c
+++ b/pidgin/libpidgin.c
@@ -341,12 +341,25 @@ static gint
pidgin_handle_local_options_cb(GApplication *app, GVariantDict *options,
gpointer user_data)
{
+#if !GLIB_CHECK_VERSION(2, 48, 0)
+ gchar *app_id = NULL;
+#endif
+
if (g_variant_dict_contains(options, "version")) {
printf("%s %s (libpurple %s)\n", PIDGIN_NAME, DISPLAY_VERSION,
purple_core_get_version());
return 0;
}
+#if !GLIB_CHECK_VERSION(2, 48, 0)
+ if (g_variant_dict_lookup(options, "gapplication-app-id",
+ "s", &app_id)) {
+ g_variant_dict_remove(options, "gapplication-app-id");
+ g_application_set_application_id(app, app_id);
+ g_free(app_id);
+ }
+#endif
+
return -1;
}
@@ -374,6 +387,13 @@ login_opt_arg_func(const gchar *option_name, const gchar *value,
}
static GOptionEntry option_entries[] = {
+#if !GLIB_CHECK_VERSION(2, 48, 0)
+ /* Support G_APPLICATION_CAN_OVERRIDE_APP_ID functionality
+ * even though we don't depend on version 2.48 yet
+ */
+ {"gapplication-app-id", '\0', 0, G_OPTION_ARG_STRING, NULL,
+ N_("Override the application's ID") },
+#endif
{"config", 'c', 0,
G_OPTION_ARG_FILENAME, &opt_config_dir_arg,
N_("use DIR for config files"), N_("DIR")},
@@ -682,7 +702,12 @@ int pidgin_start(int argc, char *argv[])
#endif
app = G_APPLICATION(gtk_application_new("im.pidgin.Pidgin",
- G_APPLICATION_FLAGS_NONE));
+#if GLIB_CHECK_VERSION(2, 48, 0)
+ G_APPLICATION_CAN_OVERRIDE_APP_ID
+#else
+ G_APPLICATION_FLAGS_NONE
+#endif
+ ));
summary = g_strdup_printf("%s %s", PIDGIN_NAME, DISPLAY_VERSION);
g_application_set_option_context_summary(app, summary);