Skip to content

Commit 6b67685

Browse files
webwarrior-wsknocte
authored andcommitted
Core: make Gtk app uniqueness optional
Add optional parameter to MauiGtkApplication constructor that determines if application can have several instances running at the same time. Default is false (no uniqueness check), which requires no DBus connections, unlike previous default (uniqueness is enforced).
1 parent d92687b commit 6b67685

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/Core/src/Platform/Gtk/MauiGtkApplication.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ namespace Microsoft.Maui
1010
{
1111
public abstract class MauiGtkApplication : IPlatformApplication
1212
{
13+
/// <param name="enforceUniqueness">If true, only one instance of application can run at any moment.</param>
14+
public MauiGtkApplication(bool enforceUniqueness = false)
15+
{
16+
EnforceUniqueness = enforceUniqueness;
17+
}
18+
1319
protected abstract MauiApp CreateMauiApp();
1420

1521
static readonly Regex InvalidGtkApplicationIdElementCharRegex = new Regex("[^A-Za-z0-9_\\-]");
@@ -53,6 +59,7 @@ public string? Name
5359
public IServiceProvider Services { get; protected set; } = null!;
5460

5561
public IApplication Application { get; protected set; } = null!;
62+
public bool EnforceUniqueness { get; }
5663

5764
public void Run(params string[] args)
5865
{
@@ -135,7 +142,8 @@ protected void StartupLauch(object sender, EventArgs args)
135142
protected void Launch(EventArgs args)
136143
{
137144
Gtk.Application.Init();
138-
var app = new Gtk.Application(ApplicationId, GLib.ApplicationFlags.None);
145+
var flags = EnforceUniqueness ? GLib.ApplicationFlags.None : GLib.ApplicationFlags.NonUnique;
146+
var app = new Gtk.Application(ApplicationId, flags);
139147

140148
RegisterLifecycleEvents(app);
141149

0 commit comments

Comments
 (0)