[gnome-panel] panel: Drop drawers



commit 7ca5dda8564abbbb77b869d04f822ec11c80ad13
Author: Vincent Untz <vuntz gnome org>
Date:   Wed Mar 23 10:05:31 2011 +0100

    panel: Drop drawers
    
    It's finally time to drop drawers:
     - there are always been various issues here and there, and they've
       never got fixed
     - it added complexity to the code
     - number of users using it is small
     - 3.0 is a good time to do this change

 gnome-panel/Makefile.am                |    2 -
 gnome-panel/applet.c                   |   65 +---
 gnome-panel/applet.h                   |    1 -
 gnome-panel/drawer.c                   |  806 -------------------------------
 gnome-panel/drawer.h                   |   48 --
 gnome-panel/launcher.c                 |   18 -
 gnome-panel/main.c                     |    5 -
 gnome-panel/menu.c                     |    1 -
 gnome-panel/panel-action-button.c      |    9 -
 gnome-panel/panel-addto.c              |   36 +--
 gnome-panel/panel-compatibility.c      |  148 +------
 gnome-panel/panel-config-global.c      |   13 -
 gnome-panel/panel-config-global.h      |    1 -
 gnome-panel/panel-context-menu.c       |   18 +-
 gnome-panel/panel-enums.h              |    1 -
 gnome-panel/panel-global.schemas.in    |    6 +-
 gnome-panel/panel-icon-names.h         |    1 -
 gnome-panel/panel-object.schemas.in    |    7 +-
 gnome-panel/panel-profile.c            |  119 -----
 gnome-panel/panel-profile.h            |    9 -
 gnome-panel/panel-properties-dialog.c  |  129 +-----
 gnome-panel/panel-properties-dialog.ui |   42 +--
 gnome-panel/panel-struts.c             |   26 +-
 gnome-panel/panel-toplevel.c           |  577 +----------------------
 gnome-panel/panel-toplevel.h           |   10 +-
 gnome-panel/panel-widget.c             |  115 -----
 gnome-panel/panel-widget.h             |    7 -
 gnome-panel/panel.c                    |  111 +----
 icons/16x16/Makefile.am                |    2 -
 icons/16x16/gnome-panel-drawer.png     |  Bin 444 -> 0 bytes
 icons/16x16/gnome-panel-drawer.svg     |  297 ------------
 icons/22x22/Makefile.am                |    2 -
 icons/22x22/gnome-panel-drawer.png     |  Bin 718 -> 0 bytes
 icons/22x22/gnome-panel-drawer.svg     |  352 --------------
 icons/24x24/Makefile.am                |    1 -
 icons/24x24/gnome-panel-drawer.png     |  Bin 715 -> 0 bytes
 icons/32x32/Makefile.am                |    2 -
 icons/32x32/gnome-panel-drawer.png     |  Bin 865 -> 0 bytes
 icons/32x32/gnome-panel-drawer.svg     |  486 -------------------
 icons/scalable/Makefile.am             |    1 -
 icons/scalable/gnome-panel-drawer.svg  |  819 --------------------------------
 41 files changed, 58 insertions(+), 4235 deletions(-)
---
diff --git a/gnome-panel/Makefile.am b/gnome-panel/Makefile.am
index f942714..e47e473 100644
--- a/gnome-panel/Makefile.am
+++ b/gnome-panel/Makefile.am
@@ -32,7 +32,6 @@ panel_sources =			\
 	panel-compatibility.c	\
 	panel.c			\
 	applet.c		\
-	drawer.c		\
 	panel-config-global.c	\
 	panel-util.c		\
 	panel-gconf.c		\
@@ -79,7 +78,6 @@ panel_headers =			\
 	panel-compatibility.h	\
 	panel.h			\
 	applet.h		\
-	drawer.h		\
 	panel-util.h		\
 	panel-properties-dialog.h	\
 	panel-config-global.h	\
diff --git a/gnome-panel/applet.c b/gnome-panel/applet.c
index 1a307c2..6cf0f8a 100644
--- a/gnome-panel/applet.c
+++ b/gnome-panel/applet.c
@@ -17,8 +17,8 @@
 #include <libpanel-util/panel-show.h>
 
 #include "button-widget.h"
-#include "drawer.h"
 #include "launcher.h"
+#include "panel.h"
 #include "panel-addto.h"
 #include "panel-bindings.h"
 #include "panel-gconf.h"
@@ -42,6 +42,7 @@ static GSList *registered_applets = NULL;
 static GSList *queued_position_saves = NULL;
 static guint   queued_position_source = 0;
 
+static GtkWidget *panel_applet_get_menu (AppletInfo *info);
 static void applet_menu_show       (GtkWidget *w, AppletInfo *info);
 static void applet_menu_deactivate (GtkWidget *w, AppletInfo *info);
 
