diff --git a/docs/reference/gtk/drawing-model.xml b/docs/reference/gtk/drawing-model.xml
index 7c0d20e..22307ce 100644
--- a/docs/reference/gtk/drawing-model.xml
+++ b/docs/reference/gtk/drawing-model.xml
@@ -124,11 +124,10 @@
 	However, in practice it is convenient to have widgets which do
 	not have a <classname>GdkWindow</classname> of their own, but
 	rather share the one from their parent widget.  Such widgets
-	have the <constant>GTK_NO_WINDOW</constant> <link
-	linkend="GtkWidgetFlags">widget flag</link> turned on; this
-	can be tested easily with the <link
-	linkend="GTK-WIDGET-NO-WINDOW-CAPS"><function>GTK_WIDGET_NO_WINDOW()</function></link>
-	macro.  As such, these are called <firstterm>no-window
+	have called <function>gtk_widget_set_has_window</function> to
+	disable it; this can be tested easily with the <link
+	linkend="gtk-widget-get-has-window"><function>gtk_widget_get_has_window()</function></link>
+	function.  As such, these are called <firstterm>no-window
 	widgets</firstterm>.
       </para>
 
diff --git a/docs/reference/gtk/glossary.xml b/docs/reference/gtk/glossary.xml
index 1dce9c3..375b34e 100644
--- a/docs/reference/gtk/glossary.xml
+++ b/docs/reference/gtk/glossary.xml
@@ -195,9 +195,8 @@
       <para>
 	A widget that does not have a GdkWindow of its own on which to
 	draw its contents, but rather shares its <glossterm
-	linkend="parent">parent's</glossterm>.  Such a widget has the
-	%GTK_NO_WINDOW <link linkend="GtkWidgetFlags">flag</link> set, and 
-        can be tested with the GTK_WIDGET_NO_WINDOW() macro.  See
+	linkend="parent">parent's</glossterm>.  This can be tested with
+	the gtk_widget_get_has_window() function.  See
 	<xref linkend="window-no-window-widgets"/> for a detailed
 	description of this flag.
       </para>
diff --git a/docs/reference/gtk/tmpl/gtkobject.sgml b/docs/reference/gtk/tmpl/gtkobject.sgml
index 4316b4f..b2f1e22 100644
--- a/docs/reference/gtk/tmpl/gtkobject.sgml
+++ b/docs/reference/gtk/tmpl/gtkobject.sgml
@@ -111,21 +111,6 @@ if all references are released.
 
 </para>
 
-<!-- ##### MACRO GTK_OBJECT_TYPE ##### -->
-<para>
-Gets the type of an object.
-</para>
-
-@object: a #GtkObject.
-
-
-<!-- ##### MACRO GTK_OBJECT_TYPE_NAME ##### -->
-<para>
-Gets the name of an objects type.
-</para>
-
-@object: a #GtkObject.
-
 
 <!-- ##### ENUM GtkObjectFlags ##### -->
 <para>
