Hey monodev fellows,

first of all I appreciate all your hard work and want to contribute this to
the mono project.

Right now it is not possible to use GTK# with an application which embeds
mono. GTK# works just fine if you use mono as a standalone application eg
mono.exe.

The reason why GTK# does not works when you embed mono is as fallowing.

Each GTK# Application has to call Application.Init().

This functions is like this.

public static void Init ()
{
SetPrgname ();
IntPtr argv = new IntPtr(0);
int argc = 0;

gtk_init (ref argc, ref argv);

SynchronizationContext.SetSynchronizationContext (new
GLib.GLibSynchronizationContext ()); }

Init will fail on SetPrgname (); when mono is embedded in an application.

static void SetPrgname ()
{
GLib.Global.ProgramName = System.IO.Path.GetFileNameWithoutExtension
(Environment.GetCommandLineArgs () [0]);
}

When embedding Mono, Environment.GetCommandLineArgs () will fail because it
is not set to anything. When you run the same on mono as a standalone
application it will work because mono will pass the command line argument
via Environment.GetCommandLineArgs().

I fixed it by registering the internal call for
Environment.GetCommandLineArgs to my own fucntion and return just a dummy
string.

My suggestion would be to do the same in mono when you embed it or to
change SetPrgname  to not relay on Environment.GetCommandLineArgs ().

Best Regards
Sahin
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to