@@ -56,9 +57,6 @@ panel_applet_set_dnd_enabled (AppletInfo *info,
 			      gboolean    dnd_enabled)
 {
 	switch (info->type) {
-	case PANEL_OBJECT_DRAWER:
-		panel_drawer_set_dnd_enabled (info->data, dnd_enabled);
-		break;
 	case PANEL_OBJECT_MENU:
 		panel_menu_button_set_dnd_enabled (PANEL_MENU_BUTTON (info->widget),
 						   dnd_enabled);
@@ -252,10 +250,7 @@ applet_remove_callback (GtkWidget  *widget,
 			AppletInfo *info)
 {
 
-	if (info->type == PANEL_OBJECT_DRAWER)
-		drawer_query_deletion (info->data);
-	else
-		panel_profile_delete_object (info);
+	panel_profile_delete_object (info);
 }
 
 static inline GdkScreen *
@@ -285,21 +280,6 @@ applet_callback_callback (GtkWidget      *widget,
 		else if (!strcmp (menu->name, "properties"))
 			launcher_properties (menu->info->data);
 		break;
-	case PANEL_OBJECT_DRAWER: 
-		if (strcmp (menu->name, "add") == 0) {
-			Drawer *drawer = menu->info->data;
-
-			panel_addto_present (GTK_MENU_ITEM (widget),
-					     panel_toplevel_get_panel_widget (drawer->toplevel));
-		} else if (strcmp (menu->name, "properties") == 0) {
-			Drawer *drawer = menu->info->data;
-
-			panel_properties_dialog_present (drawer->toplevel);
-		} else if (strcmp (menu->name, "help") == 0) {
-			panel_show_help (screen,
-					 "user-guide", "gospanel-18", NULL);
-		}
-		break;
 	case PANEL_OBJECT_MENU:
 		panel_menu_button_invoke_menu (
 			PANEL_MENU_BUTTON (menu->info->widget), menu->name);
@@ -526,7 +506,7 @@ panel_applet_create_bare_menu (AppletInfo *info)
 	return menu;
 }
 
-GtkWidget *
+static GtkWidget *
 panel_applet_get_menu (AppletInfo *info)
 {
 	GtkWidget   *menu;
@@ -845,21 +825,6 @@ panel_applet_destroy (GtkWidget  *widget,
 	queued_position_saves =
 		g_slist_remove (queued_position_saves, info);
 
-	if (info->type == PANEL_OBJECT_DRAWER) {
-		Drawer *drawer = info->data;
-
-		if (drawer->toplevel) {
-			PanelWidget *panel_widget;
-
-			panel_widget = panel_toplevel_get_panel_widget (
-							drawer->toplevel);
-			panel_widget->master_widget = NULL;
-
-			gtk_widget_destroy (GTK_WIDGET (drawer->toplevel));
-			drawer->toplevel = NULL;
-		}
-	}
-
 	if (info->type != PANEL_OBJECT_APPLET)
 		panel_lockdown_notify_remove (G_CALLBACK (panel_applet_recreate_menus),
 					      info);
@@ -1061,12 +1026,6 @@ panel_applet_load_idle_handler (gpointer dummy)
 					applet->position,
 					applet->id);
 		break;
-	case PANEL_OBJECT_DRAWER:
-		drawer_load_from_gconf (panel_widget,
-					applet->locked,
-					applet->position,
-					applet->id);
-		break;
 	case PANEL_OBJECT_MENU:
 		panel_menu_button_load_from_gconf (panel_widget,
 						   applet->locked,
@@ -1424,22 +1383,6 @@ panel_applet_register (GtkWidget       *applet,
 					    (GConfClientNotifyFunc) panel_applet_locked_change_notify,
 					    G_OBJECT (applet));
 
-	if (type == PANEL_OBJECT_DRAWER) {
-		Drawer *drawer = data;
-		PanelWidget *assoc_panel;
-
-		assoc_panel = panel_toplevel_get_panel_widget (drawer->toplevel);
-
-		g_object_set_data (G_OBJECT (applet),
-				   PANEL_APPLET_ASSOC_PANEL_KEY, assoc_panel);
-		assoc_panel->master_widget = applet;
-		g_object_add_weak_pointer (
-			G_OBJECT (applet), (gpointer *) &assoc_panel->master_widget);
-	}
-
-	g_object_set_data (G_OBJECT (applet),
-			   PANEL_APPLET_FORBIDDEN_PANELS, NULL);
-
 	registered_applets = g_slist_append (registered_applets, info);
 
 	if (panel_widget_add (panel, applet, locked, pos, exactpos) == -1 &&
diff --git a/gnome-panel/applet.h b/gnome-panel/applet.h
index 5edd598..62b8b7e 100644
--- a/gnome-panel/applet.h
+++ b/gnome-panel/applet.h
@@ -98,7 +98,6 @@ gboolean    panel_applet_can_freely_move (AppletInfo *applet);
 /* True if the locked flag is writable */
 gboolean    panel_applet_lockable (AppletInfo *applet);
 
-GtkWidget  *panel_applet_get_menu (AppletInfo *info);
 GtkWidget  *panel_applet_get_edit_menu (AppletInfo *info);
 
 void        panel_applet_menu_set_recurse (GtkMenu     *menu,
diff --git a/gnome-panel/launcher.c b/gnome-panel/launcher.c
index df65d6b..9c42b1f 100644
--- a/gnome-panel/launcher.c
+++ b/gnome-panel/launcher.c
@@ -165,24 +165,6 @@ launcher_launch (Launcher  *launcher,
 		}
 	}
 	g_free (type);
-	
-	if (panel_global_config_get_drawer_auto_close ()) {
-		PanelToplevel *toplevel;
-		PanelToplevel *parent;
-
-		toplevel = PANEL_WIDGET (gtk_widget_get_parent (launcher->button))->toplevel;
-
-		if (panel_toplevel_get_is_attached (toplevel)) {
-			parent = panel_toplevel_get_attach_toplevel (toplevel);
-
-			while (panel_toplevel_get_is_attached (parent)) {
-				toplevel = parent;
-				parent = panel_toplevel_get_attach_toplevel (toplevel);
-			}
-
-			panel_toplevel_hide (toplevel, FALSE, -1);
-		}
-	}
 }
 
 static void
diff --git a/gnome-panel/main.c b/gnome-panel/main.c
index fa5ffff..e6a0d56 100644
--- a/gnome-panel/main.c
+++ b/gnome-panel/main.c
@@ -112,11 +112,6 @@ main (int argc, char **argv)
 	panel_lockdown_init ();
 	panel_profile_load ();
 
-	/*add forbidden lists to ALL panels*/
-	g_slist_foreach (panels,
-			 (GFunc)panel_widget_add_forbidden,
-			 NULL);
-
 	xstuff_init ();
 
 	/* Flush to make sure our struts are seen by everyone starting
diff --git a/gnome-panel/menu.c b/gnome-panel/menu.c
index 4953d23..60175f7 100644
--- a/gnome-panel/menu.c
+++ b/gnome-panel/menu.c
@@ -37,7 +37,6 @@
 #include "launcher.h"
 #include "panel-util.h"
 #include "panel.h"
-#include "drawer.h"
 #include "panel-config-global.h"
 #include "panel-stock-icons.h"
 #include "panel-action-button.h"
diff --git a/gnome-panel/panel-action-button.c b/gnome-panel/panel-action-button.c
index 4648106..2ee9b6f 100644
--- a/gnome-panel/panel-action-button.c
+++ b/gnome-panel/panel-action-button.c
@@ -549,15 +549,6 @@ panel_action_button_clicked (GtkButton *gtk_button)
 	g_return_if_fail (button->priv->type > PANEL_ACTION_NONE);
 	g_return_if_fail (button->priv->type < PANEL_ACTION_LAST);
 
-	if (panel_global_config_get_drawer_auto_close ()) {
-		PanelToplevel *toplevel;
-
-		toplevel = PANEL_WIDGET (gtk_widget_get_parent (GTK_WIDGET (button)))->toplevel;
-
-		if (panel_toplevel_get_is_attached (toplevel))
-			panel_toplevel_hide (toplevel, FALSE, -1);
-	}
-
 	if (actions [button->priv->type].invoke)
 		actions [button->priv->type].invoke (GTK_WIDGET (button));
 }
diff --git a/gnome-panel/panel-addto.c b/gnome-panel/panel-addto.c
index 9b65b40..4e77536 100644
--- a/gnome-panel/panel-addto.c
+++ b/gnome-panel/panel-addto.c
@@ -34,7 +34,6 @@
 
 #include "launcher.h"
 #include "panel.h"
-#include "drawer.h"
 #include "panel-applets-manager.h"
 #include "panel-applet-frame.h"
 #include "panel-action-button.h"
@@ -87,8 +86,7 @@ typedef enum {
 	PANEL_ADDTO_LAUNCHER_NEW,
 	PANEL_ADDTO_MENU,
 	PANEL_ADDTO_MENUBAR,
-	PANEL_ADDTO_SEPARATOR,
-	PANEL_ADDTO_DRAWER
+	PANEL_ADDTO_SEPARATOR
 } PanelAddtoItemType;
 
 typedef struct {
@@ -168,17 +166,6 @@ static PanelAddtoItemInfo internal_addto_items [] = {
 	  NULL,
 	  NULL,
 	  "SEPARATOR:NEW",
-	  TRUE },
-
-	{ PANEL_ADDTO_DRAWER,
-	  N_("Drawer"),
-	  N_("A pop out drawer to store other items in"),
-	  PANEL_ICON_DRAWER,
-	  PANEL_ACTION_NONE,
-	  NULL,
-	  NULL,
-	  NULL,
-	  "DRAWER:NEW",
 	  TRUE }
 };
 
@@ -805,11 +792,6 @@ panel_addto_add_item (PanelAddtoDialog   *dialog,
 		panel_separator_create (dialog->panel_widget->toplevel,
 					dialog->insertion_position);
 		break;
-	case PANEL_ADDTO_DRAWER:
-		panel_drawer_create (dialog->panel_widget->toplevel,
-				     dialog->insertion_position,
-				     NULL, FALSE, NULL);
-		break;
 	}
 }
 
@@ -1035,7 +1017,6 @@ static void
 panel_addto_name_change (PanelAddtoDialog *dialog,
 			 const char       *name)
 {
-	char *title;
 	char *label;
 
 	label = NULL;
@@ -1044,18 +1025,11 @@ panel_addto_name_change (PanelAddtoDialog *dialog,
 		label = g_strdup_printf (_("Find an _item to add to \"%s\":"),
 					 name);
 
-	if (panel_toplevel_get_is_attached (dialog->panel_widget->toplevel)) {
-		title = g_strdup_printf (_("Add to Drawer"));
-		if (label == NULL)
-			label = g_strdup (_("Find an _item to add to the drawer:"));
-	} else {
-		title = g_strdup_printf (_("Add to Panel"));
-		if (label == NULL)
-			label = g_strdup (_("Find an _item to add to the panel:"));
-	}
+	if (label == NULL)
+		label = g_strdup (_("Find an _item to add to the panel:"));
 
-	gtk_window_set_title (GTK_WINDOW (dialog->addto_dialog), title);
-	g_free (title);
+	gtk_window_set_title (GTK_WINDOW (dialog->addto_dialog),
+			      _("Add to Panel"));
 
 	gtk_label_set_text_with_mnemonic (GTK_LABEL (dialog->label), label);
 	g_free (label);
diff --git a/gnome-panel/panel-compatibility.c b/gnome-panel/panel-compatibility.c
index 359e732..20451ff 100644
--- a/gnome-panel/panel-compatibility.c
+++ b/gnome-panel/panel-compatibility.c
@@ -43,33 +43,6 @@ typedef enum {
 	PANEL_ORIENT_RIGHT,
 } PanelOrient;
 
-static GConfEnumStringPair panel_orient_map [] = {
-	{ PANEL_ORIENT_UP,    "panel-orient-up" },
-	{ PANEL_ORIENT_DOWN,  "panel-orient-down" },
-	{ PANEL_ORIENT_LEFT,  "panel-orient-left" },
-	{ PANEL_ORIENT_RIGHT, "panel-orient-right" },
-	{ 0,                  NULL }
-};
-
-static gboolean
-panel_compatibility_map_orient_string (const char  *str,
-				       PanelOrient *orient)
-{
-	int mapped;
-
-	g_return_val_if_fail (orient != NULL, FALSE);
-
-	if (!str)
-		return FALSE;
-
-	if (!gconf_string_to_enum (panel_orient_map, str, &mapped))
-		return FALSE;
-
-	*orient = mapped;
-
-	return TRUE;
-}
-
 static GConfEnumStringPair panel_orientation_map [] = {
 	{ GTK_ORIENTATION_HORIZONTAL, "panel-orientation-horizontal" },
 	{ GTK_ORIENTATION_VERTICAL,   "panel-orientation-vertical" },
@@ -132,7 +105,6 @@ panel_compatibility_map_edge_string (const char *str,
 
 typedef enum {
 	EDGE_PANEL,
-	DRAWER_PANEL,
 	ALIGNED_PANEL,
 	SLIDING_PANEL,
 	FLOATING_PANEL,
@@ -141,7 +113,6 @@ typedef enum {
 
 static GConfEnumStringPair panel_type_map [] = {
 	{ EDGE_PANEL,      "edge-panel" },
-	{ DRAWER_PANEL,    "drawer-panel" },
 	{ ALIGNED_PANEL,   "aligned-panel" },
 	{ SLIDING_PANEL,   "sliding-panel" },
 	{ FLOATING_PANEL,  "floating-panel" },
@@ -377,53 +348,6 @@ panel_compatibility_migrate_edge_panel_settings (GConfClient *client,
 }
 
 static void
-panel_compatibility_migrate_drawer_panel_settings (GConfClient *client,
-						   const char  *toplevel_dir,
-						   const char  *panel_dir)
-{
-	PanelOrient  orient;
-	const char  *key;
-	char        *orient_str;
-
-	key = panel_gconf_sprintf ("%s/expand", toplevel_dir);
-	gconf_client_set_bool (client, key, FALSE, NULL);
-
-	key = panel_gconf_sprintf ("%s/panel_orient", panel_dir);
-	orient_str = gconf_client_get_string (client, key, NULL);
-
-	if (panel_compatibility_map_orient_string (orient_str, &orient)) {
-		PanelOrientation orientation;
-
-		switch (orient) {
-		case PANEL_ORIENT_DOWN:
-			orientation = PANEL_ORIENTATION_TOP;
-			break;
-		case PANEL_ORIENT_UP:
-			orientation = PANEL_ORIENTATION_BOTTOM;
-			break;
-		case PANEL_ORIENT_RIGHT:
-			orientation = PANEL_ORIENTATION_LEFT;
-			break;
-		case PANEL_ORIENT_LEFT:
-			orientation = PANEL_ORIENTATION_RIGHT;
-			break;
-		default:
-			orientation = 0;
-			g_assert_not_reached ();
-			break;
-		}
-
-		key = panel_gconf_sprintf ("%s/orientation", toplevel_dir);
-		gconf_client_set_string (client,
-					 key,
-					 panel_profile_map_orientation (orientation),
-					 NULL);
-	}
-
-	g_free (orient_str);
-}
-
-static void
 panel_compatibility_migrate_corner_panel_settings (GConfClient *client,
 						   const char  *toplevel_dir,
 						   const char  *panel_dir)
@@ -549,8 +473,7 @@ panel_compatibility_migrate_menu_panel_settings (GConfClient *client,
 static void
 panel_compatibility_migrate_panel_type (GConfClient *client,
 					const char  *toplevel_dir,
-					const char  *panel_dir,
-					gboolean    *is_drawer)
+					const char  *panel_dir)
 {
 	PanelType   type;
 	const char *key;
@@ -570,10 +493,6 @@ panel_compatibility_migrate_panel_type (GConfClient *client,
 	case EDGE_PANEL:
 		panel_compatibility_migrate_edge_panel_settings (client, toplevel_dir, panel_dir);
 		break;
-	case DRAWER_PANEL:
-		panel_compatibility_migrate_drawer_panel_settings (client, toplevel_dir, panel_dir);
-		*is_drawer = TRUE;
-		break;
 	case ALIGNED_PANEL:
 		panel_compatibility_migrate_corner_panel_settings (client, toplevel_dir, panel_dir);
 		break;
@@ -595,8 +514,7 @@ panel_compatibility_migrate_panel_type (GConfClient *client,
 static char *
 panel_compatibility_migrate_panel_settings (GConfClient *client,
 					    GSList      *toplevel_id_list,
-					    const char  *panel_id,
-					    gboolean    *is_drawer)
+					    const char  *panel_id)
 {
 	const char *key;
 	char       *toplevel_id;
@@ -665,7 +583,7 @@ panel_compatibility_migrate_panel_settings (GConfClient *client,
 	gconf_client_set_bool (client, key, auto_hide, NULL);
 
 	/* migrate different panel types to toplevels */
-	panel_compatibility_migrate_panel_type (client, toplevel_dir, panel_dir, is_drawer);
+	panel_compatibility_migrate_panel_type (client, toplevel_dir, panel_dir);
 
 	/* background settings */
 	panel_compatibility_migrate_background_settings (client, toplevel_dir, panel_dir);
@@ -704,54 +622,6 @@ panel_compatibility_migrate_panel_id (GConfClient       *client,
 }
 
 static void
-panel_compatibility_migrate_drawer_settings (GConfClient       *client,
-					     PanelGConfKeyType  key_type,
-					     const char        *object_id,
-					     GHashTable        *panel_id_hash)
-{
-	const char *key;
-	char       *toplevel_id;
-	char       *panel_id;
-	char       *custom_icon;
-	char       *pixmap;
-
-	/* unique-drawer-panel-id -> attached_toplevel_id */
-	key = panel_gconf_full_key (key_type, object_id, "attached_toplevel_id");
-	toplevel_id = gconf_client_get_string (client, key, NULL);
-
-	key = panel_gconf_full_key (key_type, object_id, "unique-drawer-panel-id");
-	panel_id = gconf_client_get_string (client, key, NULL);
-
-	if (!toplevel_id && panel_id &&
-	    (toplevel_id = g_hash_table_lookup (panel_id_hash, panel_id))) {
-		key = panel_gconf_full_key (key_type, object_id, "attached_toplevel_id");
-		gconf_client_set_string (client, key, toplevel_id, NULL);
-
-		toplevel_id = NULL;
-	}
-
-	/* pixmap -> custom_icon */	
-	key = panel_gconf_full_key (key_type, object_id, "custom_icon");
-	custom_icon = gconf_client_get_string (client, key, NULL);
-
-	key = panel_gconf_full_key (key_type, object_id, "pixmap");
-	pixmap = gconf_client_get_string (client, key, NULL);
-
-	if (!custom_icon && pixmap) {
-		key = panel_gconf_full_key (key_type, object_id, "custom_icon");
-		gconf_client_set_string (client, key, pixmap, NULL);
-
-		key = panel_gconf_full_key (key_type, object_id, "use_custom_icon");
-		gconf_client_set_bool (client, key, TRUE, NULL);
-	}
-
-	g_free (toplevel_id);
-	g_free (panel_id);
-	g_free (custom_icon);
-	g_free (pixmap);
-}
-
-static void
 panel_compatibility_migrate_menu_button_settings (GConfClient       *client,
 						  PanelGConfKeyType  key_type,
 						  const char        *object_id)
@@ -824,10 +694,6 @@ panel_compatibility_migrate_objects (GConfClient       *client,
 
 		if (panel_profile_map_object_type_string (object_type_str, &object_type)) {
 			switch (object_type) {
-			case PANEL_OBJECT_DRAWER:
-				panel_compatibility_migrate_drawer_settings (
-						client, key_type, id, panel_id_hash);
-				break;
 			case PANEL_OBJECT_MENU:
 				panel_compatibility_migrate_menu_button_settings (
 						client, key_type, id);
@@ -937,16 +803,12 @@ panel_compatibility_migrate_panel_id_list (GConfClient *client)
 
 	for (l = panel_id_list; l; l = l->next) {
 		char     *new_id;
-		gboolean  is_drawer = FALSE;
 
 		new_id = panel_compatibility_migrate_panel_settings (client,
 								     toplevel_id_list,
-								     l->data,
-								     &is_drawer);
+								     l->data);
 
-		/* Drawer toplevels don't belong on the toplevel list */
-		if (!is_drawer)
-			toplevel_id_list = g_slist_prepend (toplevel_id_list, new_id);
+		toplevel_id_list = g_slist_prepend (toplevel_id_list, new_id);
 
 		g_hash_table_insert (panel_id_hash, l->data, new_id);
 	}
diff --git a/gnome-panel/panel-config-global.c b/gnome-panel/panel-config-global.c
index 7a05263..34a8908 100644
--- a/gnome-panel/panel-config-global.c
+++ b/gnome-panel/panel-config-global.c
@@ -36,7 +36,6 @@
 typedef struct {
 	guint               tooltips_enabled : 1;
 	guint               enable_animations : 1;
-	guint               drawer_auto_close : 1;
 	guint               confirm_panel_remove : 1;
 	guint               highlight_when_over : 1;
 } GlobalConfig;
@@ -61,14 +60,6 @@ panel_global_config_get_enable_animations (void)
 }
 
 gboolean
-panel_global_config_get_drawer_auto_close (void)
-{
-	g_assert (global_config_initialised == TRUE);
-
-	return global_config.drawer_auto_close;
-}
-
-gboolean
 panel_global_config_get_tooltips_enabled (void)
 {
 	g_assert (global_config_initialised == TRUE);
@@ -106,10 +97,6 @@ panel_global_config_set_entry (GConfEntry *entry)
 		global_config.enable_animations =
 				gconf_value_get_bool (value);
 
-	else if (strcmp (key, "drawer_autoclose") == 0)
-		global_config.drawer_auto_close =
-			gconf_value_get_bool (value);
-
 	else if (strcmp (key, "confirm_panel_remove") == 0)
 		global_config.confirm_panel_remove =
 			gconf_value_get_bool (value);
diff --git a/gnome-panel/panel-config-global.h b/gnome-panel/panel-config-global.h
index 85714bf..2b436e2 100644
--- a/gnome-panel/panel-config-global.h
+++ b/gnome-panel/panel-config-global.h
@@ -34,7 +34,6 @@ void panel_global_config_load (void);
 
 gboolean panel_global_config_get_highlight_when_over  (void);
 gboolean panel_global_config_get_enable_animations    (void);
-gboolean panel_global_config_get_drawer_auto_close    (void);
 gboolean panel_global_config_get_tooltips_enabled     (void);
 gboolean panel_global_config_get_confirm_panel_remove (void);
 
diff --git a/gnome-panel/panel-context-menu.c b/gnome-panel/panel-context-menu.c
index b9f8f5f..0fe9367 100644
--- a/gnome-panel/panel-context-menu.c
+++ b/gnome-panel/panel-context-menu.c
@@ -41,7 +41,6 @@
 #include "panel-util.h"
 #include "panel.h"
 #include "menu.h"
-#include "applet.h"
 #include "panel-config-global.h"
 #include "panel-profile.h"
 #include "panel-properties-dialog.h"
@@ -58,7 +57,7 @@ panel_context_menu_create_new_panel (GtkWidget *menuitem)
 static void
 panel_context_menu_delete_panel (PanelToplevel *toplevel)
 {
-	if (panel_toplevel_is_last_unattached (toplevel)) {
+	if (panel_toplevel_is_last (toplevel)) {
 		panel_error_dialog (GTK_WINDOW (toplevel),
 				    gtk_window_get_screen (GTK_WINDOW (toplevel)),
 				    "cannot_delete_last_panel", TRUE,
@@ -107,7 +106,7 @@ panel_context_menu_setup_delete_panel_item (GtkWidget *menu,
 	g_assert (PANEL_IS_TOPLEVEL (panel_widget->toplevel));
 
 	sensitive =
-		!panel_toplevel_is_last_unattached (panel_widget->toplevel) &&
+		!panel_toplevel_is_last (panel_widget->toplevel) &&
 		!panel_lockdown_get_locked_down () &&
 		panel_profile_id_lists_are_writable ();
 
@@ -174,19 +173,6 @@ panel_context_menu_create (PanelWidget *panel)
 {
 	GtkWidget *retval;
 
-	if (panel->master_widget) {
-		gpointer    *pointer;
-		AppletInfo  *info;
-
-		pointer = g_object_get_data (G_OBJECT (panel->master_widget),
-					     "applet_info");
-
-		g_assert (pointer != NULL);
-		info = (AppletInfo *) pointer;
-
-		return panel_applet_get_menu (info);
-	}
-
 	if (panel_lockdown_get_locked_down ())
 		return NULL;
 
diff --git a/gnome-panel/panel-enums.h b/gnome-panel/panel-enums.h
index 019d1dc..296f663 100644
--- a/gnome-panel/panel-enums.h
+++ b/gnome-panel/panel-enums.h
@@ -75,7 +75,6 @@ typedef enum {
 } PanelGConfKeyType;
 
 typedef enum {
-	PANEL_OBJECT_DRAWER,
 	PANEL_OBJECT_MENU,
 	PANEL_OBJECT_LAUNCHER,
 	PANEL_OBJECT_APPLET,
diff --git a/gnome-panel/panel-global.schemas.in b/gnome-panel/panel-global.schemas.in
index 6d8747c..3cadc79 100644
--- a/gnome-panel/panel-global.schemas.in
+++ b/gnome-panel/panel-global.schemas.in
@@ -159,10 +159,8 @@ Panel Global Config Schema File -  work in progress
         <type>bool</type>
         <default>true</default>
         <locale name="C">
-          <short>Autoclose drawer</short>
-          <long>If true, a drawer will automatically be closed
-                when the user clicks a launcher in it.
-          </long>
+          <short>Deprecated</short>
+          <long></long>
         </locale>
       </schema>
 
diff --git a/gnome-panel/panel-icon-names.h b/gnome-panel/panel-icon-names.h
index d09052c..0df99a4 100644
--- a/gnome-panel/panel-icon-names.h
+++ b/gnome-panel/panel-icon-names.h
@@ -5,7 +5,6 @@
 #define PANEL_ICON_BURNER		"nautilus-cd-burner"
 #define PANEL_ICON_COMPUTER		"computer"
 #define PANEL_ICON_DESKTOP		"user-desktop"
-#define PANEL_ICON_DRAWER		"gnome-panel-drawer"
 #define PANEL_ICON_FILESYSTEM		"drive-harddisk"
 #define PANEL_ICON_FOLDER		"folder"
 #define PANEL_ICON_FOLDER_DOCUMENTS	"folder-documents"
diff --git a/gnome-panel/panel-object.schemas.in b/gnome-panel/panel-object.schemas.in
index 5a0943d..dfab892 100644
--- a/gnome-panel/panel-object.schemas.in
+++ b/gnome-panel/panel-object.schemas.in
@@ -120,11 +120,8 @@
       <type>string</type>
       <default></default>
       <locale name="C">
-        <short>Panel attached to drawer</short>
-        <long>
-          The identifier of the panel attached to this drawer. This
-          key is only relevant if the object_type key is "drawer-object".
-        </long>
+        <short>Deprecated</short>
+        <long></long>
       </locale>
     </schema>
 
diff --git a/gnome-panel/panel-profile.c b/gnome-panel/panel-profile.c
index 539830c..4407744 100644
--- a/gnome-panel/panel-profile.c
+++ b/gnome-panel/panel-profile.c
@@ -96,7 +96,6 @@ static GConfEnumStringPair panel_background_type_map [] = {
 };
 
 static GConfEnumStringPair panel_object_type_map [] = {
-	{ PANEL_OBJECT_DRAWER,    "drawer-object" },
 	{ PANEL_OBJECT_MENU,      "menu-object" },
 	{ PANEL_OBJECT_LAUNCHER,  "launcher-object" },
 	{ PANEL_OBJECT_APPLET,    "external-applet" },
@@ -631,118 +630,6 @@ TOPLEVEL_GET_SET_FUNCS ("background/fit",     background, bool, fit,
 TOPLEVEL_GET_SET_FUNCS ("background/stretch", background, bool, stretch,        gboolean)
 TOPLEVEL_GET_SET_FUNCS ("background/rotate",  background, bool, rotate,         gboolean)
 
-static const char *
-panel_profile_get_attached_object_key (PanelToplevel *toplevel,
-				       const char    *key)
-{
-	GtkWidget  *attach_widget;
-	const char *id;
-
-	attach_widget = panel_toplevel_get_attach_widget (toplevel);
-
-	id = panel_applet_get_id_by_widget (attach_widget);
-
-	if (!id)
-		return NULL;
-
-	return panel_gconf_full_key (PANEL_GCONF_OBJECTS, id, key);
-}
-
-void
-panel_profile_set_attached_custom_icon (PanelToplevel *toplevel,
-					const char    *custom_icon)
-{
-	GConfClient *client;
-	const char  *key;
-
-	client = panel_gconf_get_client ();
-
-	key = panel_profile_get_attached_object_key (toplevel, "use_custom_icon");
-	if (key)
-		gconf_client_set_bool (client, key, custom_icon != NULL, NULL);
-
-	key = panel_profile_get_attached_object_key (toplevel, "custom_icon");
-	if (key)
-		gconf_client_set_string (client, key, sure_string (custom_icon), NULL);
-}
-
-char *
-panel_profile_get_attached_custom_icon (PanelToplevel *toplevel)
-{
-	GConfClient *client;
-	const char  *key;
-
-	client = panel_gconf_get_client ();
-
-	key = panel_profile_get_attached_object_key (toplevel, "use_custom_icon");
-	if (!key || !gconf_client_get_bool (client, key, NULL))
-		return NULL;
-
-	key = panel_profile_get_attached_object_key (toplevel, "custom_icon");
-
-	return key ? gconf_client_get_string (client, key, NULL) : NULL;
-}
-
-gboolean
-panel_profile_is_writable_attached_custom_icon (PanelToplevel *toplevel)
-{
-	GConfClient *client;
-	const char  *key;
-
-	client = panel_gconf_get_client ();
-
-	key = panel_profile_get_attached_object_key (toplevel, "use_custom_icon");
-	if (!key)
-		return TRUE;
-
-	if (!gconf_client_key_is_writable (client, key, NULL))
-		return FALSE;
-
-	key = panel_profile_get_attached_object_key (toplevel, "custom_icon");
-
-	return key ? gconf_client_key_is_writable (client, key, NULL) : TRUE;
-}
-
-void
-panel_profile_set_attached_tooltip (PanelToplevel *toplevel,
-				    const char    *tooltip)
-{
-	GConfClient *client;
-	const char  *key;
-
-	client = panel_gconf_get_client ();
-
-	key = panel_profile_get_attached_object_key (toplevel, "tooltip");
-	if (key)
-		gconf_client_set_string (client, key, tooltip, NULL);
-}
-
-char *
-panel_profile_get_attached_tooltip (PanelToplevel *toplevel)
-{
-	GConfClient *client;
-	const char  *key;
-
-	client = panel_gconf_get_client ();
-
-	key = panel_profile_get_attached_object_key (toplevel, "tooltip");
-
-	return key ? gconf_client_get_string (client, key, NULL) : NULL;
-}
-
-gboolean
-panel_profile_is_writable_attached_tooltip (PanelToplevel *toplevel)
-{
-	GConfClient *client;
-	const char  *key;
-
-	client = panel_gconf_get_client ();
-
-	key = panel_profile_get_attached_object_key (toplevel, "tooltip");
-
-	return key ? gconf_client_key_is_writable (client, key, NULL) : TRUE;
-}
-
 static PanelBackgroundType
 get_background_type (GConfClient *client,
 		     const char  *toplevel_dir)
@@ -1459,7 +1346,6 @@ panel_profile_find_empty_spot (GdkScreen *screen,
 		int toplevel_monitor = panel_toplevel_get_monitor (toplevel);
 
 		if (toplevel_screen != screen ||
-		    panel_toplevel_get_is_attached (toplevel) ||
 		    toplevel_monitor < 0)
 			continue;
 
@@ -2171,11 +2057,6 @@ panel_profile_toplevel_id_list_notify (GConfClient *client,
 	existing_toplevels = NULL;
 	for (l = panel_toplevel_list_toplevels (); l; l = l->next) {
 		PanelToplevel *toplevel = l->data;
-
-		/* Attached toplevels aren't on the id list */
-		if (panel_toplevel_get_is_attached (toplevel))
-			continue;
-
 		existing_toplevels = g_slist_prepend (existing_toplevels, toplevel);
 	}
 
diff --git a/gnome-panel/panel-profile.h b/gnome-panel/panel-profile.h
index 7f0ec72..636a0a0 100644
--- a/gnome-panel/panel-profile.h
+++ b/gnome-panel/panel-profile.h
@@ -143,15 +143,6 @@ void        panel_profile_set_background_rotate       (PanelToplevel       *topl
 gboolean    panel_profile_get_background_rotate       (PanelToplevel       *toplevel);
 gboolean    panel_profile_is_writable_background_rotate (PanelToplevel *toplevel);
 
-void        panel_profile_set_attached_custom_icon    (PanelToplevel        *toplevel,
-						       const char           *custom_icon);
-char       *panel_profile_get_attached_custom_icon    (PanelToplevel        *toplevel);
-gboolean    panel_profile_is_writable_attached_custom_icon (PanelToplevel        *toplevel);
-void        panel_profile_set_attached_tooltip        (PanelToplevel        *toplevel,
-						       const char           *custom_icon);
-char       *panel_profile_get_attached_tooltip        (PanelToplevel        *toplevel);
-gboolean    panel_profile_is_writable_attached_tooltip (PanelToplevel        *toplevel);
-
 guint       panel_profile_toplevel_notify_add         (PanelToplevel         *toplevel,
 						       const char            *key,
 						       GConfClientNotifyFunc  func,
diff --git a/gnome-panel/panel-properties-dialog.c b/gnome-panel/panel-properties-dialog.c
index 29e0d32..653b322 100644
--- a/gnome-panel/panel-properties-dialog.c
+++ b/gnome-panel/panel-properties-dialog.c
@@ -239,48 +239,6 @@ panel_properties_dialog_setup_size_spin (PanelPropertiesDialog *dialog,
 	}
 }
 
-static void
-panel_properties_dialog_icon_changed (PanelIconChooser      *chooser,
-				      const char            *icon,
-				      PanelPropertiesDialog *dialog)
-{
-        panel_profile_set_attached_custom_icon (dialog->toplevel, icon);
-}
-
-static void
-panel_properties_dialog_setup_icon_chooser (PanelPropertiesDialog *dialog,
-					    GtkBuilder            *gui)
-{
-	char *custom_icon;
-
-	dialog->icon_align = PANEL_GTK_BUILDER_GET (gui, "icon_align");
-	g_return_if_fail (dialog->icon_align != NULL);
-
-	dialog->icon_chooser = panel_icon_chooser_new (NULL);
-	panel_icon_chooser_set_fallback_icon_name (PANEL_ICON_CHOOSER (dialog->icon_chooser),
-						   PANEL_ICON_DRAWER);
-	gtk_widget_show (dialog->icon_chooser);
-	gtk_container_add (GTK_CONTAINER (dialog->icon_align),
-			   dialog->icon_chooser);
-
-	dialog->icon_label = PANEL_GTK_BUILDER_GET (gui, "icon_label");
-	g_return_if_fail (dialog->icon_label != NULL);
-
-	custom_icon = panel_profile_get_attached_custom_icon (dialog->toplevel);
-	panel_icon_chooser_set_icon (PANEL_ICON_CHOOSER (dialog->icon_chooser),
-				     custom_icon);
-	g_free (custom_icon);
-
-	g_signal_connect (dialog->icon_chooser, "changed",
-			  G_CALLBACK (panel_properties_dialog_icon_changed), dialog);
-
-	if (!panel_profile_is_writable_attached_custom_icon (dialog->toplevel)) {
-		gtk_widget_set_sensitive (dialog->icon_chooser, FALSE);
-		gtk_widget_set_sensitive (dialog->icon_label, FALSE);
-		gtk_widget_show (dialog->writability_warn_general);
-	}
-}
-
 /* Note: this is only for toggle buttons on the general page, if needed for togglebuttons
    elsewhere you must make this respect the writability warning thing for the right page */
 #define SETUP_TOGGLE_BUTTON(wid, n, p)                                                            \
@@ -550,20 +508,13 @@ panel_properties_dialog_response (PanelPropertiesDialog *dialog,
 				  int                    response,
 				  GtkWidget             *properties_dialog)
 {
-	char *help_id;
-
 	switch (response) {
 	case GTK_RESPONSE_CLOSE:
 		gtk_widget_destroy (properties_dialog);
 		break;
 	case GTK_RESPONSE_HELP:
-		if (panel_toplevel_get_is_attached (dialog->toplevel)) {
-			help_id = "gospanel-550";
-		} else {
-			help_id = "gospanel-28";
-		}
 		panel_show_help (gtk_window_get_screen (GTK_WINDOW (properties_dialog)),
-				 "user-guide", help_id, NULL);
+				 "user-guide", "gospanel-28", NULL);
 		break;
 	default:
 		break;
@@ -795,80 +746,6 @@ panel_properties_dialog_background_notify (GConfClient           *client,
 		panel_properties_dialog_update_background_image (dialog, value);
 }
 
-static void
-panel_properties_dialog_remove_orientation_combo (PanelPropertiesDialog *dialog)
-{
-	GtkContainer *container = GTK_CONTAINER (dialog->general_table);
-	GtkTable     *table     = GTK_TABLE (dialog->general_table);
-
-	g_object_ref (dialog->size_label);
-	g_object_ref (dialog->size_widgets);
-	g_object_ref (dialog->icon_label);
-	g_object_ref (dialog->icon_align);
-
-	gtk_container_remove (container, dialog->orientation_label);
-	gtk_container_remove (container, dialog->orientation_combo);
-	gtk_container_remove (container, dialog->size_label);
-	gtk_container_remove (container, dialog->size_widgets);
-	gtk_container_remove (container, dialog->icon_label);
-	gtk_container_remove (container, dialog->icon_align);
-
-	gtk_table_attach_defaults (table, dialog->size_label,   0, 1, 1, 2);
-	gtk_table_attach_defaults (table, dialog->size_widgets, 1, 2, 1, 2);
-	gtk_table_attach_defaults (table, dialog->icon_label,   0, 1, 2, 3);
-	gtk_table_attach_defaults (table, dialog->icon_align,   1, 2, 2, 3);
-
-	dialog->orientation_label = NULL;
-	dialog->orientation_combo = NULL;
-	g_object_unref (dialog->size_label);
-	g_object_unref (dialog->size_widgets);
-	g_object_unref (dialog->icon_label);
-	g_object_unref (dialog->icon_align);
-
-	gtk_table_resize (table, 3, 2);
-}
-
-static void
-panel_properties_dialog_remove_icon_chooser (PanelPropertiesDialog *dialog)
-{
-	GtkContainer *container = GTK_CONTAINER (dialog->general_table);
-
-	gtk_container_remove (container, dialog->icon_label);
-	gtk_container_remove (container, dialog->icon_align);
-
-	dialog->icon_label = NULL;
-	dialog->icon_align = NULL;
-	dialog->icon_chooser = NULL;
-
-	gtk_table_resize (GTK_TABLE (dialog->general_table), 3, 2);
-}
-
-static void
-panel_properties_dialog_remove_toggles (PanelPropertiesDialog *dialog)
-{
-	GtkContainer *container = GTK_CONTAINER (dialog->general_vbox);
-
-	gtk_container_remove (container, dialog->autohide_toggle);
-	gtk_container_remove (container, dialog->expand_toggle);
-
-	dialog->autohide_toggle = NULL;
-	dialog->expand_toggle   = NULL;
-}
-
-static void
-panel_properties_dialog_update_for_attached (PanelPropertiesDialog *dialog,
-					     gboolean               attached)
-{
-	if (!attached)
-		panel_properties_dialog_remove_icon_chooser (dialog);
-	else {
-		gtk_window_set_title (GTK_WINDOW (dialog->properties_dialog),
-				      _("Drawer Properties"));
-		panel_properties_dialog_remove_toggles (dialog);
-		panel_properties_dialog_remove_orientation_combo (dialog);
-	}
-}
-
 static PanelPropertiesDialog *
 panel_properties_dialog_new (PanelToplevel *toplevel,
 			     GtkBuilder    *gui)
@@ -901,7 +778,6 @@ panel_properties_dialog_new (PanelToplevel *toplevel,
 
 	panel_properties_dialog_setup_orientation_combo  (dialog, gui);
 	panel_properties_dialog_setup_size_spin          (dialog, gui);
-	panel_properties_dialog_setup_icon_chooser       (dialog, gui);
 	panel_properties_dialog_setup_expand_toggle      (dialog, gui);
 	panel_properties_dialog_setup_autohide_toggle    (dialog, gui);
 	panel_properties_dialog_setup_hidebuttons_toggle (dialog, gui);
@@ -932,9 +808,6 @@ panel_properties_dialog_new (PanelToplevel *toplevel,
 			(GConfClientNotifyFunc) panel_properties_dialog_background_notify,
 			dialog);
 
-	panel_properties_dialog_update_for_attached (dialog,
-						     panel_toplevel_get_is_attached (dialog->toplevel));
-
 	panel_toplevel_push_autohide_disabler (dialog->toplevel);
 	panel_widget_register_open_dialog (panel_toplevel_get_panel_widget (dialog->toplevel),
 					   dialog->properties_dialog);
diff --git a/gnome-panel/panel-properties-dialog.ui b/gnome-panel/panel-properties-dialog.ui
index 30bb2ce..dcb795a 100644
--- a/gnome-panel/panel-properties-dialog.ui
+++ b/gnome-panel/panel-properties-dialog.ui
@@ -54,45 +54,11 @@
                 <child>
                   <object class="GtkTable" id="general_table">
                     <property name="visible">True</property>
-                    <property name="n_rows">3</property>
+                    <property name="n_rows">2</property>
                     <property name="n_columns">2</property>
                     <property name="column_spacing">12</property>
                     <property name="row_spacing">6</property>
                     <child>
-                      <object class="GtkAlignment" id="icon_align">
-                        <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="xscale">0</property>
-                        <child>
-                          <placeholder/>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="y_options">GTK_FILL</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="icon_label">
-                        <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="yalign">0</property>
-                        <property name="label" translatable="yes">_Icon:</property>
-                        <property name="use_markup">True</property>
-                        <property name="use_underline">True</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
                       <object class="GtkHBox" id="size_widgets">
                         <property name="visible">True</property>
                         <property name="spacing">6</property>
@@ -229,7 +195,7 @@
                         <child>
                           <object class="GtkLabel" id="label3">
                             <property name="visible">True</property>
-                            <property name="label" translatable="no">    </property>
+                            <property name="label">    </property>
                           </object>
                           <packing>
                             <property name="expand">False</property>
@@ -752,15 +718,15 @@
     </action-widgets>
   </object>
   <object class="GtkAdjustment" id="adjustment1">
-    <property name="value">33.75</property>
     <property name="upper">100</property>
+    <property name="value">33.75</property>
     <property name="step_increment">5</property>
     <property name="page_increment">10</property>
   </object>
   <object class="GtkAdjustment" id="adjustment2">
-    <property name="value">12</property>
     <property name="lower">12</property>
     <property name="upper">120</property>
+    <property name="value">12</property>
     <property name="step_increment">1</property>
     <property name="page_increment">12</property>
   </object>
diff --git a/gnome-panel/panel-struts.c b/gnome-panel/panel-struts.c
index b75bf70..4592a8e 100644
--- a/gnome-panel/panel-struts.c
+++ b/gnome-panel/panel-struts.c
@@ -345,32 +345,17 @@ orientation_to_order (PanelOrientation orientation)
         }
 }
 
-static inline int
-get_toplevel_depth (PanelToplevel *toplevel)
-{
-	int depth = 0;
-
-	while ((toplevel = panel_toplevel_get_attach_toplevel (toplevel)))
-		depth++;
-
-	return depth;
-}
-
 /* Sort in order of
  *   1) screen
  *   2) monitor
- *   3) depth (for drawers)
- *   4) top, bottom, left, right
- *   5) strut_start ascending
- *   6) strut_end descending
+ *   3) top, bottom, left, right
+ *   4) strut_start ascending
+ *   5) strut_end descending
  */
 static int
 panel_struts_compare (const PanelStrut *s1,
 		      const PanelStrut *s2)
 {
-	int s1_depth;
-	int s2_depth;
-
 	if (s1->screen != s2->screen)
 		return gdk_screen_get_number (s1->screen) -
 			gdk_screen_get_number (s2->screen);
@@ -378,11 +363,6 @@ panel_struts_compare (const PanelStrut *s1,
 	if (s1->monitor != s2->monitor)
 		return s1->monitor - s2->monitor;
 
-	s1_depth = get_toplevel_depth (s1->toplevel);
-	s2_depth = get_toplevel_depth (s2->toplevel);
-	if (s1_depth != s2_depth)
-		return s2_depth - s1_depth;
-
         if (s1->orientation != s2->orientation)
                 return orientation_to_order (s1->orientation) -
 			orientation_to_order (s2->orientation);
diff --git a/gnome-panel/panel-toplevel.c b/gnome-panel/panel-toplevel.c
index 57af4ac..262aa9f 100644
--- a/gnome-panel/panel-toplevel.c
+++ b/gnome-panel/panel-toplevel.c
@@ -62,8 +62,6 @@ G_DEFINE_TYPE (PanelToplevel, panel_toplevel, GTK_TYPE_WINDOW)
 #define SNAP_TOLERANCE_FACTOR     6
 #define DEFAULT_ARROW_SIZE        20
 #define HANDLE_SIZE               10
-#define N_ATTACH_TOPLEVEL_SIGNALS 5
-#define N_ATTACH_WIDGET_SIGNALS   5
 
 typedef enum {
 	PANEL_GRAB_OP_NONE,
@@ -149,10 +147,6 @@ struct _PanelToplevelPrivate {
 	GtkWidget              *hide_button_left;
 	GtkWidget              *hide_button_right;
 
-	PanelToplevel          *attach_toplevel;
-	gulong                  attach_toplevel_signals [N_ATTACH_TOPLEVEL_SIGNALS];
-	GtkWidget              *attach_widget;
-	gulong                  attach_widget_signals [N_ATTACH_WIDGET_SIGNALS];
 	gint			n_autohide_disablers;
 
 	guint                   auto_hide : 1;
@@ -179,12 +173,6 @@ struct _PanelToplevelPrivate {
 	 * those. */
 	guint                   position_centered : 1;
 
-	/* The toplevel is "attached" to another widget */
-	guint                   attached : 1;
-
-	/* Hidden temporarily because the attach_toplevel was hidden */
-	guint                   attach_hidden : 1;
-
 	/* More saved grab op state */
 	guint                   orig_x_centered : 1;
 	guint                   orig_y_centered : 1;
@@ -249,19 +237,13 @@ panel_toplevel_list_toplevels (void)
 	return toplevel_list;
 }
 
-/* Is this the last un-attached toplevel? */
 gboolean
-panel_toplevel_is_last_unattached (PanelToplevel *toplevel)
+panel_toplevel_is_last (PanelToplevel *toplevel)
 {
 	GSList *l;
 
-	if (panel_toplevel_get_is_attached (toplevel))
-		return FALSE;
-
 	for (l = toplevel_list; l; l = l->next) {
-		PanelToplevel *t = l->data;
-
-		if (t != toplevel && !panel_toplevel_get_is_attached (t))
+		if (l->data != toplevel)
 			return FALSE;
 	}
 
@@ -422,21 +404,6 @@ panel_toplevel_warp_pointer (PanelToplevel *toplevel)
 }
 
 static void
-panel_toplevel_begin_attached_move (PanelToplevel *toplevel,
-				    gboolean       is_keyboard,
-				    guint32        time_)
-{
-	PanelWidget *attached_panel_widget;
-
-	attached_panel_widget = panel_toplevel_get_panel_widget (toplevel->priv->attach_toplevel);
-
-	panel_widget_applet_drag_start (attached_panel_widget,
-					toplevel->priv->attach_widget,
-					is_keyboard ? PW_DRAG_OFF_CENTER : PW_DRAG_OFF_CURSOR,
-					time_);
-}
-
-static void
 panel_toplevel_begin_grab_op (PanelToplevel   *toplevel,
 			      PanelGrabOpType  op_type,
 			      gboolean         grab_keyboard,
@@ -473,11 +440,6 @@ panel_toplevel_begin_grab_op (PanelToplevel   *toplevel,
 	    ! panel_profile_is_writable_toplevel_size (toplevel))
 		return;
 
-	if (toplevel->priv->attached && op_type == PANEL_GRAB_OP_MOVE) {
-		panel_toplevel_begin_attached_move (toplevel, grab_keyboard, time_);
-		return;
-	}
-
 	widget = GTK_WIDGET (toplevel);
 	window = gtk_widget_get_window (widget);
 
@@ -1280,26 +1242,6 @@ panel_toplevel_update_buttons_showing (PanelToplevel *toplevel)
 		gtk_widget_hide (toplevel->priv->hide_button_left);
 		gtk_widget_hide (toplevel->priv->hide_button_right);
 	}
-
-	if (toplevel->priv->attached) {
-		switch (panel_toplevel_get_orientation (toplevel->priv->attach_toplevel)) {
-		case PANEL_ORIENTATION_TOP:
-			gtk_widget_hide (toplevel->priv->hide_button_top);
-			break;
-		case PANEL_ORIENTATION_BOTTOM:
-			gtk_widget_hide (toplevel->priv->hide_button_bottom);
-			break;
-		case PANEL_ORIENTATION_LEFT:
-			gtk_widget_hide (toplevel->priv->hide_button_left);
-			break;
-		case PANEL_ORIENTATION_RIGHT:
-			gtk_widget_hide (toplevel->priv->hide_button_right);
-			break;
-		default:
-			g_assert_not_reached ();
-			break;
-		}
-	}
 }
 
 static void
@@ -1424,12 +1366,6 @@ panel_toplevel_update_struts (PanelToplevel *toplevel, gboolean end_of_animation
 	if (!toplevel->priv->updated_geometry_initial)
 		return FALSE;
 
-	if (toplevel->priv->attached) {
-		panel_struts_unregister_strut (toplevel);
-		panel_struts_set_window_hint (toplevel);
-		return FALSE;
-	}
-
 	/* In the case of the initial animation, we really want the struts to
 	 * represent what is at the end of the animation, to avoid desktop
 	 * icons jumping around. */
@@ -1650,9 +1586,6 @@ panel_toplevel_construct_description (PanelToplevel *toplevel)
 		},
 	};
 
-	if (toplevel->priv->attached)
-		return N_("Drawer");
-
 	switch (toplevel->priv->orientation) {
 	case PANEL_ORIENTATION_TOP:
 		orientation = 0;
@@ -1712,104 +1645,6 @@ panel_toplevel_update_description (PanelToplevel *toplevel)
 }
 
 static void
-panel_toplevel_update_attached_position (PanelToplevel *toplevel,
-					 gboolean       hidden,
-					 int           *x,
-					 int           *y,
-					 int           *w,
-					 int           *h)
-{
-	GtkAllocation     attach_allocation;
-	PanelOrientation  attach_orientation;
-	GdkRectangle      toplevel_box;
-	GdkRectangle      parent_box;
-	GdkRectangle      attach_box;
-	int               x_origin = 0, y_origin = 0;
-	int               monitor_x, monitor_y;
-	int               monitor_width, monitor_height;
-
-	if (!gtk_widget_get_realized (GTK_WIDGET (toplevel->priv->attach_toplevel)) ||
-	    !gtk_widget_get_realized (toplevel->priv->attach_widget))
-		return;
-
-	gtk_widget_get_allocation (GTK_WIDGET (toplevel->priv->attach_widget), &attach_allocation);
-
-	toplevel_box = toplevel->priv->geometry;
-	parent_box   = toplevel->priv->attach_toplevel->priv->geometry;
-	attach_box   = attach_allocation;
-
-	if (attach_box.x != -1) {
-		gdk_window_get_origin (gtk_widget_get_window (GTK_WIDGET (toplevel->priv->attach_widget)),
-				       &x_origin, &y_origin);
-
-		attach_box.x += x_origin;
-		attach_box.y += y_origin;
-	} else {
-		/* attach_widget isn't allocated. Put the toplevel
-		 * off screen.
-		 */
-		attach_box.x = -toplevel_box.width;
-		attach_box.y = -toplevel_box.height;
-	}
-
-	attach_orientation = panel_toplevel_get_orientation (
-					toplevel->priv->attach_toplevel);
-
-	if (attach_orientation & PANEL_HORIZONTAL_MASK)
-		*x = attach_box.x + attach_box.width / 2  - toplevel_box.width  / 2;
-	else
-		*y = attach_box.y + attach_box.height / 2 - toplevel_box.height / 2;
-
-	switch (attach_orientation) {
-	case PANEL_ORIENTATION_TOP:
-		*y = parent_box.y;
-		if (!hidden)
-			*y += parent_box.height;
-		else
-			*h = parent_box.height;
-		break;
-	case PANEL_ORIENTATION_BOTTOM:
-		*y = parent_box.y;
-		if (!hidden)
-			*y -= toplevel_box.height;
-		else
-			*h = parent_box.height;
-		break;
-	case PANEL_ORIENTATION_LEFT:
-		*x = parent_box.x;
-		if (!hidden)
-			*x += parent_box.width;
-		else
-			*w = parent_box.width;
-		break;
-	case PANEL_ORIENTATION_RIGHT:
-		*x = parent_box.x;
-		if (!hidden)
-			*x -= toplevel_box.width;
-		else
-			*w = parent_box.width;
-		break;
-	default:
-		g_assert_not_reached ();
-		break;
-	}
-
-	panel_toplevel_get_monitor_geometry (toplevel,
-					     &monitor_x,
-					     &monitor_y,
-					     &monitor_width,
-					     &monitor_height);
-
-	*x -= monitor_x;
-	*y -= monitor_y;
-
-	if (toplevel->priv->orientation & PANEL_VERTICAL_MASK)
-		*x = CLAMP (*x, 0, monitor_width  - toplevel->priv->original_width);
-	else
-		*y = CLAMP (*y, 0, monitor_height - toplevel->priv->original_height);
-}
-
-static void
 panel_toplevel_update_normal_position (PanelToplevel *toplevel,
 				       int           *x,
 				       int           *y,
@@ -1822,11 +1657,6 @@ panel_toplevel_update_normal_position (PanelToplevel *toplevel,
 
 	g_assert (x != NULL && y != NULL);
 
-	if (toplevel->priv->attached) {
-		panel_toplevel_update_attached_position (toplevel, FALSE, x, y, w, h);
-		return;
-	}
-
 	panel_toplevel_get_monitor_geometry (
 			toplevel, NULL, NULL, &monitor_width, &monitor_height);
 
@@ -1956,11 +1786,6 @@ panel_toplevel_update_hidden_position (PanelToplevel *toplevel,
 		  toplevel->priv->state == PANEL_STATE_HIDDEN_LEFT ||
 		  toplevel->priv->state == PANEL_STATE_HIDDEN_RIGHT);
 
-	if (toplevel->priv->attached) {
-		panel_toplevel_update_attached_position (toplevel, TRUE, x, y, w, h);
-		return;
-	}
-
 	panel_toplevel_get_monitor_geometry (
 			toplevel, NULL, NULL, &monitor_width, &monitor_height);
 
@@ -2096,10 +1921,7 @@ panel_toplevel_update_animating_position (PanelToplevel *toplevel)
 		 * have a wrong value in a size request event */
 		toplevel->priv->initial_animation_done = TRUE;
 
-		if (toplevel->priv->attached && panel_toplevel_get_is_hidden (toplevel))
-			gtk_widget_unmap (GTK_WIDGET (toplevel));
-		else
-			gtk_widget_queue_resize (GTK_WIDGET (toplevel));
+		gtk_widget_queue_resize (GTK_WIDGET (toplevel));
 
 		if (toplevel->priv->state == PANEL_STATE_NORMAL)
 			g_signal_emit (toplevel, toplevel_signals [UNHIDE_SIGNAL], 0);
@@ -2490,7 +2312,7 @@ panel_toplevel_update_size (PanelToplevel  *toplevel,
 	height = requisition->height;
 
 	if (!toplevel->priv->expand &&
-	    !toplevel->priv->buttons_enabled && !toplevel->priv->attached)
+	    !toplevel->priv->buttons_enabled)
 		non_panel_widget_size = 2 * HANDLE_SIZE;
 	else
 		non_panel_widget_size = 0;
@@ -2506,26 +2328,12 @@ panel_toplevel_update_size (PanelToplevel  *toplevel,
 
 		if (toplevel->priv->expand)
 			width  = monitor_width;
-		else {
-			int max_width;
-
-			if (!toplevel->priv->attached)
-				max_width = monitor_width;
-			else {
-				if (panel_toplevel_get_orientation (toplevel->priv->attach_toplevel) == PANEL_ORIENTATION_LEFT)
-					max_width = monitor_width
-						    - toplevel->priv->geometry.x;
-				else
-					max_width = toplevel->priv->geometry.x +
-						    toplevel->priv->geometry.width;
-			}
-
+		else
 			width = panel_toplevel_update_size_from_hints (
 							toplevel,
 							requisition->width,
-							max_width,
+							monitor_width,
 							non_panel_widget_size);
-		}
 
 		width  = MAX (MINIMUM_WIDTH, width);
 	} else {
@@ -2535,26 +2343,12 @@ panel_toplevel_update_size (PanelToplevel  *toplevel,
 
 		if (toplevel->priv->expand)
 			height = monitor_height;
-		else {
-			int max_height;
-
-			if (!toplevel->priv->attached)
-				max_height = monitor_height;
-			else {
-				if (panel_toplevel_get_orientation (toplevel->priv->attach_toplevel) == PANEL_ORIENTATION_TOP)
-					max_height = monitor_height
-						     - toplevel->priv->geometry.y;
-				else
-					max_height = toplevel->priv->geometry.y +
-						     toplevel->priv->geometry.height;
-			}
-
+		else
 			height = panel_toplevel_update_size_from_hints (
 							toplevel,
 							requisition->height,
-							max_height,
+							monitor_height,
 							non_panel_widget_size);
-		}
 
 		height = MAX (MINIMUM_WIDTH, height);
 	}
@@ -2602,292 +2396,6 @@ panel_toplevel_update_geometry (PanelToplevel  *toplevel,
 	panel_toplevel_update_description (toplevel);
 }
 
-static void
-panel_toplevel_attach_widget_destroyed (PanelToplevel *toplevel)
-{
-	panel_toplevel_detach (toplevel);
-}
-
-static gboolean
-panel_toplevel_attach_widget_configure (PanelToplevel *toplevel)
-{
-	gtk_widget_queue_resize (GTK_WIDGET (toplevel));
-
-	return FALSE;
-}
-
-static void
-panel_toplevel_update_attach_orientation (PanelToplevel *toplevel)
-{
-	PanelOrientation attach_orientation;
-	PanelOrientation orientation;
-
-	attach_orientation =
-		panel_toplevel_get_orientation (toplevel->priv->attach_toplevel);
-
-	orientation = toplevel->priv->orientation;
-
-	switch (attach_orientation) {
-	case PANEL_ORIENTATION_TOP:
-		orientation = PANEL_ORIENTATION_LEFT;
-		break;
-	case PANEL_ORIENTATION_BOTTOM:
-		orientation = PANEL_ORIENTATION_RIGHT;
-		break;
-	case PANEL_ORIENTATION_LEFT:
-		orientation = PANEL_ORIENTATION_TOP;
-		break;
-	case PANEL_ORIENTATION_RIGHT:
-		orientation = PANEL_ORIENTATION_BOTTOM;
-		break;
-	default:
-		g_assert_not_reached ();
-		break;
-	}
-
-	panel_toplevel_set_orientation (toplevel, orientation);
-}
-
-static void
-panel_toplevel_attach_widget_parent_set (PanelToplevel *toplevel,
-					 GtkWidget     *previous_parent,
-					 GtkWidget     *attach_widget)
-{
-	GtkWidget *panel_widget;
-
-	panel_widget = gtk_widget_get_parent (GTK_WIDGET (attach_widget));
-	if (!panel_widget)
-		return;
-
-	g_assert (PANEL_IS_WIDGET (panel_widget));
-
-	toplevel->priv->attach_toplevel = PANEL_WIDGET (panel_widget)->toplevel;
-	panel_toplevel_update_attach_orientation (toplevel);
-	gtk_widget_queue_resize (GTK_WIDGET (toplevel));
-}
-
-static void
-panel_toplevel_attach_toplevel_hiding (PanelToplevel *toplevel)
-{
-	if (!panel_toplevel_get_is_hidden (toplevel)) {
-		panel_toplevel_hide (toplevel, FALSE, -1);
-
-		toplevel->priv->attach_hidden = TRUE;
-	}
-}
-
-static void
-panel_toplevel_attach_toplevel_unhiding (PanelToplevel *toplevel)
-{
-	if (!toplevel->priv->attach_hidden)
-		return;
-
-	toplevel->priv->attach_hidden = FALSE;
-
-	panel_toplevel_unhide (toplevel);
-}
-
-static void
-panel_toplevel_reverse_arrow (PanelToplevel *toplevel,
-			      GtkWidget     *button)
-{
-	GtkArrowType arrow_type;
-
-	arrow_type = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (button), "arrow-type"));
-
-	switch (arrow_type) {
-	case GTK_ARROW_UP:
-		arrow_type = GTK_ARROW_DOWN;
-		break;
-	case GTK_ARROW_DOWN:
-		arrow_type = GTK_ARROW_UP;
-		break;
-	case GTK_ARROW_LEFT:
-		arrow_type = GTK_ARROW_RIGHT;
-		break;
-	case GTK_ARROW_RIGHT:
-		arrow_type = GTK_ARROW_LEFT;
-		break;
-	default:
-		g_assert_not_reached ();
-		break;
-	}
-
-	g_object_set_data (G_OBJECT (button), "arrow-type", GINT_TO_POINTER (arrow_type));
-
-	gtk_arrow_set (GTK_ARROW (gtk_bin_get_child (GTK_BIN (button))), arrow_type, GTK_SHADOW_NONE);
-}
-
-static void
-panel_toplevel_reverse_arrows (PanelToplevel *toplevel)
-{
-	panel_toplevel_reverse_arrow (toplevel, toplevel->priv->hide_button_top);
-	panel_toplevel_reverse_arrow (toplevel, toplevel->priv->hide_button_bottom);
-	panel_toplevel_reverse_arrow (toplevel, toplevel->priv->hide_button_left);
-	panel_toplevel_reverse_arrow (toplevel, toplevel->priv->hide_button_right);
-}
-
-static void
-panel_toplevel_disconnect_attached (PanelToplevel *toplevel)
-{
-	int i;
-
-	for (i = 0; i < N_ATTACH_TOPLEVEL_SIGNALS; i++) {
-		if (!toplevel->priv->attach_toplevel_signals [i])
-			continue;
-
-		g_signal_handler_disconnect (
-			toplevel->priv->attach_toplevel,
-			toplevel->priv->attach_toplevel_signals [i]);
-		toplevel->priv->attach_toplevel_signals [i] = 0;
-	}
-
-	for (i = 0; i < N_ATTACH_WIDGET_SIGNALS; i++) {
-		if (!toplevel->priv->attach_widget_signals [i])
-			continue;
-		
-		g_signal_handler_disconnect (
-			toplevel->priv->attach_widget,
-			toplevel->priv->attach_widget_signals [i]);
-		toplevel->priv->attach_widget_signals [i] = 0;
-	}
-}
-
-static void
-panel_toplevel_connect_attached (PanelToplevel *toplevel)
-{
-	gulong *signals;
-	int     i = 0;
-
-	signals = toplevel->priv->attach_toplevel_signals;
-
-	signals [i++] = g_signal_connect_swapped (
-		toplevel->priv->attach_toplevel, "destroy",
-		G_CALLBACK (panel_toplevel_attach_widget_destroyed), toplevel);
-	signals [i++] = g_signal_connect_swapped (
-		toplevel->priv->attach_toplevel, "notify::orientation",
-		G_CALLBACK (panel_toplevel_update_attach_orientation), toplevel);
-	signals [i++] = g_signal_connect_swapped (
-		toplevel->priv->attach_toplevel, "configure-event",
-		G_CALLBACK (panel_toplevel_attach_widget_configure), toplevel);
-	signals [i++] = g_signal_connect_swapped (
-		toplevel->priv->attach_toplevel, "hiding",
-		G_CALLBACK (panel_toplevel_attach_toplevel_hiding), toplevel);
-	signals [i++] = g_signal_connect_swapped (
-		toplevel->priv->attach_toplevel, "unhiding",
-		G_CALLBACK (panel_toplevel_attach_toplevel_unhiding), toplevel);
-
-	g_assert (i == N_ATTACH_TOPLEVEL_SIGNALS);
-
-	signals = toplevel->priv->attach_widget_signals;
-	i = 0;
-
-	signals [i++] = g_signal_connect_swapped (
-		toplevel->priv->attach_widget, "destroy",
-		G_CALLBACK (panel_toplevel_attach_widget_destroyed), toplevel);
-	signals [i++] = g_signal_connect_swapped (
-		toplevel->priv->attach_widget, "configure-event",
-		G_CALLBACK (panel_toplevel_attach_widget_configure), toplevel);
-	signals [i++] = g_signal_connect_swapped (
-		toplevel->priv->attach_widget, "parent-set",
-		G_CALLBACK (panel_toplevel_attach_widget_parent_set), toplevel);
-	signals [i++] = g_signal_connect_swapped (
-		toplevel->priv->attach_widget, "show",
-		G_CALLBACK (gtk_widget_show), toplevel);
-	signals [i++] = g_signal_connect_swapped (
-		toplevel->priv->attach_widget, "hide",
-		G_CALLBACK (gtk_widget_hide), toplevel);
-
-	g_assert (i == N_ATTACH_WIDGET_SIGNALS);
-} 
-
-void
-panel_toplevel_attach_to_widget (PanelToplevel *toplevel,
-				 PanelToplevel *attach_toplevel,
-				 GtkWidget     *attach_widget)
-{
-	g_return_if_fail (PANEL_IS_TOPLEVEL (toplevel));
-	g_return_if_fail (PANEL_IS_TOPLEVEL (attach_toplevel));
-	g_return_if_fail (GTK_IS_WIDGET (attach_widget));
-
-	if (toplevel->priv->attached)
-		panel_toplevel_disconnect_attached (toplevel);
-
-	toplevel->priv->attached = TRUE;
-
-	/* Cancelling the initial animation for drawers in
-	 * panel_toplevel_initially_hide() is not enough, since this will
-	 * happen only when the toplevel is realized, which might be too late
-	 * for drawers (since it's realized when the drawer is clicked) */
-	toplevel->priv->initial_animation_done = TRUE;
-
-	toplevel->priv->attach_toplevel = attach_toplevel;
-	toplevel->priv->attach_widget   = attach_widget;
-
-	panel_toplevel_connect_attached (toplevel);
-	
-	panel_toplevel_reverse_arrows (toplevel);
-	panel_toplevel_set_expand (toplevel, FALSE);
-	panel_toplevel_update_attach_orientation (toplevel);
-	panel_toplevel_update_hide_buttons (toplevel);
-
-	gtk_window_set_screen (GTK_WINDOW (toplevel),
-			       gtk_widget_get_screen (GTK_WIDGET (attach_toplevel)));
-	panel_toplevel_set_monitor (toplevel,
-			            panel_toplevel_get_monitor (attach_toplevel));
-	if (toplevel->priv->state == PANEL_STATE_NORMAL)
-		panel_toplevel_push_autohide_disabler (toplevel->priv->attach_toplevel);
-
-	gtk_widget_queue_resize (GTK_WIDGET (toplevel));
-}
-
-void
-panel_toplevel_detach (PanelToplevel *toplevel)
-{
-	g_return_if_fail (PANEL_IS_TOPLEVEL (toplevel));
-
-	if (!toplevel->priv->attached)
-		return;
-
-	if (toplevel->priv->state == PANEL_STATE_NORMAL)
-		panel_toplevel_pop_autohide_disabler (toplevel->priv->attach_toplevel);
-
-	panel_toplevel_disconnect_attached (toplevel);
-	
-	panel_toplevel_reverse_arrows (toplevel);
-
-	toplevel->priv->attached = FALSE;
-
-	toplevel->priv->attach_toplevel = NULL;
-	toplevel->priv->attach_widget   = NULL;
-
-	gtk_widget_queue_resize (GTK_WIDGET (toplevel));
-}
-
-gboolean
-panel_toplevel_get_is_attached (PanelToplevel *toplevel)
-{
-	g_return_val_if_fail (PANEL_IS_TOPLEVEL (toplevel), FALSE);
-
-	return toplevel->priv->attached;
-}
-
-PanelToplevel *
-panel_toplevel_get_attach_toplevel (PanelToplevel *toplevel)
-{
-	g_return_val_if_fail (PANEL_IS_TOPLEVEL (toplevel), NULL);
-
-	return toplevel->priv->attach_toplevel;
-}
-
-GtkWidget *
-panel_toplevel_get_attach_widget (PanelToplevel *toplevel)
-{
-	g_return_val_if_fail (PANEL_IS_TOPLEVEL (toplevel), NULL);
-
-	return toplevel->priv->attach_widget;
-}
-
 static gboolean
 panel_toplevel_popup_panel_menu (PanelToplevel *toplevel)
 {
@@ -2987,16 +2495,13 @@ panel_toplevel_move_resize_window (PanelToplevel *toplevel,
 static void
 panel_toplevel_initially_hide (PanelToplevel *toplevel)
 {
-	if (!toplevel->priv->attached) {
-		toplevel->priv->initial_animation_done = FALSE;
+	toplevel->priv->initial_animation_done = FALSE;
 
-		/* We start the panel off hidden until all the applets are
-		 * loaded, and then finally slide it down when it's ready to be
-		 * used */
-		toplevel->priv->state = PANEL_STATE_AUTO_HIDDEN;
-		gtk_widget_queue_resize (GTK_WIDGET (toplevel));
-	} else
-		toplevel->priv->initial_animation_done = TRUE;
+	/* We start the panel off hidden until all the applets are
+	 * loaded, and then finally slide it down when it's ready to be
+	 * used */
+	toplevel->priv->state = PANEL_STATE_AUTO_HIDDEN;
+	gtk_widget_queue_resize (GTK_WIDGET (toplevel));
 }
 
 static void
@@ -3054,14 +2559,6 @@ panel_toplevel_dispose (GObject *widget)
 {
 	PanelToplevel *toplevel = (PanelToplevel *) widget;
 	
-	if (toplevel->priv->attached) {
-		panel_toplevel_disconnect_attached (toplevel);
-		toplevel->priv->attached = FALSE;
-
-		toplevel->priv->attach_toplevel = NULL;
-		toplevel->priv->attach_widget   = NULL;
-	}
-
 	panel_toplevel_disconnect_timeouts (toplevel);
 
         G_OBJECT_CLASS (panel_toplevel_parent_class)->dispose (widget);
@@ -3176,8 +2673,7 @@ panel_toplevel_size_allocate (GtkWidget     *widget,
 	gtk_widget_set_allocation (widget, allocation);
 
 	if (toplevel->priv->expand ||
-	    toplevel->priv->buttons_enabled ||
-	    toplevel->priv->attached)
+	    toplevel->priv->buttons_enabled)
 		challoc = *allocation;
 	else {
 		if (toplevel->priv->orientation & PANEL_HORIZONTAL_MASK) {
@@ -3255,8 +2751,7 @@ panel_toplevel_draw (GtkWidget *widget,
         panel_frame_draw (widget, cr, edges);
 
 	if (toplevel->priv->expand ||
-	    toplevel->priv->buttons_enabled ||
-	    toplevel->priv->attached)
+	    toplevel->priv->buttons_enabled)
 		return retval;
 
 	window = gtk_widget_get_window (widget);
@@ -3353,7 +2848,7 @@ panel_toplevel_button_press_event (GtkWidget      *widget,
 	/* Get the mouse-button modifier from metacity so that only intentional
 	 * moves are considered. We don't this for non-expanded panels since we
 	 * only have the handles that the user can grab. */
-	if ((toplevel->priv->expand || toplevel->priv->attached) &&
+	if (toplevel->priv->expand &&
 	    (event->state & GDK_MODIFIER_MASK) != panel_bindings_get_mouse_button_modifier_keymask ())
 		return FALSE;
 
@@ -3573,14 +3068,6 @@ panel_toplevel_start_animation (PanelToplevel *toplevel)
 		return;
 	}
 
-	if (toplevel->priv->attached) {
-		/* Re-map unmapped attached toplevels */
-		if (!gtk_widget_get_mapped (GTK_WIDGET (toplevel)))
-			gtk_widget_map (GTK_WIDGET (toplevel));
-
-		gtk_window_present (GTK_WINDOW (toplevel->priv->attach_toplevel));
-	}
-
 	g_get_current_time (&toplevel->priv->animation_start_time);
 
 	t = panel_toplevel_get_animation_time (toplevel);
@@ -3604,9 +3091,6 @@ panel_toplevel_hide (PanelToplevel    *toplevel,
 
 	g_signal_emit (toplevel, toplevel_signals [HIDE_SIGNAL], 0);
 
-	if (toplevel->priv->attach_toplevel)
-		panel_toplevel_pop_autohide_disabler (toplevel->priv->attach_toplevel);
-
 	if (auto_hide)
 		toplevel->priv->state = PANEL_STATE_AUTO_HIDDEN;
 	else {
@@ -3644,8 +3128,6 @@ panel_toplevel_hide (PanelToplevel    *toplevel,
 
 	if (toplevel->priv->animate && gtk_widget_get_realized (GTK_WIDGET (toplevel)))
 		panel_toplevel_start_animation (toplevel);
-	else if (toplevel->priv->attached)
-		gtk_widget_hide (GTK_WIDGET (toplevel));
 
 	gtk_widget_queue_resize (GTK_WIDGET (toplevel));
 }
@@ -3687,13 +3169,8 @@ panel_toplevel_unhide (PanelToplevel *toplevel)
 
 	panel_toplevel_update_hide_buttons (toplevel);
 
-	if (toplevel->priv->attach_toplevel)
-		panel_toplevel_push_autohide_disabler (toplevel->priv->attach_toplevel);
-
 	if (toplevel->priv->animate && gtk_widget_get_realized (GTK_WIDGET (toplevel)))
 		panel_toplevel_start_animation (toplevel);
-	else if (toplevel->priv->attached)
-		gtk_widget_show (GTK_WIDGET (toplevel));
 
 	gtk_widget_queue_resize (GTK_WIDGET (toplevel));
 
@@ -4121,15 +3598,6 @@ panel_toplevel_finalize (GObject *object)
 		toplevel->priv->gtk_settings = NULL;
 	}
 
-	if (toplevel->priv->attached) {
-		panel_toplevel_disconnect_attached (toplevel);
-
-		toplevel->priv->attached = FALSE;
-
-		toplevel->priv->attach_toplevel = NULL;
-		toplevel->priv->attach_widget   = NULL;
-	}
-
 	if (toplevel->priv->description)
 		g_free (toplevel->priv->description);
 	toplevel->priv->description = NULL;
@@ -4572,8 +4040,6 @@ panel_toplevel_setup_widgets (PanelToplevel *toplevel)
 static void
 panel_toplevel_init (PanelToplevel *toplevel)
 {
-	int i;
-
 	toplevel->priv = PANEL_TOPLEVEL_GET_PRIVATE (toplevel);
 
 	toplevel->priv->expand          = TRUE;
@@ -4632,15 +4098,8 @@ panel_toplevel_init (PanelToplevel *toplevel)
 	toplevel->priv->hide_button_left   = NULL;
 	toplevel->priv->hide_button_right  = NULL;
 
-	toplevel->priv->attach_toplevel = NULL;
-	toplevel->priv->attach_widget   = NULL;
 	toplevel->priv->n_autohide_disablers = 0;
 
-	for (i = 0; i < N_ATTACH_TOPLEVEL_SIGNALS; i++)
-		toplevel->priv->attach_toplevel_signals [i] = 0;
-	for (i = 0; i < N_ATTACH_WIDGET_SIGNALS; i++)
-		toplevel->priv->attach_widget_signals [i] = 0;
-
 	toplevel->priv->auto_hide         = FALSE;
 	toplevel->priv->buttons_enabled   = TRUE;
 	toplevel->priv->arrows_enabled    = TRUE;
@@ -4649,8 +4108,6 @@ panel_toplevel_init (PanelToplevel *toplevel)
 	toplevel->priv->animating         = FALSE;
 	toplevel->priv->grab_is_keyboard  = FALSE;
 	toplevel->priv->position_centered = FALSE;
-	toplevel->priv->attached          = FALSE;
-	toplevel->priv->attach_hidden     = FALSE;
 	toplevel->priv->updated_geometry_initial = FALSE;
 	toplevel->priv->initial_animation_done   = FALSE;
 
diff --git a/gnome-panel/panel-toplevel.h b/gnome-panel/panel-toplevel.h
index 60400ea..35142d5 100644
--- a/gnome-panel/panel-toplevel.h
+++ b/gnome-panel/panel-toplevel.h
@@ -117,14 +117,6 @@ int                  panel_toplevel_get_monitor            (PanelToplevel
 void                 panel_toplevel_rotate                 (PanelToplevel       *toplevel,
 							    gboolean             clockwise);
 
-void                 panel_toplevel_attach_to_widget       (PanelToplevel       *toplevel,
-							    PanelToplevel       *attach_toplevel,
-							    GtkWidget           *attach_widget);
-void                 panel_toplevel_detach                 (PanelToplevel       *toplevel);
-gboolean             panel_toplevel_get_is_attached        (PanelToplevel       *toplevel);
-PanelToplevel       *panel_toplevel_get_attach_toplevel    (PanelToplevel       *toplevel);
-GtkWidget           *panel_toplevel_get_attach_widget      (PanelToplevel       *toplevel);
-
 gboolean             panel_toplevel_get_is_floating	   (PanelToplevel       *toplevel);
 
 gboolean             panel_toplevel_get_is_hidden          (PanelToplevel       *toplevel);
@@ -165,7 +157,7 @@ void                 panel_toplevel_set_enable_arrows      (PanelToplevel
 gboolean             panel_toplevel_get_enable_arrows      (PanelToplevel       *toplevel);
 void                 panel_toplevel_update_edges           (PanelToplevel       *toplevel);
 
-gboolean             panel_toplevel_is_last_unattached     (PanelToplevel       *toplevel);
+gboolean             panel_toplevel_is_last                (PanelToplevel       *toplevel);
 int                  panel_toplevel_get_minimum_size       (PanelToplevel *toplevel);
 int                  panel_toplevel_get_maximum_size       (PanelToplevel *toplevel);
 GSList              *panel_toplevel_list_toplevels         (void);
diff --git a/gnome-panel/panel-widget.c b/gnome-panel/panel-widget.c
index 06f6119..bcd89d1 100644
--- a/gnome-panel/panel-widget.c
+++ b/gnome-panel/panel-widget.c
@@ -427,76 +427,6 @@ panel_widget_class_init (PanelWidgetClass *class)
 }
 
 static void
-remove_panel_from_forbidden(PanelWidget *panel, PanelWidget *r)
-{
-	GSList *list;
-	GtkWidget *parent_panel;
-	
-	g_return_if_fail(PANEL_IS_WIDGET(panel));
-	g_return_if_fail(PANEL_IS_WIDGET(r));
-
-	if(!panel->master_widget)
-		return;
-
-	list = g_object_get_data (G_OBJECT(panel->master_widget),
-				  PANEL_APPLET_FORBIDDEN_PANELS);
-	if(list) {
-		list = g_slist_remove(list,r);
-		g_object_set_data (G_OBJECT(panel->master_widget),
-				   PANEL_APPLET_FORBIDDEN_PANELS,
-				   list);
-	}
-	parent_panel = gtk_widget_get_parent (panel->master_widget);
-	if (parent_panel)
-		remove_panel_from_forbidden(PANEL_WIDGET(parent_panel), r);
-}
-
-static void
-add_panel_to_forbidden(PanelWidget *panel, PanelWidget *r)
-{
-	GSList *list;
-	GtkWidget *parent_panel;
-
-	g_return_if_fail(PANEL_IS_WIDGET(panel));
-	g_return_if_fail(PANEL_IS_WIDGET(r));
-
-	if(!panel->master_widget)
-		return;
-
-	list = g_object_get_data (G_OBJECT(panel->master_widget),
-				  PANEL_APPLET_FORBIDDEN_PANELS);
-	if(g_slist_find(list,r)==NULL) {
-		list = g_slist_prepend(list,r);
-
-		g_object_set_data (G_OBJECT(panel->master_widget),
-				   PANEL_APPLET_FORBIDDEN_PANELS,
-				   list);
-	}
-	parent_panel = gtk_widget_get_parent (panel->master_widget);
-	if (parent_panel)
-		add_panel_to_forbidden(PANEL_WIDGET(parent_panel), r);
-}
-
-static void
-run_up_forbidden(PanelWidget *panel,
-		 void (*runfunc)(PanelWidget *,PanelWidget *))
-{
-	GList *list;
-
-	g_return_if_fail(PANEL_IS_WIDGET(panel));
-
-	for(list = panel->applet_list;list!=NULL;list = g_list_next(list)) {
-		AppletData *ad = list->data;
-		PanelWidget *p =
-			g_object_get_data (G_OBJECT(ad->applet),
-					   PANEL_APPLET_ASSOC_PANEL_KEY);
-		if(p)
-			run_up_forbidden(p,runfunc);
-	}
-	(*runfunc)(panel,panel);
-}
-
-static void
 panel_widget_reset_focus (GtkContainer *container,
                           GtkWidget    *widget)
 {
@@ -541,28 +471,16 @@ static void
 panel_widget_cadd (GtkContainer *container,
 		   GtkWidget    *widget)
 {
-	PanelWidget *p;
-
 	g_return_if_fail (PANEL_IS_WIDGET (container));
 	g_return_if_fail (GTK_IS_WIDGET (widget));
 
 	panel_widget_add (PANEL_WIDGET (container), widget, FALSE, 0, FALSE);
-
-	p = g_object_get_data (G_OBJECT(widget),
-			       PANEL_APPLET_ASSOC_PANEL_KEY);
-	if (p) {
-		panel_toplevel_attach_to_widget (p->toplevel,
-						 PANEL_WIDGET (container)->toplevel,
-						 widget);
-		run_up_forbidden (p, add_panel_to_forbidden);
-	}
 }
 
 static void
 panel_widget_cremove (GtkContainer *container, GtkWidget *widget)
 {
 	AppletData *ad;
-	PanelWidget *p;
 	PanelWidget *panel;
 
 	g_return_if_fail (PANEL_IS_WIDGET (container));
@@ -571,13 +489,6 @@ panel_widget_cremove (GtkContainer *container, GtkWidget *widget)
 	panel = PANEL_WIDGET (container);
 	
 	ad = g_object_get_data (G_OBJECT (widget), PANEL_APPLET_DATA);
-	p = g_object_get_data (G_OBJECT (widget),
-				 PANEL_APPLET_ASSOC_PANEL_KEY);
-
-	if (p != NULL) {
-		panel_toplevel_detach (p->toplevel);
-		run_up_forbidden (p, remove_panel_from_forbidden);
-	}
 
 	panel_widget_reset_focus (container, widget);
 
@@ -1722,15 +1633,6 @@ panel_widget_dispose (GObject *obj)
 
 	panel_widget_destroy_open_dialogs (panel);
 
-	if (panel->master_widget != NULL) {
-		g_object_set_data (G_OBJECT (panel->master_widget),
-				   PANEL_APPLET_ASSOC_PANEL_KEY,
-				   NULL);
-		g_object_remove_weak_pointer (G_OBJECT (panel->master_widget),
-					      (gpointer *) &panel->master_widget);
-		panel->master_widget = NULL;
-	}
-
         G_OBJECT_CLASS (panel_widget_parent_class)->dispose (obj);
 }
 
@@ -1748,7 +1650,6 @@ panel_widget_init (PanelWidget *panel)
 	panel->thick         = PANEL_MINIMUM_WIDTH;
 	panel->size          = G_MAXINT;
 	panel->applet_list   = NULL;
-	panel->master_widget = NULL;
 	panel->drop_widget   = widget;
 	panel->open_dialogs  = NULL;
 
@@ -2116,7 +2017,6 @@ panel_widget_applet_move_to_cursor (PanelWidget *panel)
 	int pos;
 	int movement;
 	GtkWidget *applet;
-	GSList *forb;
 	GdkModifierType mods;
 	AppletData *ad;
 
@@ -2131,8 +2031,6 @@ panel_widget_applet_move_to_cursor (PanelWidget *panel)
 
 	applet = ad->applet;
 	g_assert(GTK_IS_WIDGET(applet));
-	forb = g_object_get_data (G_OBJECT(applet),
-				  PANEL_APPLET_FORBIDDEN_PANELS);
 
 	if(!panel_widget_is_cursor(panel,10)) {
 		GSList *list;
@@ -2147,7 +2045,6 @@ panel_widget_applet_move_to_cursor (PanelWidget *panel)
 			    panel_widget_is_cursor (new_panel,10) &&
 			    panel_screen_from_panel_widget (panel) ==
 			    panel_screen_from_panel_widget (new_panel) &&
-			    !g_slist_find (forb, new_panel) &&
 			    !panel_lockdown_get_locked_down ()) {
 				pos = panel_widget_get_moveby (new_panel, 0, ad->drag_off);
 
@@ -2531,15 +2428,6 @@ panel_widget_find_empty_pos(PanelWidget *panel, int pos)
 	}
 }
 
-void
-panel_widget_add_forbidden (PanelWidget *panel)
-{
-	g_return_if_fail (panel != NULL);
-	g_return_if_fail (PANEL_IS_WIDGET (panel));
-
-	add_panel_to_forbidden (panel, panel);
-}
-
 int
 panel_widget_add (PanelWidget *panel,
 		  GtkWidget   *applet,
@@ -2882,9 +2770,6 @@ panel_widget_real_focus (GtkWidget        *widget,
 void 
 panel_widget_focus (PanelWidget *panel_widget)
 {
-	if (panel_toplevel_get_is_attached (panel_widget->toplevel))
-		return;
-
 	/*
          * Set the focus back on the panel; we unset the focus child so that
 	 * the next time focus is inside the panel we do not remember the
diff --git a/gnome-panel/panel-widget.h b/gnome-panel/panel-widget.h
index a1ac3f1..b3e0f4d 100644
--- a/gnome-panel/panel-widget.h
+++ b/gnome-panel/panel-widget.h
@@ -27,8 +27,6 @@ G_BEGIN_DECLS
 
 #define PANEL_MINIMUM_WIDTH 12
 
-#define PANEL_APPLET_ASSOC_PANEL_KEY "panel_applet_assoc_panel_key"
-#define PANEL_APPLET_FORBIDDEN_PANELS "panel_applet_forbidden_panels"
 #define PANEL_APPLET_DATA "panel_applet_data"
 
 #ifndef TYPEDEF_PANEL_WIDGET
@@ -99,8 +97,6 @@ struct _PanelWidget
 
 	PanelBackground background;
 
-	GtkWidget      *master_widget;
-	
 	GtkWidget      *drop_widget;     /* widget that the panel checks for
 	                                  * the cursor on drops usually the
 	                                  * panel widget itself
@@ -156,9 +152,6 @@ int		panel_widget_add		(PanelWidget *panel,
 						 int          pos,
 						 gboolean     insert_at_pos);
 
-/*needs to be called for drawers after add*/
-void		panel_widget_add_forbidden	(PanelWidget *panel);
-
 /*move applet to a different panel*/
 int		panel_widget_reparent		(PanelWidget *old_panel,
 						 PanelWidget *new_panel,
diff --git a/gnome-panel/panel.c b/gnome-panel/panel.c
index 90cfc51..9649a5c 100644
--- a/gnome-panel/panel.c
+++ b/gnome-panel/panel.c
@@ -25,7 +25,6 @@
 #include "panel.h"
 
 #include "applet.h"
-#include "drawer.h"
 #include "button-widget.h"
 #include "launcher.h"
 #include "panel-bindings.h"
@@ -82,20 +81,6 @@ orientation_change (AppletInfo  *info,
 	case PANEL_OBJECT_MENU_BAR:
 		panel_menu_bar_set_orientation (PANEL_MENU_BAR (info->widget), orientation);
 		break;
-	case PANEL_OBJECT_DRAWER: {
-		Drawer      *drawer = info->data;
-		PanelWidget *panel_widget;
-
-		panel_widget = panel_toplevel_get_panel_widget (drawer->toplevel);
-
-		button_widget_set_orientation (BUTTON_WIDGET (info->widget), orientation);
-
-		gtk_widget_queue_resize (GTK_WIDGET (drawer->toplevel));
-		gtk_container_foreach (GTK_CONTAINER (panel_widget),
-				       orient_change_foreach,
-				       panel_widget);
-		}
-		break;
 	case PANEL_OBJECT_SEPARATOR:
 		panel_separator_set_orientation (PANEL_SEPARATOR (info->widget),
 						 orientation);
@@ -208,23 +193,6 @@ panel_applet_added(GtkWidget *widget, GtkWidget *applet, gpointer data)
 	back_change(info,PANEL_WIDGET(widget));
 }
 
-static void
-panel_applet_removed(GtkWidget *widget, GtkWidget *applet, gpointer data)
-{
-	PanelToplevel *toplevel;
-	AppletInfo    *info;
-
-	toplevel = PANEL_WIDGET (widget)->toplevel;
-	info = g_object_get_data (G_OBJECT (applet), "applet_info");
-
-	if (info->type == PANEL_OBJECT_DRAWER) {
-		Drawer *drawer = info->data;
-
-		if (drawer->toplevel)
-			panel_toplevel_queue_auto_hide (toplevel);
-	}
-}
-
 static gboolean
 deactivate_idle (gpointer data)
 {
@@ -814,14 +782,10 @@ move_applet (PanelWidget *panel, int pos, int applet_index)
 	    info->widget != NULL &&
 	    parent != NULL &&
 	    PANEL_IS_WIDGET (parent)) {
-		GSList *forb;
-		forb = g_object_get_data (G_OBJECT (info->widget),
-					  PANEL_APPLET_FORBIDDEN_PANELS);
-		if ( ! g_slist_find (forb, panel))
-			panel_widget_reparent (PANEL_WIDGET (parent),
-					       panel,
-					       info->widget,
-					       pos);
+		panel_widget_reparent (PANEL_WIDGET (parent),
+				       panel,
+				       info->widget,
+				       pos);
 	}
 
 	return TRUE;
@@ -838,10 +802,9 @@ drop_internal_applet (PanelWidget *panel, int pos, const char *applet_type,
 	if (applet_type == NULL)
 		return FALSE;
 
-	if (sscanf (applet_type, "MENU:%d", &applet_index) == 1 ||
-	    sscanf (applet_type, "DRAWER:%d", &applet_index) == 1) {
+	if (sscanf (applet_type, "MENU:%d", &applet_index) == 1) {
 		if (action != GDK_ACTION_MOVE)
-			g_warning ("Only MOVE supported for menus/drawers");
+			g_warning ("Only MOVE supported for menus");
 		success = move_applet (panel, pos, applet_index);
 
 	} else if (strncmp (applet_type, "MENU:", strlen ("MENU:")) == 0) {
@@ -866,14 +829,6 @@ drop_internal_applet (PanelWidget *panel, int pos, const char *applet_type,
 			g_free (menu_filename);
 		}
 
-	} else if (!strcmp (applet_type, "DRAWER:NEW")) {
-		if (panel_profile_id_lists_are_writable ()) {
-			panel_drawer_create (panel->toplevel, pos, NULL, FALSE, NULL);
-			success = TRUE;
-		} else {
-			success = FALSE;
-		}
-
 	} else if (!strncmp (applet_type, "ACTION:", strlen ("ACTION:"))) {
 		if (panel_profile_id_lists_are_writable ()) {
 			remove_applet = panel_action_button_load_from_drag (
@@ -1028,22 +983,6 @@ panel_check_drop_forbidden (PanelWidget    *panel,
 	if (panel_lockdown_get_locked_down ())
 		return FALSE;
 
-	if (info == TARGET_APPLET_INTERNAL) {
-		GtkWidget *source_widget;
-
-		source_widget = gtk_drag_get_source_widget (context);
-
-		if (BUTTON_IS_WIDGET (source_widget)) {
-			GSList *forb;
-
-			forb = g_object_get_data (G_OBJECT (source_widget),
-						  PANEL_APPLET_FORBIDDEN_PANELS);
-
-			if (g_slist_find (forb, panel))
-				return FALSE;
-		}
-	}
-
 	if (info == TARGET_ICON_INTERNAL ||
 	    info == TARGET_APPLET_INTERNAL) {
 		if (gdk_drag_context_get_actions (context) & GDK_ACTION_MOVE)
@@ -1244,10 +1183,6 @@ panel_widget_setup(PanelWidget *panel)
 			  G_CALLBACK(panel_applet_added),
 			  NULL);
 	g_signal_connect (G_OBJECT(panel),
-			  "applet_removed",
-			  G_CALLBACK(panel_applet_removed),
-			  NULL);
-	g_signal_connect (G_OBJECT(panel),
 			  "applet_move",
 			  G_CALLBACK(panel_applet_move),
 			  NULL);
@@ -1342,20 +1277,7 @@ panel_is_applet_right_stick (GtkWidget *applet)
 static void
 panel_delete_without_query (PanelToplevel *toplevel)
 {
-	PanelWidget *panel_widget;
-
-	panel_widget = panel_toplevel_get_panel_widget (toplevel);
-
-	if (panel_toplevel_get_is_attached (toplevel) &&
-	    panel_widget->master_widget) {
-		AppletInfo *info;
-
-		info = g_object_get_data (G_OBJECT (panel_widget->master_widget),
-					  "applet_info");
-
-		panel_profile_delete_object (info);
-	} else
-		panel_profile_delete_toplevel (toplevel);
+	panel_profile_delete_toplevel (toplevel);
 } 
 
 static void
@@ -1385,28 +1307,19 @@ panel_deletion_dialog (PanelToplevel *toplevel)
 {
 
 	GtkWidget *dialog;
-	char *text1;
-	char *text2;
-
-	if (panel_toplevel_get_is_attached (toplevel)) {
-		text1 = _("Delete this drawer?");
-		text2 = _("When a drawer is deleted, the drawer and its\n"
-			 "settings are lost.");
-	} else {
-		text1 = _("Delete this panel?");
-		text2 = _("When a panel is deleted, the panel and its\n"
-			 "settings are lost.");
-	}
 
 	dialog = gtk_message_dialog_new (
 			GTK_WINDOW (toplevel),
 			GTK_DIALOG_MODAL,
 			GTK_MESSAGE_WARNING,
 			GTK_BUTTONS_NONE,
-			"%s", text1);
+			"%s", _("Delete this panel?"));
 	
 	gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
-	                                          "%s", text2);	
+	                                          "%s",
+						  _("When a panel is deleted, the panel and its\n"
+						  "settings are lost."));
+
 	gtk_dialog_add_buttons (GTK_DIALOG (dialog),
 				GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 				GTK_STOCK_DELETE, GTK_RESPONSE_OK,
diff --git a/icons/16x16/Makefile.am b/icons/16x16/Makefile.am
index 5ef8316..8ff7532 100644
--- a/icons/16x16/Makefile.am
+++ b/icons/16x16/Makefile.am
@@ -4,7 +4,6 @@ iconsdir = $(datadir)/icons/hicolor/$(size)/apps
 
 icons_DATA =					\
 	gnome-panel-clock.png			\
-	gnome-panel-drawer.png			\
 	gnome-panel-fish.png			\
 	gnome-panel-force-quit.png		\
 	gnome-panel-launcher.png		\
@@ -17,7 +16,6 @@ icons_DATA =					\
 
 icons_SOURCE =					\
 	gnome-panel-clock.xcf.bz2		\
-	gnome-panel-drawer.svg			\
 	gnome-panel-fish.xcf.bz2		\
 	gnome-panel-force-quit.svg		\
 	gnome-panel-launcher.svg		\
diff --git a/icons/22x22/Makefile.am b/icons/22x22/Makefile.am
index 5c65cdd..b5b5788 100644
--- a/icons/22x22/Makefile.am
+++ b/icons/22x22/Makefile.am
@@ -4,7 +4,6 @@ iconsdir = $(datadir)/icons/hicolor/$(size)/apps
 
 icons_DATA =					\
 	gnome-panel-clock.png			\
-	gnome-panel-drawer.png			\
 	gnome-panel-fish.png			\
 	gnome-panel-force-quit.png		\
 	gnome-panel-launcher.png		\
@@ -17,7 +16,6 @@ icons_DATA =					\
 
 icons_SOURCE =					\
 	gnome-panel-clock.svg			\
-	gnome-panel-drawer.svg			\
 	gnome-panel-fish.xcf.bz2		\
 	gnome-panel-force-quit.xcf.bz2		\
 	gnome-panel-launcher.svg		\
diff --git a/icons/24x24/Makefile.am b/icons/24x24/Makefile.am
index b12d140..3b7d796 100644
--- a/icons/24x24/Makefile.am
+++ b/icons/24x24/Makefile.am
@@ -4,7 +4,6 @@ iconsdir = $(datadir)/icons/hicolor/$(size)/apps
 
 icons_DATA =					\
 	gnome-panel-clock.png			\
-	gnome-panel-drawer.png			\
 	gnome-panel-fish.png			\
 	gnome-panel-force-quit.png		\
 	gnome-panel-launcher.png		\
diff --git a/icons/32x32/Makefile.am b/icons/32x32/Makefile.am
index 58ff797..a9f1fdb 100644
--- a/icons/32x32/Makefile.am
+++ b/icons/32x32/Makefile.am
@@ -4,7 +4,6 @@ iconsdir = $(datadir)/icons/hicolor/$(size)/apps
 
 icons_DATA =					\
 	gnome-panel-clock.png			\
-	gnome-panel-drawer.png			\
 	gnome-panel-fish.png			\
 	gnome-panel-force-quit.png		\
 	gnome-panel-launcher.png		\
@@ -17,7 +16,6 @@ icons_DATA =					\
 
 icons_SOURCE =					\
 	gnome-panel-clock.svg			\
-	gnome-panel-drawer.svg			\
 	gnome-panel-fish.svg			\
 	gnome-panel-force-quit.svg		\
 	gnome-panel-launcher.svg		\
diff --git a/icons/scalable/Makefile.am b/icons/scalable/Makefile.am
index ca3f2cc..a343d9f 100644
--- a/icons/scalable/Makefile.am
+++ b/icons/scalable/Makefile.am
@@ -4,7 +4,6 @@ iconsdir = $(datadir)/icons/hicolor/$(size)/apps
 
 icons_DATA =					\
 	gnome-panel-clock.svg			\
-	gnome-panel-drawer.svg			\
 	gnome-panel-fish.svg			\
 	gnome-panel-force-quit.svg		\
 	gnome-panel-launcher.svg		\



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]