def query_for_toplevel(screen, prompt)
toplevel = nil
display = screen.display
popup = Gtk::Window.new(Gtk::Window::POPUP)
popup.screen = screen
popup.modal = true
popup.window_position = Gtk::Window::POS_CENTER
frame = Gtk::Frame.new
frame.set_shadow_type(Gtk::SHADOW_OUT)
popup.add(frame)
label = Gtk::Label.new(prompt)
label.set_padding(10, 10)
frame.add(label)
popup.show_all
cursor = Gdk::Cursor.new(Gdk::Cursor::CROSSHAIR)
if Gdk::pointer_grab(popup.window, false,
Gdk::Event::BUTTON_RELEASE_MASK,
nil,
cursor,
Gdk::Event::CURRENT_TIME) == Gdk::GRAB_SUCCESS
clicked = false
popup.signal_connect('button-release-event') do
clicked = true
end
until clicked
Gtk.main_iteration
toplevel = find_toplevel_at_pointer(screen.display)
if toplevel == popup
toplevel = nil
end
end
popup.destroy
Gdk.flush
return toplevel
end
end