GtkDialog with GdkWindow as parent


#1

I am trying to create a Gtk::MessageDialog with a win32 window as its
parent (the reason comes in the end). Now, it is possible to make a
Gdk::Window wrapper using

require ‘gtk2’

win = Gdk::Window.foreign_new ARGV[0].to_i

But I cannot create a Gtk::MessageDialog with the Gdk::Window as
parent

Gtk::MessageDialog.new(win,
Gtk::MessageDialog::MODAL,
Gtk::MessageDialog::INFO,
Gtk::MessageDialog::BUTTONS_OK,
“foreign_test”)

gives me the warning

GLib-GObject-WARNING **:invalid cast from GdkWindow' toGtkWindow’

which is fair enough and the failed assertion

Gtk-CRITICAL **:gtk_message_dialog_new: assertion `parent == NULL ||
GTK_IS_WINDOW (parent)’ failed

So: is there a way that I can create a Gtk::MessageDialog or other Gtk
window with a Gdk window as parent?

For the curious minds: what I am trying to do is to make a ruby
screensaver wrapper for win32. It consists of a .c executable that
functions as a windows screensaver and invokes a ruby script that
shall be the actual screensaver. When the windows “display properties”
app wants to call the configuration dialog, it calls the executable
with its own window handle as argument. This of cause works for
windows apps, but shouldn’t it be possible to make this work with Gtk?


#2

Hi,

On Tue, 13 Feb 2007 06:15:09 +0900
“Christian M.” removed_email_address@domain.invalid wrote:

Gtk::MessageDialog.new(win,
Gtk::MessageDialog::MODAL,
Gtk::MessageDialog::INFO,
Gtk::MessageDialog::BUTTONS_OK,
“foreign_test”)

gives me the warning

GLib-GObject-WARNING **:invalid cast from GdkWindow' toGtkWindow’

which is fair enough and the failed assertion

The error message means “Use Gtk::Window instead of Gdk::Window”.
You need to use Gtk::Window as the parent.


#3

On 13 Feb., 13:59, Masao M. removed_email_address@domain.invalid wrote:

require ‘gtk2’
“foreign_test”)

gives me the warning

GLib-GObject-WARNING **:invalid cast from GdkWindow' toGtkWindow’

which is fair enough and the failed assertion

The error message means “Use Gtk::Window instead of Gdk::Window”.
You need to use Gtk::Window as the parent.

Thanks, Masao.

But is it then possible to create a Gtk::Window which is modal to the
foreign Gdk::Window? Then I could use the Gtk::Window as a dialog…