On 9/29/06, Chris Vetter <[EMAIL PROTECTED]> wrote:
On 2006-09-29 07:41:26 +0200 Yen-Ju Chen <[EMAIL PROTECTED]> wrote:
> Here is a small application to embed GtkMozEmbed in GNUstep.
> Basically, it reparents a GTK window into NSWindow,
> and try to have NSRunLoop run with GMainLoop.
[...]

Has anyone actually managed to make it work? I get a core dump at line
119:

Here is an earlier version which you can play with.
It is mostly GTK and C++.
It is where I start.

Yen-Ju


         gtk_moz_embed_load_url(GTK_MOZ_EMBED(mozembed),
"http://www.google.com";);

         gtk_container_add(GTK_CONTAINER(window), mozembed);
         gtk_widget_show(mozembed);
         gtk_widget_show(window);       <-- BOOM

        Window xwin = GDK_WINDOW_XWINDOW(GTK_WIDGET(window)->window);

--
Chris



_______________________________________________
Etoile-discuss mailing list
Etoile-discuss@gna.org
https://mail.gna.org/listinfo/etoile-discuss

#include <stdio.h>
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
#include <gtkmozembed.h>

int main(int argc, char *argv[])
{
	GtkWidget *window;
	GtkWidget *vbox;
	GtkWidget *mozembed;

	gtk_init(&argc, &argv);

	gtk_moz_embed_set_profile_path(".", "mozembed");

	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	if (window == NULL)
		printf("\twindow is null\n");
	else
		printf("\twindow is not null\n");
	gtk_widget_set_usize(window, 600, 700);

	vbox = gtk_vbox_new(FALSE, 0);
	if (vbox == NULL)
		printf("\tvbox is null\n");
	else
		printf("\tvbox is not null\n");

	mozembed = gtk_moz_embed_new();
	if (mozembed == NULL)
		printf("\tmozembed is null\n");
	else
		printf("\tmozembed is not null\n");

#if 0
	Window xwin = GDK_WINDOW_XWINDOW(GTK_WIDGET(mozembed)->window);
	printf("xwin %d\n", xwin);
#endif

//	gtk_moz_embed_load_url(GTK_MOZ_EMBED(mozembed), "file:/usr/share/doc/HTML/index.html");
	gtk_moz_embed_load_url(GTK_MOZ_EMBED(mozembed), "http://www.gnustep.org";);

	printf("\tadding it to vbox\n");
	gtk_box_pack_start(GTK_BOX(vbox), mozembed, TRUE, TRUE, 0);

	gtk_container_add(GTK_CONTAINER(window), vbox);
	gtk_widget_show(mozembed);
	gtk_widget_show(vbox);
	gtk_widget_show(window);
	Window xwin = GDK_WINDOW_XWINDOW(GTK_WIDGET(mozembed)->window);
	printf("xwin %d\n", xwin);
#if 1
	GMainLoop *loop = g_main_loop_new(NULL, TRUE);
	GDK_THREADS_LEAVE();
#if 1
	while (g_main_loop_is_running(loop))
	{
		g_main_context_iteration(g_main_loop_get_context(loop), TRUE);
	}
#else
		g_main_loop_run(loop);
#endif
	GDK_THREADS_ENTER();
	gdk_flush();
#else
	gtk_main();
#endif
}

_______________________________________________
Etoile-discuss mailing list
Etoile-discuss@gna.org
https://mail.gna.org/listinfo/etoile-discuss

Répondre à