X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkinvisible.c;h=27ca2502cbc66b18a5342a035c9d71d80591675d;hb=bb3c56abe2e7916126bd4f8234dee080b5381941;hp=2d8bd65b74885f752f0e202947bf475c9d5da2fa;hpb=511560ba888ea448f1303c5096df12d99c7d0308;p=~andy%2Fgtk diff --git a/gtk/gtkinvisible.c b/gtk/gtkinvisible.c index 2d8bd65b7..27ca2502c 100644 --- a/gtk/gtkinvisible.c +++ b/gtk/gtkinvisible.c @@ -12,9 +12,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ /* @@ -27,10 +25,25 @@ #include "config.h" #include #include "gtkinvisible.h" +#include "gtkwidgetprivate.h" #include "gtkprivate.h" #include "gtkintl.h" -struct _GtkInvisiblePriv + +/** + * SECTION:gtkinvisible + * @Short_description: A widget which is not displayed + * @Title: GtkInvisible + * + * The #GtkInvisible widget is used internally in GTK+, and is probably not + * very useful for application developers. + * + * It is used for reliable pointer grabs and selection handling in the code + * for drag-and-drop. + */ + + +struct _GtkInvisiblePrivate { GdkScreen *screen; gboolean has_user_ref_count; @@ -42,10 +55,9 @@ enum { LAST_ARG }; -static void gtk_invisible_destroy (GtkObject *object); +static void gtk_invisible_destroy (GtkWidget *widget); static void gtk_invisible_realize (GtkWidget *widget); -static void gtk_invisible_style_set (GtkWidget *widget, - GtkStyle *previous_style); +static void gtk_invisible_style_updated (GtkWidget *widget); static void gtk_invisible_show (GtkWidget *widget); static void gtk_invisible_size_allocate (GtkWidget *widget, GtkAllocation *allocation); @@ -68,19 +80,17 @@ static void gtk_invisible_class_init (GtkInvisibleClass *class) { GObjectClass *gobject_class; - GtkObjectClass *object_class; GtkWidgetClass *widget_class; widget_class = (GtkWidgetClass*) class; - object_class = (GtkObjectClass*) class; gobject_class = (GObjectClass*) class; widget_class->realize = gtk_invisible_realize; - widget_class->style_set = gtk_invisible_style_set; + widget_class->style_updated = gtk_invisible_style_updated; widget_class->show = gtk_invisible_show; widget_class->size_allocate = gtk_invisible_size_allocate; + widget_class->destroy = gtk_invisible_destroy; - object_class->destroy = gtk_invisible_destroy; gobject_class->set_property = gtk_invisible_set_property; gobject_class->get_property = gtk_invisible_get_property; gobject_class->constructor = gtk_invisible_constructor; @@ -93,18 +103,17 @@ gtk_invisible_class_init (GtkInvisibleClass *class) GDK_TYPE_SCREEN, GTK_PARAM_READWRITE)); - g_type_class_add_private (class, sizeof (GtkInvisiblePriv)); + g_type_class_add_private (class, sizeof (GtkInvisiblePrivate)); } static void gtk_invisible_init (GtkInvisible *invisible) { - GtkInvisiblePriv *priv; - GdkColormap *colormap; + GtkInvisiblePrivate *priv; invisible->priv = G_TYPE_INSTANCE_GET_PRIVATE (invisible, GTK_TYPE_INVISIBLE, - GtkInvisiblePriv); + GtkInvisiblePrivate); priv = invisible->priv; gtk_widget_set_has_window (GTK_WIDGET (invisible), TRUE); @@ -114,17 +123,13 @@ gtk_invisible_init (GtkInvisible *invisible) priv->has_user_ref_count = TRUE; priv->screen = gdk_screen_get_default (); - - colormap = _gtk_widget_peek_colormap (); - if (colormap) - gtk_widget_set_colormap (GTK_WIDGET (invisible), colormap); } static void -gtk_invisible_destroy (GtkObject *object) +gtk_invisible_destroy (GtkWidget *widget) { - GtkInvisible *invisible = GTK_INVISIBLE (object); - GtkInvisiblePriv *priv = invisible->priv; + GtkInvisible *invisible = GTK_INVISIBLE (widget); + GtkInvisiblePrivate *priv = invisible->priv; if (priv->has_user_ref_count) { @@ -132,7 +137,7 @@ gtk_invisible_destroy (GtkObject *object) g_object_unref (invisible); } - GTK_OBJECT_CLASS (gtk_invisible_parent_class)->destroy (object); + GTK_WIDGET_CLASS (gtk_invisible_parent_class)->destroy (widget); } /** @@ -180,7 +185,7 @@ void gtk_invisible_set_screen (GtkInvisible *invisible, GdkScreen *screen) { - GtkInvisiblePriv *priv; + GtkInvisiblePrivate *priv; GtkWidget *widget; GdkScreen *previous_screen; gboolean was_realized; @@ -216,7 +221,7 @@ gtk_invisible_set_screen (GtkInvisible *invisible, * * Returns the #GdkScreen object associated with @invisible * - * Return value: the associated #GdkScreen. + * Return value: (transfer none): the associated #GdkScreen. * * Since: 2.2 **/ @@ -232,6 +237,7 @@ static void gtk_invisible_realize (GtkWidget *widget) { GdkWindow *parent; + GdkWindow *window; GdkWindowAttr attributes; gint attributes_mask; @@ -252,16 +258,13 @@ gtk_invisible_realize (GtkWidget *widget) attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_NOREDIR; - widget->window = gdk_window_new (parent, &attributes, attributes_mask); - - gdk_window_set_user_data (widget->window, widget); - - widget->style = gtk_style_attach (widget->style, widget->window); + window = gdk_window_new (parent, &attributes, attributes_mask); + gtk_widget_set_window (widget, window); + gtk_widget_register_window (widget, window); } static void -gtk_invisible_style_set (GtkWidget *widget, - GtkStyle *previous_style) +gtk_invisible_style_updated (GtkWidget *widget) { /* Don't chain up to parent implementation */ } @@ -269,16 +272,16 @@ gtk_invisible_style_set (GtkWidget *widget, static void gtk_invisible_show (GtkWidget *widget) { - GTK_WIDGET_SET_FLAGS (widget, GTK_VISIBLE); + _gtk_widget_set_visible_flag (widget, TRUE); gtk_widget_map (widget); } static void gtk_invisible_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) + GtkAllocation *allocation) { - widget->allocation = *allocation; -} + gtk_widget_set_allocation (widget, allocation); +} static void @@ -307,7 +310,7 @@ gtk_invisible_get_property (GObject *object, GParamSpec *pspec) { GtkInvisible *invisible = GTK_INVISIBLE (object); - GtkInvisiblePriv *priv = invisible->priv; + GtkInvisiblePrivate *priv = invisible->priv; switch (prop_id) {