diff --git a/gtk/gtkassistant.c b/gtk/gtkassistant.c
index a2e2f7a..80f437c 100644
--- a/gtk/gtkassistant.c
+++ b/gtk/gtkassistant.c
@@ -1692,7 +1692,7 @@ gtk_assistant_insert_page (GtkAssistant *assistant,
   g_return_val_if_fail (GTK_IS_ASSISTANT (assistant), 0);
   g_return_val_if_fail (GTK_IS_WIDGET (page), 0);
   g_return_val_if_fail (page->parent == NULL, 0);
-  g_return_val_if_fail (!GTK_WIDGET_TOPLEVEL (page), 0);
+  g_return_val_if_fail (!gtk_widget_is_toplevel (page), 0);
 
   priv = assistant->priv;
 
diff --git a/gtk/gtkclist.c b/gtk/gtkclist.c
index 9117f8c..199474b 100644
--- a/gtk/gtkclist.c
+++ b/gtk/gtkclist.c
@@ -6145,7 +6145,7 @@ typedef struct
 
 /* The window to which widget->window is relative */
 #define ALLOCATION_WINDOW(widget)		\
-   (GTK_WIDGET_NO_WINDOW (widget) ?		\
+   (!gtk_widget_get_has_window (widget) ?		\
     (widget)->window :                          \
      gdk_window_get_parent ((widget)->window))
 
diff --git a/gtk/gtkcolorbutton.c b/gtk/gtkcolorbutton.c
index 081e687..083adc4 100644
--- a/gtk/gtkcolorbutton.c
+++ b/gtk/gtkcolorbutton.c
@@ -713,7 +713,7 @@ gtk_color_button_clicked (GtkButton *button)
       
       color_dialog = GTK_COLOR_SELECTION_DIALOG (color_button->priv->cs_dialog);
 
-      if (GTK_WIDGET_TOPLEVEL (parent) && GTK_IS_WINDOW (parent))
+      if (gtk_widget_is_toplevel (parent) && GTK_IS_WINDOW (parent))
         {
           if (GTK_WINDOW (parent) != gtk_window_get_transient_for (GTK_WINDOW (color_dialog)))
  	    gtk_window_set_transient_for (GTK_WINDOW (color_dialog), GTK_WINDOW (parent));
diff --git a/gtk/gtkcombobox.c b/gtk/gtkcombobox.c
index ebe90d9..6960908 100644
--- a/gtk/gtkcombobox.c
+++ b/gtk/gtkcombobox.c
@@ -1485,7 +1485,7 @@ gtk_combo_box_menu_position_below (GtkMenu  *menu,
 
   sx = sy = 0;
 
-  if (GTK_WIDGET_NO_WINDOW (child))
+  if (!gtk_widget_get_has_window (child))
     {
       sx += child->allocation.x;
       sy += child->allocation.y;
@@ -1648,7 +1648,7 @@ gtk_combo_box_list_position (GtkComboBox *combo_box,
 
   *x = *y = 0;
 
-  if (GTK_WIDGET_NO_WINDOW (sample))
+  if (!gtk_widget_get_has_window (sample))
     {
       *x += sample->allocation.x;
       *y += sample->allocation.y;
diff --git a/gtk/gtkcontainer.c b/gtk/gtkcontainer.c
index 8b721d0..0c5eda6 100644
--- a/gtk/gtkcontainer.c
+++ b/gtk/gtkcontainer.c
@@ -1261,7 +1261,7 @@ gtk_container_set_resize_mode (GtkContainer  *container,
   g_return_if_fail (GTK_IS_CONTAINER (container));
   g_return_if_fail (resize_mode <= GTK_RESIZE_IMMEDIATE);
   
-  if (GTK_WIDGET_TOPLEVEL (container) &&
+  if (gtk_widget_is_toplevel (GTK_WIDGET (container)) &&
       resize_mode == GTK_RESIZE_PARENT)
     {
       resize_mode = GTK_RESIZE_QUEUE;
@@ -1380,7 +1380,7 @@ _gtk_container_queue_resize (GtkContainer *container)
   if (resize_container)
     {
       if (GTK_WIDGET_VISIBLE (resize_container) &&
- 	  (GTK_WIDGET_TOPLEVEL (resize_container) || GTK_WIDGET_REALIZED (resize_container)))
+ 	  (gtk_widget_is_toplevel (GTK_WIDGET (resize_container)) || GTK_WIDGET_REALIZED (resize_container)))
 	{
 	  switch (resize_container->resize_mode)
 	    {
@@ -1690,11 +1690,14 @@ gchar*
 _gtk_container_child_composite_name (GtkContainer *container,
 				    GtkWidget    *child)
 {
+  gboolean composite_child;
+
   g_return_val_if_fail (GTK_IS_CONTAINER (container), NULL);
   g_return_val_if_fail (GTK_IS_WIDGET (child), NULL);
   g_return_val_if_fail (child->parent == GTK_WIDGET (container), NULL);
 
-  if (GTK_WIDGET_COMPOSITE_CHILD (child))
+  g_object_get (child, "composite-child", &composite_child, NULL);
+  if (composite_child)
     {
       static GQuark quark_composite_name = 0;
       gchar *name;
diff --git a/gtk/gtkdnd-quartz.c b/gtk/gtkdnd-quartz.c
index 275ebba..300f206 100644
--- a/gtk/gtkdnd-quartz.c
+++ b/gtk/gtkdnd-quartz.c
@@ -357,7 +357,7 @@ gtk_drag_highlight_expose (GtkWidget      *widget,
     {
       cairo_t *cr;
       
-      if (GTK_WIDGET_NO_WINDOW (widget))
+      if (!gtk_widget_get_has_window (widget))
 	{
 	  x = widget->allocation.x;
 	  y = widget->allocation.y;
@@ -434,7 +434,7 @@ get_toplevel_nswindow (GtkWidget *widget)
 {
   GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
   
-  if (GTK_WIDGET_TOPLEVEL (toplevel) && toplevel->window)
+  if (gtk_widget_is_toplevel (toplevel) && toplevel->window)
     return [gdk_quartz_window_get_nsview (toplevel->window) window];
   else
     return NULL;
@@ -695,7 +695,7 @@ gtk_drag_find_widget (GtkWidget       *widget,
       allocation_to_window_x = widget->allocation.x;
       allocation_to_window_y = widget->allocation.y;
 
-      if (!GTK_WIDGET_NO_WINDOW (widget))
+      if (gtk_widget_get_has_window (widget))
 	{
 	  /* The allocation is relative to the parent window for
 	   * window widgets, not to widget->window.
diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c
index c3a95d8..cf8417f 100644
--- a/gtk/gtkdnd.c
+++ b/gtk/gtkdnd.c
@@ -1106,7 +1106,7 @@ gtk_drag_highlight_expose (GtkWidget      *widget,
     {
       cairo_t *cr;
       
-      if (GTK_WIDGET_NO_WINDOW (widget))
+      if (!gtk_widget_get_has_window (widget))
 	{
 	  x = widget->allocation.x;
 	  y = widget->allocation.y;
@@ -1860,7 +1860,7 @@ gtk_drag_find_widget (GtkWidget       *widget,
       allocation_to_window_x = widget->allocation.x;
       allocation_to_window_y = widget->allocation.y;
 
-      if (!GTK_WIDGET_NO_WINDOW (widget))
+      if (gtk_widget_get_has_window (widget))
 	{
 	  /* The allocation is relative to the parent window for
 	   * window widgets, not to widget->window.
@@ -2065,7 +2065,7 @@ gtk_drag_dest_realized (GtkWidget *widget)
 {
   GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
 
-  if (GTK_WIDGET_TOPLEVEL (toplevel))
+  if (gtk_widget_is_toplevel (toplevel))
     gdk_window_register_dnd (toplevel->window);
 }
 
@@ -2075,7 +2075,7 @@ gtk_drag_dest_hierarchy_changed (GtkWidget *widget,
 {
   GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
 
-  if (GTK_WIDGET_TOPLEVEL (toplevel) && GTK_WIDGET_REALIZED (toplevel))
+  if (gtk_widget_is_toplevel (toplevel) && GTK_WIDGET_REALIZED (toplevel))
     gdk_window_register_dnd (toplevel->window);
 }
 
diff --git a/gtk/gtkdrawingarea.c b/gtk/gtkdrawingarea.c
index 6faf854..696cb6b 100644
--- a/gtk/gtkdrawingarea.c
+++ b/gtk/gtkdrawingarea.c
@@ -79,7 +79,7 @@ gtk_drawing_area_realize (GtkWidget *widget)
   GdkWindowAttr attributes;
   gint attributes_mask;
 
-  if (GTK_WIDGET_NO_WINDOW (widget))
+  if (!gtk_widget_get_has_window (widget))
     {
       GTK_WIDGET_CLASS (gtk_drawing_area_parent_class)->realize (widget);
     }
@@ -121,7 +121,7 @@ gtk_drawing_area_size_allocate (GtkWidget     *widget,
 
   if (GTK_WIDGET_REALIZED (widget))
     {
-      if (!GTK_WIDGET_NO_WINDOW (widget))
+      if (gtk_widget_get_has_window (widget))
         gdk_window_move_resize (widget->window,
                                 allocation->x, allocation->y,
                                 allocation->width, allocation->height);
diff --git a/gtk/gtkfilechooserbutton.c b/gtk/gtkfilechooserbutton.c
index 70b0b4f..25cbb96 100644
--- a/gtk/gtkfilechooserbutton.c
+++ b/gtk/gtkfilechooserbutton.c
@@ -2448,7 +2448,7 @@ open_dialog (GtkFileChooserButton *button)
 
       toplevel = gtk_widget_get_toplevel (GTK_WIDGET (button));
 
-      if (GTK_WIDGET_TOPLEVEL (toplevel) && GTK_IS_WINDOW (toplevel))
+      if (gtk_widget_is_toplevel (toplevel) && GTK_IS_WINDOW (toplevel))
         {
           if (GTK_WINDOW (toplevel) != gtk_window_get_transient_for (GTK_WINDOW (priv->dialog)))
  	    gtk_window_set_transient_for (GTK_WINDOW (priv->dialog),
diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c
index 61bf7c4..3f634d3 100644
--- a/gtk/gtkfilechooserdefault.c
+++ b/gtk/gtkfilechooserdefault.c
@@ -927,7 +927,7 @@ get_toplevel (GtkWidget *widget)
   GtkWidget *toplevel;
 
   toplevel = gtk_widget_get_toplevel (widget);
-  if (!GTK_WIDGET_TOPLEVEL (toplevel))
+  if (!gtk_widget_is_toplevel (toplevel))
     return NULL;
   else
     return GTK_WINDOW (toplevel);
diff --git a/gtk/gtkfontbutton.c b/gtk/gtkfontbutton.c
index 3628602..2f7e108 100644
--- a/gtk/gtkfontbutton.c
+++ b/gtk/gtkfontbutton.c
@@ -705,7 +705,7 @@ gtk_font_button_clicked (GtkButton *button)
       
       font_dialog = GTK_FONT_SELECTION_DIALOG (font_button->priv->font_dialog);
       
-      if (GTK_WIDGET_TOPLEVEL (parent) && GTK_IS_WINDOW (parent))
+      if (gtk_widget_is_toplevel (parent) && GTK_IS_WINDOW (parent))
         {
           if (GTK_WINDOW (parent) != gtk_window_get_transient_for (GTK_WINDOW (font_dialog)))
  	    gtk_window_set_transient_for (GTK_WINDOW (font_dialog), GTK_WINDOW (parent));
diff --git a/gtk/gtkfontsel.c b/gtk/gtkfontsel.c
index c3593c8..0dca0a7 100644
--- a/gtk/gtkfontsel.c
+++ b/gtk/gtkfontsel.c
@@ -273,7 +273,7 @@ list_row_activated (GtkWidget *widget)
   GtkWindow *window;
   
   window = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (widget)));
-  if (!GTK_WIDGET_TOPLEVEL (window))
+  if (!gtk_widget_is_toplevel (GTK_WIDGET (window)))
     window = NULL;
   
   if (window
diff --git a/gtk/gtkhandlebox.c b/gtk/gtkhandlebox.c
index 46e9592..e56d78b 100644
--- a/gtk/gtkhandlebox.c
+++ b/gtk/gtkhandlebox.c
@@ -478,7 +478,7 @@ gtk_handle_box_style_set (GtkWidget *widget,
   GtkHandleBox *hb = GTK_HANDLE_BOX (widget);
 
   if (GTK_WIDGET_REALIZED (widget) &&
-      !GTK_WIDGET_NO_WINDOW (widget))
+      gtk_widget_get_has_window (widget))
     {
       gtk_style_set_background (widget->style, widget->window,
 				widget->state);
diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c
index d1055a9..9c498c4 100644
--- a/gtk/gtkiconview.c
+++ b/gtk/gtkiconview.c
@@ -8487,7 +8487,7 @@ gtk_icon_view_item_accessible_grab_focus (AtkComponent *component)
   gtk_widget_grab_focus (item->widget);
   gtk_icon_view_set_cursor_item (GTK_ICON_VIEW (item->widget), item->item, -1);
   toplevel = gtk_widget_get_toplevel (GTK_WIDGET (item->widget));
-  if (GTK_WIDGET_TOPLEVEL (toplevel))
+  if (gtk_widget_is_toplevel (toplevel))
     gtk_window_present (GTK_WINDOW (toplevel));
 
   return TRUE;
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index c3df84a..c9bf5e0 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -1489,7 +1489,7 @@ gtk_label_setup_mnemonic (GtkLabel *label,
     goto done;
 
   toplevel = gtk_widget_get_toplevel (widget);
-  if (GTK_WIDGET_TOPLEVEL (toplevel))
+  if (gtk_widget_is_toplevel (toplevel))
     {
       GtkWidget *menu_shell;
       
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
index 0bdf1de..e72e53b 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -1969,7 +1969,7 @@ gtk_menu_get_toplevel (GtkWidget *menu)
   else if (GTK_IS_WIDGET (attach))
     {
       toplevel = gtk_widget_get_toplevel (attach);
-      if (GTK_WIDGET_TOPLEVEL (toplevel)) 
+      if (gtk_widget_is_toplevel (toplevel)) 
 	return toplevel;
     }
 
diff --git a/gtk/gtkmenubar.c b/gtk/gtkmenubar.c
index a54e456..1cecf21 100644
--- a/gtk/gtkmenubar.c
+++ b/gtk/gtkmenubar.c
@@ -689,7 +689,7 @@ gtk_menu_bar_hierarchy_changed (GtkWidget *widget,
   if (old_toplevel)
     remove_from_window (GTK_WINDOW (old_toplevel), menubar);
   
-  if (GTK_WIDGET_TOPLEVEL (toplevel))
+  if (gtk_widget_is_toplevel (toplevel))
     add_to_window (GTK_WINDOW (toplevel), menubar);
 }
 
@@ -707,7 +707,7 @@ _gtk_menu_bar_cycle_focus (GtkMenuBar       *menubar,
   GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (menubar));
   GtkMenuItem *to_activate = NULL;
 
-  if (GTK_WIDGET_TOPLEVEL (toplevel))
+  if (gtk_widget_is_toplevel (toplevel))
     {
       GList *tmp_menubars = get_viewable_menu_bars (GTK_WINDOW (toplevel));
       GList *menubars;
diff --git a/gtk/gtkmisc.c b/gtk/gtkmisc.c
index bd82805..3532ab9 100644
--- a/gtk/gtkmisc.c
+++ b/gtk/gtkmisc.c
@@ -312,7 +312,7 @@ gtk_misc_realize (GtkWidget *widget)
 
   GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
 
-  if (GTK_WIDGET_NO_WINDOW (widget))
+  if (!gtk_widget_get_has_window (widget))
     {
       widget->window = gtk_widget_get_parent_window (widget);
       g_object_ref (widget->window);
diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c
index b51388c..a027c34 100644
--- a/gtk/gtknotebook.c
+++ b/gtk/gtknotebook.c
@@ -1337,7 +1337,7 @@ gtk_notebook_move_focus_out (GtkNotebook      *notebook,
    * do this by setting a flag, then propagating the focus motion to the notebook.
    */
   toplevel = gtk_widget_get_toplevel (GTK_WIDGET (notebook));
-  if (!GTK_WIDGET_TOPLEVEL (toplevel))
+  if (!gtk_widget_is_toplevel (toplevel))
     return;
 
   g_object_ref (notebook);
@@ -4187,7 +4187,7 @@ gtk_notebook_set_focus_child (GtkContainer *container,
    */
 
   toplevel = gtk_widget_get_toplevel (GTK_WIDGET (container));
-  if (toplevel && GTK_WIDGET_TOPLEVEL (toplevel))
+  if (toplevel && gtk_widget_is_toplevel (toplevel))
     {
       page_child = GTK_WINDOW (toplevel)->focus_widget; 
       while (page_child)
diff --git a/gtk/gtkobject.h b/gtk/gtkobject.h
index de6616b..a32ecd0 100644
--- a/gtk/gtkobject.h
+++ b/gtk/gtkobject.h
@@ -53,8 +53,26 @@ G_BEGIN_DECLS
 
 /* Macros for extracting various fields from GtkObject and GtkObjectClass.
  */
-#define GTK_OBJECT_TYPE(object)		  (G_TYPE_FROM_INSTANCE (object))
-#define GTK_OBJECT_TYPE_NAME(object)	  (g_type_name (GTK_OBJECT_TYPE (object)))
+#ifndef GTK_DISABLE_DEPRECATED
+/**
+ * GTK_OBJECT_TYPE:
+ * @object: a #GtkObject.
+ *
+ * Gets the type of an object.
+ *
+ * Deprecated: 2.20: Use G_OBJECT_TYPE() instead.
+ */
+#define GTK_OBJECT_TYPE                   G_OBJECT_TYPE
+/**
+ * GTK_OBJECT_TYPE_NAME:
+ * @object: a #GtkObject.
+ *
+ * Gets the name of an object's type.
+ *
+ * Deprecated: 2.20: Use G_OBJECT_TYPE_NAME() instead.
+ */
+#define GTK_OBJECT_TYPE_NAME              G_OBJECT_TYPE_NAME
+#endif
 
 /* GtkObject only uses the first 4 bits of the flags field.
  * Derived objects may use the remaining bits. Though this
diff --git a/gtk/gtkoptionmenu.c b/gtk/gtkoptionmenu.c
index df9ca33..74d0554 100644
--- a/gtk/gtkoptionmenu.c
+++ b/gtk/gtkoptionmenu.c
@@ -608,7 +608,7 @@ gtk_option_menu_expose (GtkWidget      *widget,
 
       child_event = *event;
 
-      if (GTK_WIDGET_NO_WINDOW (child) &&
+      if (!gtk_widget_get_has_window (child) &&
 	  gtk_widget_intersect (child, &event->area, &child_event.area))
 	gtk_widget_event (child, (GdkEvent*) &child_event);
 
diff --git a/gtk/gtkpaned.c b/gtk/gtkpaned.c
index 64b0429..d0f4443 100644
--- a/gtk/gtkpaned.c
+++ b/gtk/gtkpaned.c
@@ -1707,7 +1707,7 @@ paned_get_focus_widget (GtkPaned *paned)
   GtkWidget *toplevel;
 
   toplevel = gtk_widget_get_toplevel (GTK_WIDGET (paned));
-  if (GTK_WIDGET_TOPLEVEL (toplevel))
+  if (gtk_widget_is_toplevel (toplevel))
     return GTK_WINDOW (toplevel)->focus_widget;
 
   return NULL;
diff --git a/gtk/gtkplug.c b/gtk/gtkplug.c
index 4c31ea7..40623f0 100644
--- a/gtk/gtkplug.c
+++ b/gtk/gtkplug.c
@@ -604,7 +604,7 @@ gtk_plug_realize (GtkWidget *widget)
   attributes_mask |= (window->title ? GDK_WA_TITLE : 0);
   attributes_mask |= (window->wmclass_name ? GDK_WA_WMCLASS : 0);
 
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     {
       attributes.window_type = GDK_WINDOW_TOPLEVEL;
 
@@ -651,7 +651,7 @@ gtk_plug_realize (GtkWidget *widget)
 static void
 gtk_plug_show (GtkWidget *widget)
 {
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     GTK_WIDGET_CLASS (gtk_plug_parent_class)->show (widget);
   else
     GTK_WIDGET_CLASS (bin_class)->show (widget);
@@ -660,7 +660,7 @@ gtk_plug_show (GtkWidget *widget)
 static void
 gtk_plug_hide (GtkWidget *widget)
 {
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     GTK_WIDGET_CLASS (gtk_plug_parent_class)->hide (widget);
   else
     GTK_WIDGET_CLASS (bin_class)->hide (widget);
@@ -674,7 +674,7 @@ void gdk_synthesize_window_state (GdkWindow     *window,
 static void
 gtk_plug_map (GtkWidget *widget)
 {
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     {
       GtkBin *bin = GTK_BIN (widget);
       GtkPlug *plug = GTK_PLUG (widget);
@@ -699,7 +699,7 @@ gtk_plug_map (GtkWidget *widget)
 static void
 gtk_plug_unmap (GtkWidget *widget)
 {
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     {
       GtkPlug *plug = GTK_PLUG (widget);
 
@@ -721,7 +721,7 @@ static void
 gtk_plug_size_allocate (GtkWidget     *widget,
 			GtkAllocation *allocation)
 {
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     GTK_WIDGET_CLASS (gtk_plug_parent_class)->size_allocate (widget, allocation);
   else
     {
@@ -754,7 +754,7 @@ static gboolean
 gtk_plug_key_press_event (GtkWidget   *widget,
 			  GdkEventKey *event)
 {
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     return GTK_WIDGET_CLASS (gtk_plug_parent_class)->key_press_event (widget, event);
   else
     return FALSE;
@@ -959,7 +959,7 @@ gtk_plug_focus (GtkWidget        *widget,
 static void
 gtk_plug_check_resize (GtkContainer *container)
 {
-  if (GTK_WIDGET_TOPLEVEL (container))
+  if (gtk_widget_is_toplevel (GTK_WIDGET (container)))
     GTK_CONTAINER_CLASS (gtk_plug_parent_class)->check_resize (container);
   else
     GTK_CONTAINER_CLASS (bin_class)->check_resize (container);
diff --git a/gtk/gtkprintunixdialog.c b/gtk/gtkprintunixdialog.c
index 5e6f771..9229976 100644
--- a/gtk/gtkprintunixdialog.c
+++ b/gtk/gtkprintunixdialog.c
@@ -373,7 +373,7 @@ get_toplevel (GtkWidget *widget)
   GtkWidget *toplevel = NULL;
 
   toplevel = gtk_widget_get_toplevel (widget);
-  if (!GTK_WIDGET_TOPLEVEL (toplevel))
+  if (!gtk_widget_is_toplevel (toplevel))
     return NULL;
   else
     return GTK_WINDOW (toplevel);
diff --git a/gtk/gtkrecentchooserdefault.c b/gtk/gtkrecentchooserdefault.c
index f46bd9e..942da3e 100644
--- a/gtk/gtkrecentchooserdefault.c
+++ b/gtk/gtkrecentchooserdefault.c
@@ -724,7 +724,7 @@ get_toplevel (GtkWidget *widget)
   GtkWidget *toplevel;
 
   toplevel = gtk_widget_get_toplevel (widget);
-  if (!GTK_WIDGET_TOPLEVEL (toplevel))
+  if (!gtk_widget_is_toplevel (toplevel))
     return NULL;
   else
     return GTK_WINDOW (toplevel);
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index e1ef633..8ffe91d 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -1210,7 +1210,7 @@ gtk_scrolled_window_move_focus_out (GtkScrolledWindow *scrolled_window,
    * a flag, then propagating the focus motion to the notebook.
    */
   toplevel = gtk_widget_get_toplevel (GTK_WIDGET (scrolled_window));
-  if (!GTK_WIDGET_TOPLEVEL (toplevel))
+  if (!gtk_widget_is_toplevel (toplevel))
     return;
 
   g_object_ref (scrolled_window);
diff --git a/gtk/gtksizegroup.c b/gtk/gtksizegroup.c
index 6cd02c0..c6ba900 100644
--- a/gtk/gtksizegroup.c
+++ b/gtk/gtksizegroup.c
@@ -157,7 +157,7 @@ real_queue_resize (GtkWidget *widget)
   
   if (widget->parent)
     _gtk_container_queue_resize (GTK_CONTAINER (widget->parent));
-  else if (GTK_WIDGET_TOPLEVEL (widget) && GTK_IS_CONTAINER (widget))
+  else if (gtk_widget_is_toplevel (widget) && GTK_IS_CONTAINER (widget))
     _gtk_container_queue_resize (GTK_CONTAINER (widget));
 }
 
diff --git a/gtk/gtksocket.c b/gtk/gtksocket.c
index f059f8d..9d468b8 100644
--- a/gtk/gtksocket.c
+++ b/gtk/gtksocket.c
@@ -602,7 +602,7 @@ socket_update_focus_in (GtkSocket *socket)
     {
       GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (socket));
 
-      if (GTK_WIDGET_TOPLEVEL (toplevel) &&
+      if (gtk_widget_is_toplevel (toplevel) &&
 	  GTK_WINDOW (toplevel)->has_toplevel_focus &&
 	  gtk_widget_is_focus (GTK_WIDGET (socket)))
 	focus_in = TRUE;
@@ -625,7 +625,7 @@ socket_update_active (GtkSocket *socket)
     {
       GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (socket));
 
-      if (GTK_WIDGET_TOPLEVEL (toplevel) &&
+      if (gtk_widget_is_toplevel (toplevel) &&
 	  GTK_WINDOW (toplevel)->is_active)
 	active = TRUE;
     }
@@ -950,7 +950,7 @@ _gtk_socket_advance_toplevel_focus (GtkSocket        *socket,
   if (!toplevel)
     return;
 
-  if (!GTK_WIDGET_TOPLEVEL (toplevel) || GTK_IS_PLUG (toplevel))
+  if (!gtk_widget_is_toplevel (toplevel) || GTK_IS_PLUG (toplevel))
     {
       gtk_widget_child_focus (toplevel,direction);
       return;
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index bbbdf6b..b06408d 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -7055,7 +7055,7 @@ typedef struct
 
 /* The window to which widget->window is relative */
 #define ALLOCATION_WINDOW(widget)		\
-   (GTK_WIDGET_NO_WINDOW (widget) ?		\
+   (!gtk_widget_get_has_window (widget) ?		\
     (widget)->window :                          \
      gdk_window_get_parent ((widget)->window))
 
diff --git a/gtk/gtktooltip.c b/gtk/gtktooltip.c
index 8ccd363..63e492d 100644
--- a/gtk/gtktooltip.c
+++ b/gtk/gtktooltip.c
@@ -619,7 +619,7 @@ window_to_alloc (GtkWidget *dest_widget,
 		 gint      *dest_y)
 {
   /* Translate from window relative to allocation relative */
-  if (!GTK_WIDGET_NO_WINDOW (dest_widget) && dest_widget->parent)
+  if (gtk_widget_get_has_window (dest_widget) && dest_widget->parent)
     {
       gint wx, wy;
       gdk_window_get_position (dest_widget->window, &wx, &wy);
@@ -874,7 +874,7 @@ gtk_tooltip_position (GtkTooltip *tooltip,
   if (tooltip->keyboard_mode_enabled)
     {
       gdk_window_get_origin (new_tooltip_widget->window, &x, &y);
-      if (GTK_WIDGET_NO_WINDOW (new_tooltip_widget))
+      if (!gtk_widget_get_has_window (new_tooltip_widget))
         {
 	  x += new_tooltip_widget->allocation.x;
 	  y += new_tooltip_widget->allocation.y;
diff --git a/gtk/gtktreeitem.c b/gtk/gtktreeitem.c
index 90f72dc..7b2ae9c 100644
--- a/gtk/gtktreeitem.c
+++ b/gtk/gtktreeitem.c
@@ -682,7 +682,7 @@ gtk_tree_item_expose_child (GtkWidget *child,
   } *data = client_data;
 
   if (GTK_WIDGET_DRAWABLE (child) &&
-      GTK_WIDGET_NO_WINDOW (child) &&
+      !gtk_widget_get_has_window (child) &&
       (child->window == data->event->window))
     {
       GdkEvent *child_event = gdk_event_new (GDK_EXPOSE);
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 47b8e59..2d0bfda 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -10449,7 +10449,7 @@ typedef struct
 
 /* The window to which widget->window is relative */
 #define ALLOCATION_WINDOW(widget)		\
-   (GTK_WIDGET_NO_WINDOW (widget) ?		\
+   (!gtk_widget_get_has_window (widget) ?		\
     (widget)->window :                          \
      gdk_window_get_parent ((widget)->window))
 
diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c
index edec5de..f67158b 100644
--- a/gtk/gtktreeviewcolumn.c
+++ b/gtk/gtktreeviewcolumn.c
@@ -1046,7 +1046,7 @@ gtk_tree_view_column_update_button (GtkTreeViewColumn *tree_column)
       if (GTK_WIDGET_HAS_FOCUS (tree_column->button))
 	{
 	  GtkWidget *toplevel = gtk_widget_get_toplevel (tree_column->tree_view);
-	  if (GTK_WIDGET_TOPLEVEL (toplevel))
+	  if (gtk_widget_is_toplevel (toplevel))
 	    {
 	      gtk_window_set_focus (GTK_WINDOW (toplevel), NULL);
 	    }
diff --git a/gtk/gtkviewport.c b/gtk/gtkviewport.c
index 5fd9014..b90b834 100644
--- a/gtk/gtkviewport.c
+++ b/gtk/gtkviewport.c
@@ -840,7 +840,7 @@ gtk_viewport_style_set (GtkWidget *widget,
 			GtkStyle  *previous_style)
 {
    if (GTK_WIDGET_REALIZED (widget) &&
-       !GTK_WIDGET_NO_WINDOW (widget))
+       gtk_widget_get_has_window (widget))
      {
 	GtkViewport *viewport = GTK_VIEWPORT (widget);
 
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 74392eb..9884e62 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -2764,7 +2764,7 @@ gtk_widget_get_property (GObject         *object,
       g_value_set_boolean (value, (GTK_WIDGET_RECEIVES_DEFAULT (widget) != FALSE));
       break;
     case PROP_COMPOSITE_CHILD:
-      g_value_set_boolean (value, (GTK_WIDGET_COMPOSITE_CHILD (widget) != FALSE));
+      g_value_set_boolean (value,(GTK_WIDGET_FLAGS (widget) & GTK_COMPOSITE_CHILD) != 0 );
       break;
     case PROP_STYLE:
       g_value_set_object (value, gtk_widget_get_style (widget));
@@ -3046,7 +3046,7 @@ gtk_widget_unparent (GtkWidget *widget)
   nqueue = g_object_notify_queue_freeze (G_OBJECT (widget), _gtk_widget_child_property_notify_context);
 
   toplevel = gtk_widget_get_toplevel (widget);
-  if (GTK_WIDGET_TOPLEVEL (toplevel))
+  if (gtk_widget_is_toplevel (toplevel))
     _gtk_window_unset_focus_and_default (GTK_WINDOW (toplevel), widget);
 
   if (GTK_CONTAINER (widget->parent)->focus_child == widget)
@@ -3178,7 +3178,7 @@ gtk_widget_show (GtkWidget *widget)
   if (!GTK_WIDGET_VISIBLE (widget))
     {
       g_object_ref (widget);
-      if (!GTK_WIDGET_TOPLEVEL (widget))
+      if (!gtk_widget_is_toplevel (widget))
 	gtk_widget_queue_resize (widget);
       g_signal_emit (widget, widget_signals[SHOW], 0);
       g_object_notify (G_OBJECT (widget), "visible");
@@ -3229,7 +3229,7 @@ gtk_widget_show_now (GtkWidget *widget)
 
   /* make sure we will get event */
   if (!GTK_WIDGET_MAPPED (widget) &&
-      GTK_WIDGET_TOPLEVEL (widget))
+      gtk_widget_is_toplevel (widget))
     {
       gtk_widget_show (widget);
 
@@ -3261,11 +3261,11 @@ gtk_widget_hide (GtkWidget *widget)
       GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
       
       g_object_ref (widget);
-      if (toplevel != widget && GTK_WIDGET_TOPLEVEL (toplevel))
+      if (toplevel != widget && gtk_widget_is_toplevel (toplevel))
 	_gtk_window_unset_focus_and_default (GTK_WINDOW (toplevel), widget);
 
       g_signal_emit (widget, widget_signals[HIDE], 0);
-      if (!GTK_WIDGET_TOPLEVEL (widget))
+      if (!gtk_widget_is_toplevel (widget))
 	gtk_widget_queue_resize (widget);
       g_object_notify (G_OBJECT (widget), "visible");
       g_object_unref (widget);
@@ -3482,11 +3482,11 @@ gtk_widget_realize (GtkWidget *widget)
     {
       /*
 	if (GTK_IS_CONTAINER (widget) && !GTK_WIDGET_NO_WINDOW (widget))
-	  g_message ("gtk_widget_realize(%s)", g_type_name (GTK_WIDGET_TYPE (widget)));
+	  g_message ("gtk_widget_realize(%s)", G_OBJECT_TYPE_NAME (widget));
       */
 
       if (widget->parent == NULL &&
-          !GTK_WIDGET_TOPLEVEL (widget))
+          !gtk_widget_is_toplevel (widget))
         g_warning ("Calling gtk_widget_realize() on a widget that isn't "
                    "inside a toplevel window is not going to work very well. "
                    "Widgets must be inside a toplevel container before realizing them.");
@@ -5289,7 +5289,7 @@ gtk_widget_real_grab_focus (GtkWidget *focus_widget)
        * be set by the next loop.
        */
       toplevel = gtk_widget_get_toplevel (focus_widget);
-      if (GTK_WIDGET_TOPLEVEL (toplevel) && GTK_IS_WINDOW (toplevel))
+      if (gtk_widget_is_toplevel (toplevel) && GTK_IS_WINDOW (toplevel))
 	{
 	  widget = GTK_WINDOW (toplevel)->focus_widget;
 	  
@@ -5617,7 +5617,7 @@ gtk_widget_grab_default (GtkWidget *widget)
   
   window = gtk_widget_get_toplevel (widget);
   
-  if (window && GTK_WIDGET_TOPLEVEL (window))
+  if (window && gtk_widget_is_toplevel (window))
     gtk_window_set_default (GTK_WINDOW (window), widget);
   else
     g_warning (G_STRLOC ": widget not within a GtkWindow");
@@ -5746,7 +5746,7 @@ gtk_widget_get_name (GtkWidget *widget)
   
   if (widget->name)
     return widget->name;
-  return g_type_name (GTK_WIDGET_TYPE (widget));
+  return G_OBJECT_TYPE_NAME (widget);
 }
 
 /**
@@ -6135,7 +6135,7 @@ gtk_widget_set_sensitive (GtkWidget *widget,
   if (sensitive)
     {
       GTK_WIDGET_SET_FLAGS (widget, GTK_SENSITIVE);
-      data.state = GTK_WIDGET_SAVED_STATE (widget);
+      data.state = widget->saved_state;
     }
   else
     {
@@ -6224,7 +6224,7 @@ gtk_widget_set_parent (GtkWidget *widget,
       g_warning ("Can't set a parent on widget which has a parent\n");
       return;
     }
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     {
       g_warning ("Can't set a parent on a toplevel widget\n");
       return;
@@ -6804,7 +6804,7 @@ gtk_widget_propagate_hierarchy_changed_recurse (GtkWidget *widget,
 						gpointer   client_data)
 {
   HierarchyChangedInfo *info = client_data;
-  gboolean new_anchored = GTK_WIDGET_TOPLEVEL (widget) ||
+  gboolean new_anchored = gtk_widget_is_toplevel (widget) ||
                  (widget->parent && GTK_WIDGET_ANCHORED (widget->parent));
 
   if (GTK_WIDGET_ANCHORED (widget) != new_anchored)
@@ -6846,7 +6846,7 @@ _gtk_widget_propagate_hierarchy_changed (GtkWidget    *widget,
   info.previous_toplevel = previous_toplevel;
   info.previous_screen = previous_toplevel ? gtk_widget_get_screen (previous_toplevel) : NULL;
 
-  if (GTK_WIDGET_TOPLEVEL (widget) ||
+  if (gtk_widget_is_toplevel (widget) ||
       (widget->parent && GTK_WIDGET_ANCHORED (widget->parent)))
     info.new_screen = gtk_widget_get_screen (widget);
   else
@@ -7287,7 +7287,7 @@ gtk_widget_set_child_visible (GtkWidget *widget,
 			      gboolean   is_visible)
 {
   g_return_if_fail (GTK_IS_WIDGET (widget));
-  g_return_if_fail (!GTK_WIDGET_TOPLEVEL (widget));
+  g_return_if_fail (!gtk_widget_is_toplevel (widget));
 
   g_object_ref (widget);
 
@@ -7300,7 +7300,7 @@ gtk_widget_set_child_visible (GtkWidget *widget,
       GTK_PRIVATE_UNSET_FLAG (widget, GTK_CHILD_VISIBLE);
 
       toplevel = gtk_widget_get_toplevel (widget);
-      if (toplevel != widget && GTK_WIDGET_TOPLEVEL (toplevel))
+      if (toplevel != widget && gtk_widget_is_toplevel (toplevel))
 	_gtk_window_unset_focus_and_default (GTK_WINDOW (toplevel), widget);
     }
 
@@ -7345,7 +7345,7 @@ gtk_widget_get_screen_unchecked (GtkWidget *widget)
   
   toplevel = gtk_widget_get_toplevel (widget);
 
-  if (GTK_WIDGET_TOPLEVEL (toplevel))
+  if (gtk_widget_is_toplevel (toplevel))
     {
       if (GTK_IS_WINDOW (toplevel))
 	return GTK_WINDOW (toplevel)->screen;
@@ -7978,7 +7978,7 @@ gtk_widget_set_extension_events (GtkWidget *widget,
  * is set on the result.
  * |[
  *  GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
- *  if (GTK_WIDGET_TOPLEVEL (toplevel))
+ *  if (gtk_widget_is_toplevel (toplevel))
  *    {
  *      /&ast; Perform action on toplevel. &ast;/
  *    }
@@ -8021,10 +8021,10 @@ gtk_widget_get_ancestor (GtkWidget *widget,
 {
   g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
   
-  while (widget && !g_type_is_a (GTK_WIDGET_TYPE (widget), widget_type))
+  while (widget && !g_type_is_a (G_OBJECT_TYPE (widget), widget_type))
     widget = widget->parent;
   
-  if (!(widget && g_type_is_a (GTK_WIDGET_TYPE (widget), widget_type)))
+  if (!(widget && g_type_is_a (G_OBJECT_TYPE (widget), widget_type)))
     return NULL;
   
   return widget;
@@ -8247,7 +8247,7 @@ gtk_widget_set_composite_name (GtkWidget   *widget,
 			       const gchar *name)
 {
   g_return_if_fail (GTK_IS_WIDGET (widget));
-  g_return_if_fail (GTK_WIDGET_COMPOSITE_CHILD (widget));
+  g_return_if_fail ((GTK_WIDGET_FLAGS (widget) & GTK_COMPOSITE_CHILD) != 0);
   g_return_if_fail (name != NULL);
 
   if (!quark_composite_name)
@@ -8274,7 +8274,7 @@ gtk_widget_get_composite_name (GtkWidget *widget)
 {
   g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
 
-  if (GTK_WIDGET_COMPOSITE_CHILD (widget) && widget->parent)
+  if (((GTK_WIDGET_FLAGS (widget) & GTK_COMPOSITE_CHILD) != 0) && widget->parent)
     return _gtk_container_child_composite_name (GTK_CONTAINER (widget->parent),
 					       widget);
   else
@@ -9021,7 +9021,7 @@ gtk_widget_propagate_state (GtkWidget           *widget,
 			    GtkStateData        *data)
 {
   guint8 old_state = GTK_WIDGET_STATE (widget);
-  guint8 old_saved_state = GTK_WIDGET_SAVED_STATE (widget);
+  guint8 old_saved_state = widget->saved_state;
 
   /* don't call this function with state==GTK_STATE_INSENSITIVE,
    * parent_sensitive==TRUE on a sensitive widget
@@ -9036,7 +9036,7 @@ gtk_widget_propagate_state (GtkWidget           *widget,
   if (GTK_WIDGET_IS_SENSITIVE (widget))
     {
       if (data->state_restoration)
-        GTK_WIDGET_STATE (widget) = GTK_WIDGET_SAVED_STATE (widget);
+        GTK_WIDGET_STATE (widget) = widget->saved_state;
       else
         GTK_WIDGET_STATE (widget) = data->state;
     }
@@ -9045,10 +9045,10 @@ gtk_widget_propagate_state (GtkWidget           *widget,
       if (!data->state_restoration)
 	{
 	  if (data->state != GTK_STATE_INSENSITIVE)
-	    GTK_WIDGET_SAVED_STATE (widget) = data->state;
+	    widget->saved_state = data->state;
 	}
       else if (GTK_WIDGET_STATE (widget) != GTK_STATE_INSENSITIVE)
-	GTK_WIDGET_SAVED_STATE (widget) = GTK_WIDGET_STATE (widget);
+	widget->saved_state = GTK_WIDGET_STATE (widget);
       GTK_WIDGET_STATE (widget) = GTK_STATE_INSENSITIVE;
     }
 
@@ -9057,12 +9057,12 @@ gtk_widget_propagate_state (GtkWidget           *widget,
       GtkWidget *window;
 
       window = gtk_widget_get_toplevel (widget);
-      if (window && GTK_WIDGET_TOPLEVEL (window))
+      if (window && gtk_widget_is_toplevel (window))
 	gtk_window_set_focus (GTK_WINDOW (window), NULL);
     }
 
   if (old_state != GTK_WIDGET_STATE (widget) ||
-      old_saved_state != GTK_WIDGET_SAVED_STATE (widget))
+      old_saved_state != widget->saved_state)
     {
       g_object_ref (widget);
 
@@ -9898,7 +9898,7 @@ gtk_widget_class_path (GtkWidget *widget,
       gchar *d;
       guint l;
       
-      string = g_type_name (GTK_WIDGET_TYPE (widget));
+      string = g_type_name (G_OBJECT_TYPE (widget));
       l = strlen (string);
       while (tmp_path_len <= len + l + 1)
 	{
diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h
index 21c58d1..e5e8031 100644
--- a/gtk/gtkwidget.h
+++ b/gtk/gtkwidget.h
@@ -140,22 +140,30 @@ typedef enum
 
 /* Macros for extracting various fields from GtkWidget and GtkWidgetClass.
  */
+#ifndef GTK_DISABLE_DEPRECATED
 /**
  * GTK_WIDGET_TYPE:
  * @wid: a #GtkWidget.
  *
  * Gets the type of a widget.
+ *
+ * Deprecated: 2.20: Use G_OBJECT_TYPE() instead.
  */
 #define GTK_WIDGET_TYPE(wid)		  (GTK_OBJECT_TYPE (wid))
+#endif
 
 /**
  * GTK_WIDGET_STATE:
  * @wid: a #GtkWidget.
  *
  * Returns the current state of the widget, as a #GtkStateType.
+ *
+ * Deprecated: 2.20: Use gtk_widget_get_state() instead.
  */
 #define GTK_WIDGET_STATE(wid)		  (GTK_WIDGET (wid)->state)
+/* FIXME: Deprecating GTK_WIDGET_STATE requires fixing GTK internals. */
 
+#ifndef GTK_DISABLE_DEPRECATED
 /**
  * GTK_WIDGET_SAVED_STATE:
  * @wid: a #GtkWidget.
@@ -165,8 +173,11 @@ typedef enum
  * The saved state will be restored when a widget gets sensitive
  * again, after it has been made insensitive with gtk_widget_set_state()
  * or gtk_widget_set_sensitive().
+ *
+ * Deprecated: 2.20: Do not used it.
  */
 #define GTK_WIDGET_SAVED_STATE(wid)	  (GTK_WIDGET (wid)->saved_state)
+#endif
 
 
 /* Macros for extracting the widget flags from GtkWidget.
@@ -176,24 +187,34 @@ typedef enum
  * @wid: a #GtkWidget.
  *
  * Returns the widget flags from @wid.
+ *
+ * Deprecated: 2.20: Do not use it.
  */
 #define GTK_WIDGET_FLAGS(wid)		  (GTK_OBJECT_FLAGS (wid))
+/* FIXME: Deprecating GTK_WIDGET_FLAGS requires fixing GTK internals. */
 
+#ifndef GTK_DISABLE_DEPRECATED
 /**
  * GTK_WIDGET_TOPLEVEL:
  * @wid: a #GtkWidget.
  *
  * Evaluates to %TRUE if the widget is a toplevel widget.
+ *
+ * Deprecated: 2.20: Use gtk_widget_is_toplevel() instead.
  */
 #define GTK_WIDGET_TOPLEVEL(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_TOPLEVEL) != 0)
+#endif
 
 /**
  * GTK_WIDGET_NO_WINDOW:
  * @wid: a #GtkWidget.
  *
  * Evaluates to %TRUE if the widget doesn't have an own #GdkWindow.
+ *
+ * Deprecated: 2.20: Use gtk_widget_get_has_window() instead.
  */
 #define GTK_WIDGET_NO_WINDOW(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_NO_WINDOW) != 0)
+/* FIXME: Deprecating GTK_WIDGET_NO_WINDOW requires fixing GTK internals. */
 
 /**
  * GTK_WIDGET_REALIZED:
@@ -302,14 +323,17 @@ typedef enum
  * mechanism.
  */
 #define GTK_WIDGET_RC_STYLE(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_RC_STYLE) != 0)
-
+#ifndef GTK_DISABLE_DEPRECATED
 /**
  * GTK_WIDGET_COMPOSITE_CHILD:
  * @wid: a #GtkWidget.
  *
  * Evaluates to %TRUE if the widget is a composite child of its parent.
+ *
+ * Deprecated: 2.20: Use the "composite-child" property instead.
  */
 #define GTK_WIDGET_COMPOSITE_CHILD(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_COMPOSITE_CHILD) != 0)
+#endif
 
 /**
  * GTK_WIDGET_APP_PAINTABLE:
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 98747b2..8b81432 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -8342,12 +8342,12 @@ void
 _gtk_window_set_is_toplevel (GtkWindow *window,
 			     gboolean   is_toplevel)
 {
-  if (GTK_WIDGET_TOPLEVEL (window))
+  if (gtk_widget_is_toplevel (GTK_WIDGET (window)))
     g_assert (g_slist_find (toplevel_list, window) != NULL);
   else
     g_assert (g_slist_find (toplevel_list, window) == NULL);
 
-  if (is_toplevel == GTK_WIDGET_TOPLEVEL (window))
+  if (is_toplevel == gtk_widget_is_toplevel (GTK_WIDGET (window)))
     return;
 
   if (is_toplevel)
diff --git a/modules/input/gtkimcontextxim.c b/modules/input/gtkimcontextxim.c
index cefbf60..baf1a97 100644
--- a/modules/input/gtkimcontextxim.c
+++ b/modules/input/gtkimcontextxim.c
@@ -1547,7 +1547,7 @@ claim_status_window (GtkIMContextXIM *context_xim)
   if (!context_xim->status_window && context_xim->client_widget)
     {
       GtkWidget *toplevel = gtk_widget_get_toplevel (context_xim->client_widget);
-      if (toplevel && GTK_WIDGET_TOPLEVEL (toplevel))
+      if (toplevel && gtk_widget_is_toplevel (toplevel))
 	{
 	  StatusWindow *status_window = status_window_get (toplevel);
 
@@ -1581,7 +1581,7 @@ update_in_toplevel (GtkIMContextXIM *context_xim)
     {
       GtkWidget *toplevel = gtk_widget_get_toplevel (context_xim->client_widget);
       
-      context_xim->in_toplevel = (toplevel && GTK_WIDGET_TOPLEVEL (toplevel));
+      context_xim->in_toplevel = (toplevel && gtk_widget_is_toplevel (toplevel));
     }
   else
     context_xim->in_toplevel = FALSE;
diff --git a/modules/other/gail/gailtreeview.c b/modules/other/gail/gailtreeview.c
index 44a6337..5b8ddce 100644
--- a/modules/other/gail/gailtreeview.c
+++ b/modules/other/gail/gailtreeview.c
@@ -906,7 +906,7 @@ gail_tree_view_ref_child (AtkObject *obj,
     fake_renderer = g_object_new (GTK_TYPE_CELL_RENDERER_TEXT, NULL);
     default_registry = atk_get_default_registry ();
     factory = atk_registry_get_factory (default_registry,
-                                        GTK_OBJECT_TYPE (fake_renderer));
+                                        G_OBJECT_TYPE (fake_renderer));
     child = atk_object_factory_create_accessible (factory,
                                                   G_OBJECT (fake_renderer));
     gail_return_val_if_fail (GAIL_IS_RENDERER_CELL (child), NULL);
@@ -942,7 +942,7 @@ gail_tree_view_ref_child (AtkObject *obj,
 
         default_registry = atk_get_default_registry ();
         factory = atk_registry_get_factory (default_registry,
-                                            GTK_OBJECT_TYPE (renderer));
+                                            G_OBJECT_TYPE (renderer));
         child = atk_object_factory_create_accessible (factory,
                                                       G_OBJECT (renderer));
         gail_return_val_if_fail (GAIL_IS_RENDERER_CELL (child), NULL);
@@ -2200,7 +2200,7 @@ gail_tree_view_grab_cell_focus  (GailCellParent *parent,
       gtk_tree_path_free (path);
       gtk_widget_grab_focus (widget);
       toplevel = gtk_widget_get_toplevel (widget);
-      if (GTK_WIDGET_TOPLEVEL (toplevel))
+      if (gtk_widget_is_toplevel (toplevel))
 	{
 #ifdef GDK_WINDOWING_X11
 	  gtk_window_present_with_time (GTK_WINDOW (toplevel), gdk_x11_get_server_time (widget->window));
diff --git a/modules/other/gail/gailwidget.c b/modules/other/gail/gailwidget.c
index 9493fc4..54e7291 100644
--- a/modules/other/gail/gailwidget.c
+++ b/modules/other/gail/gailwidget.c
@@ -744,7 +744,7 @@ gail_widget_grab_focus (AtkComponent   *component)
     {
       gtk_widget_grab_focus (widget);
       toplevel = gtk_widget_get_toplevel (widget);
-      if (GTK_WIDGET_TOPLEVEL (toplevel))
+      if (gtk_widget_is_toplevel (toplevel))
 	{
 #ifdef GDK_WINDOWING_X11
 	  gtk_window_present_with_time (GTK_WINDOW (toplevel), gdk_x11_get_server_time (widget->window));
@@ -782,7 +782,7 @@ gail_widget_set_extents (AtkComponent   *component,
     return FALSE;
   gail_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
 
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     {
       if (coord_type == ATK_XY_WINDOW)
         {
@@ -826,7 +826,7 @@ gail_widget_set_position (AtkComponent   *component,
     return FALSE;
   gail_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
 
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     {
       if (coord_type == ATK_XY_WINDOW)
         {
@@ -867,7 +867,7 @@ gail_widget_set_size (AtkComponent   *component,
     return FALSE;
   gail_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
 
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     {
       gtk_widget_set_size_request (widget, width, height);
       return TRUE;
diff --git a/modules/other/gail/gailwindow.c b/modules/other/gail/gailwindow.c
index 7b4ef4f..416e0f5 100644
--- a/modules/other/gail/gailwindow.c
+++ b/modules/other/gail/gailwindow.c
@@ -563,7 +563,7 @@ gail_window_get_extents (AtkComponent  *component,
 
   gail_return_if_fail (GTK_IS_WINDOW (widget));
 
-  if (!GTK_WIDGET_TOPLEVEL (widget))
+  if (!gtk_widget_is_toplevel (widget))
     {
       AtkComponentIface *parent_iface;
 
@@ -608,7 +608,7 @@ gail_window_get_size (AtkComponent *component,
 
   gail_return_if_fail (GTK_IS_WINDOW (widget));
 
-  if (!GTK_WIDGET_TOPLEVEL (widget))
+  if (!gtk_widget_is_toplevel (widget))
     {
       AtkComponentIface *parent_iface;
 
diff --git a/modules/other/gail/tests/testaction.c b/modules/other/gail/tests/testaction.c
index 9bed730..4e13c59 100644
--- a/modules/other/gail/tests/testaction.c
+++ b/modules/other/gail/tests/testaction.c
@@ -22,7 +22,7 @@ _check_object (AtkObject *obj)
     GtkWidget* widget = NULL;
 
     widget = GTK_ACCESSIBLE (obj)->widget;
-    typename = g_type_name (GTK_OBJECT_TYPE (widget));
+    typename = g_type_name (G_OBJECT_TYPE (widget));
     g_print ("Widget type name: %s\n", typename ? typename : "NULL");
   }
   typename = g_type_name (G_OBJECT_TYPE (obj));
diff --git a/modules/other/gail/tests/testnotebook.c b/modules/other/gail/tests/testnotebook.c
index 9ba4154..5e8c690 100644
--- a/modules/other/gail/tests/testnotebook.c
+++ b/modules/other/gail/tests/testnotebook.c
@@ -24,7 +24,7 @@ static void _print_type (AtkObject *obj)
     GtkWidget* widget = NULL;
 
     widget = GTK_ACCESSIBLE (obj)->widget;
-    typename = g_type_name (GTK_OBJECT_TYPE (widget));
+    typename = g_type_name (G_OBJECT_TYPE (widget));
     g_print ("\tWidget type name: %s\n", typename ? typename : "NULL");
   }
 
diff --git a/modules/other/gail/tests/testobject.c b/modules/other/gail/tests/testobject.c
index c96516d..2c8d595 100644
--- a/modules/other/gail/tests/testobject.c
+++ b/modules/other/gail/tests/testobject.c
@@ -54,7 +54,7 @@ static void _print_type (AtkObject *obj)
       GtkWidget* widget = NULL;
 
       widget = GTK_ACCESSIBLE (obj)->widget;
-      typename = g_type_name (GTK_OBJECT_TYPE (widget));
+      typename = g_type_name (G_OBJECT_TYPE (widget));
       g_print ("Widget type name: %s\n", typename ? typename : "NULL");
     }
   typename = g_type_name (G_OBJECT_TYPE (obj));
diff --git a/modules/other/gail/tests/testselection.c b/modules/other/gail/tests/testselection.c
index 539dc75..4cd90d5 100644
--- a/modules/other/gail/tests/testselection.c
+++ b/modules/other/gail/tests/testselection.c
@@ -58,7 +58,7 @@ static void _print_type (AtkObject *obj)
     GtkWidget* widget = NULL;
 
     widget = GTK_ACCESSIBLE (obj)->widget;
-    typename = g_type_name (GTK_OBJECT_TYPE (widget));
+    typename = g_type_name (G_OBJECT_TYPE (widget));
     g_print ("Widget type name: %s\n", typename ? typename : "NULL");
   }
   typename = g_type_name (G_OBJECT_TYPE (obj));
diff --git a/perf/gtkwidgetprofiler.c b/perf/gtkwidgetprofiler.c
index 17be09c..4b33d09 100644
--- a/perf/gtkwidgetprofiler.c
+++ b/perf/gtkwidgetprofiler.c
@@ -250,7 +250,7 @@ ensure_and_get_toplevel (GtkWidget *widget)
 	GtkWidget *window;
 
 	toplevel = gtk_widget_get_toplevel (widget);
-	if (GTK_WIDGET_TOPLEVEL (toplevel))
+	if (gtk_widget_is_toplevel (toplevel))
 		return toplevel;
 
 	g_assert (toplevel == widget); /* we don't want extraneous ancestors */
diff --git a/tests/testdnd.c b/tests/testdnd.c
index f2cc795..2ed5803 100644
--- a/tests/testdnd.c
+++ b/tests/testdnd.c
@@ -336,7 +336,7 @@ target_drag_motion	   (GtkWidget	       *widget,
 
   source_widget = gtk_drag_get_source_widget (context);
   g_print ("motion, source %s\n", source_widget ?
-	   GTK_OBJECT_TYPE_NAME (source_widget) :
+	   G_OBJECT_TYPE_NAME (source_widget) :
 	   "NULL");
 
   tmp_list = context->targets;
diff --git a/tests/testgtk.c b/tests/testgtk.c
index aa727e7..e8b49b5 100644
--- a/tests/testgtk.c
+++ b/tests/testgtk.c
@@ -12106,7 +12106,7 @@ find_widget (GtkWidget *widget, FindWidgetData *data)
    * but within the allocation are not counted. This is consistent
    * with the way we highlight drag targets.
    */
-  if (!GTK_WIDGET_NO_WINDOW (widget))
+  if (gtk_widget_get_has_window (widget))
     {
       new_allocation.x = 0;
       new_allocation.y = 0;
