All pastes #720037 Raw Edit

Something

public text v1 · immutable
#720037 ·published 2007-09-29 21:59 UTC
rendered paste body
#include <stdlib.h>
#include <gtk/gtk.h>

#if defined(GDK_WINDOWING_X11)
	#include <gdk/gdkx.h>
	#define GDK_NATIVE_WINDOW(wnd) ((guint)GDK_WINDOW_XID((wnd)))
#elif defined(GDK_WINDOWING_WIN32)
	#include <gdk/gdkwin32.h>
	#define GDK_NATIVE_WINDOW(wnd) ((guint)GDK_WINDOW_HWND((wnd)))
#else
	#define GDK_NATIVE_WINDOW(wnd) ((guint)(wnd))
#endif /* kind of windowing system */

static void
dlg_show(GtkWidget *dlg, GdkWindow *parent)
{
	if (dlg->window) {
		if (parent) {
			gdk_window_set_transient_for(dlg->window, parent);
			g_print("dlg_show: Setting transient\n");
		} else {
			g_print("dlg_show: window ID is %d\n", GDK_NATIVE_WINDOW(dlg->window));
		}
	}
}

int
main(int argc, char **argv)
{
	GtkWidget *dlg = NULL;
	GdkWindow *parent = NULL;

	gtk_init(&argc, &argv);

	dlg = gtk_dialog_new_with_buttons(argc > 1 ? "The Top" : "The Bottom", NULL, 0, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
	if (argc > 1)
		parent = gdk_window_foreign_new(atoi(argv[1]));
	g_signal_connect(G_OBJECT(dlg), "show", (GCallback)dlg_show, parent);

	gtk_dialog_run(GTK_DIALOG(dlg));
	gtk_widget_destroy(dlg);

	return 0;
}