+ return g_object_new (GTK_TYPE_INVISIBLE, NULL);
+}
+
+/**
+ * gtk_invisible_set_screen:
+ * @invisible: a #GtkInvisible.
+ * @screen: a #GdkScreen.
+ *
+ * Sets the #GdkScreen where the #GtkInvisible object will be displayed.
+ *
+ * Since: 2.2
+ **/
+void
+gtk_invisible_set_screen (GtkInvisible *invisible,
+ GdkScreen *screen)
+{
+ GtkInvisiblePrivate *priv;
+ GtkWidget *widget;
+ GdkScreen *previous_screen;
+ gboolean was_realized;
+
+ g_return_if_fail (GTK_IS_INVISIBLE (invisible));
+ g_return_if_fail (GDK_IS_SCREEN (screen));
+
+ priv = invisible->priv;
+
+ if (screen == priv->screen)
+ return;
+
+ widget = GTK_WIDGET (invisible);
+
+ previous_screen = priv->screen;
+ was_realized = gtk_widget_get_realized (widget);
+
+ if (was_realized)
+ gtk_widget_unrealize (widget);
+
+ priv->screen = screen;
+ if (screen != previous_screen)
+ _gtk_widget_propagate_screen_changed (widget, previous_screen);
+ g_object_notify (G_OBJECT (invisible), "screen");
+
+ if (was_realized)
+ gtk_widget_realize (widget);
+}
+
+/**
+ * gtk_invisible_get_screen:
+ * @invisible: a #GtkInvisible.
+ *
+ * Returns the #GdkScreen object associated with @invisible
+ *
+ * Return value: (transfer none): the associated #GdkScreen.
+ *
+ * Since: 2.2
+ **/
+GdkScreen *
+gtk_invisible_get_screen (GtkInvisible *invisible)
+{
+ g_return_val_if_fail (GTK_IS_INVISIBLE (invisible), NULL);
+
+ return invisible->priv->screen;