sgWebShell->Init((nsNativeWidget *)GDK_WINDOW_XWINDOW(main_window->window), 0, 0, 500, 500);
NS_ASSERTION(PR_FALSE, "Please fix this code.");
int main(int argc, char **argv) {  GtkWidget * main_window = NULL;  gtk_init(&argc, &argv);  nsresult   rv;  // init xlibrgb  // XXX this is a hack, will replace with a service RSN  xlib_rgb_init(GDK_DISPLAY(), DefaultScreenOfDisplay(GDK_DISPLAY()));  main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);  gtk_widget_set_usize(main_window, 500, 500);  gtk_widget_realize(main_window);  //////////////////////////////////////////////////////////////////////  //  // Toolkit Service setup  //   // Note: This must happend before NS_SetupRegistry() is called so  //       that the toolkit specific xpcom components can be registered  //       as needed.  //  //////////////////////////////////////////////////////////////////////  nsIUnixToolkitService * unixToolkitService = nsnull;      rv = nsComponentManager::CreateInstance(kCUnixToolkitServiceCID,                                          nsnull,                                          NS_GET_IID(nsIUnixToolkitService),                                          (void **) &unixToolkitService);    NS_ASSERTION(NS_SUCCEEDED(rv),"Cannot obtain unix toolkit service.");  if (!NS_SUCCEEDED(rv))	return 1;  // Force the toolkit into "xlib" mode regardless of MOZ_TOOLKIT  unixToolkitService->SetToolkitName("xlib");  NS_RELEASE(unixToolkitService);  //////////////////////////////////////////////////////////////////////  // End toolkit service setup  //////////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////////  //  // Setup the registry  //  //////////////////////////////////////////////////////////////////////  NS_SetupRegistry();  printf("Creating event queue.\n");      nsIEventQueueService * eventQueueService = nsnull;  nsIEventQueue * eventQueue = nsnull;    // Create the Event Queue for the UI thread...    rv = nsServiceManager::GetService(kEventQueueServiceCID,									kIEventQueueServiceIID,									(nsISupports **)&eventQueueService);    NS_ASSERTION(NS_SUCCEEDED(rv),"Could not obtain the event queue service.");  if (!NS_SUCCEEDED(rv))	return 1;  rv = eventQueueService->CreateThreadEventQueue();    NS_ASSERTION(NS_SUCCEEDED(rv),"Could not create the event queue for the the thread.");    if (!NS_SUCCEEDED(rv))	return 1;    rv = eventQueueService->GetThreadEventQueue(NS_CURRENT_THREAD, &eventQueue);    NS_ASSERTION(NS_SUCCEEDED(rv),"Could not get the newly created thread event queue.\n");    if (!NS_SUCCEEDED(rv))	return 1;    NS_RELEASE(eventQueueService);    rv = nsServiceManager::GetService(kWindowServiceCID,				    kWindowServiceIID,				    (nsISupports **)&gsWindowService);  NS_ASSERTION(NS_SUCCEEDED(rv),"Couldn't obtain window service\n");  if (!NS_SUCCEEDED(rv))	return 1;  gsWindowService->SetWindowCreateCallback(WindowCreateCallback);  gsWindowService->SetWindowDestroyCallback(WindowDestroyCallback);  gdk_input_add(eventQueue->GetEventQueueSelectFD(),				GDK_INPUT_READ,				event_processor_callback,				eventQueue);  gtk_widget_show(main_window);  rv = nsRepository::CreateInstance(kWebShellCID, nsnull,				    kIWebShellIID,				    (void**)&sgWebShell);  NS_ASSERTION(NS_SUCCEEDED(rv),"Cannot create WebShell.\n");  if (!NS_SUCCEEDED(rv))	return 1;  sgWebShell->Init((nsNativeWidget *)GDK_WINDOW_XWINDOW(main_window->window),		  0, 0,		  500, 500);  gsWindowService->GetEventDispatcher(&gsEventDispatcher);  rv = nsServiceManager::GetService(kPrefCID, kIPrefIID,                                    (nsISupports**)&sgPrefs);  if (NS_OK != rv) {    printf("failed to get prefs instance\n");    return rv;  }    sgPrefs->StartUp();  sgPrefs->ReadUserPrefs();  nsIContentViewer *content_viewer;  rv = sgWebShell->GetContentViewer(&content_viewer);  if (NS_SUCCEEDED(rv) && content_viewer) {    content_viewer->Show();    NS_RELEASE(content_viewer);  }      //  sgWebShell->Show();  // attach the size_allocate signal to the main window  gtk_signal_connect_after(GTK_OBJECT(main_window),                           "size_allocate",                           GTK_SIGNAL_FUNC(handle_size_allocate),                           sgWebShell);    char *url = "http://www.mozilla.org/unix/xlib.html";  nsString URL(url);  PRUnichar *u_url = URL.ToNewUnicode();  sgWebShell->LoadURL(u_url);    gtk_main();  return 0;}