Index: gnome-panel/gnome-panel/ChangeLog
===================================================================
RCS file: /export/cvs/gnome-2.0/gnome-panel/gnome-panel/ChangeLog,v
retrieving revision 1.2248
diff -p -u -5 -r1.2248 ChangeLog
--- gnome-panel/gnome-panel/ChangeLog	2003/10/21 14:56:16	1.2248
+++ gnome-panel/gnome-panel/ChangeLog	2003/10/23 08:28:44
@@ -1,5 +1,14 @@
+2003-10-23  Arvind Samptur  <arvind.samptur@wipro.com>
+
+	* panel-toplevel.[ch]: (panel_toplevel_disconnect_attached_toplevel_signal)
+	(panel_toplevel_disconnect_attached_widget_signal): Methods to disconnect the signals
+	
+	* drawer.c: (create_drawer_applet): Use panel_toplevel_disconnect_attached_toplevel_signal()
+	to disable unhide.
+	Fixes bug #121382
+
 2003-10-21  Vincent Untz  <vincent@vuntz.net>
 
 	* menu-ditem.c: (ditem_properties_clicked), (ditem_properties_changed)
 	(set_ditem_sensitive), (panel_edit_dentry), (panel_edit_direntry):
 	set the Revert button insensitive when there is no revert action
Index: gnome-panel/gnome-panel/drawer.c
===================================================================
RCS file: /export/cvs/gnome-2.0/gnome-panel/gnome-panel/drawer.c,v
retrieving revision 1.180
diff -p -u -5 -r1.180 drawer.c
--- gnome-panel/gnome-panel/drawer.c	2003/09/19 03:59:43	1.180
+++ gnome-panel/gnome-panel/drawer.c	2003/10/23 08:28:44
@@ -370,10 +370,13 @@ create_drawer_applet (PanelToplevel    *
 			  G_CALLBACK (key_press_drawer_widget), drawer);
 
 	panel_toplevel_attach_to_widget (
 		toplevel, parent_toplevel, GTK_WIDGET (drawer->button));
 
+	panel_toplevel_disconnect_attached_toplevel_signal (toplevel,
+						   	    ATTACH_TOPLEVEL_UNHIDING);
+						
 	return drawer;
 }
 
 static PanelToplevel *
 create_drawer_toplevel (const char *drawer_id)
Index: gnome-panel/gnome-panel/panel-toplevel.c
===================================================================
RCS file: /export/cvs/gnome-2.0/gnome-panel/gnome-panel/panel-toplevel.c,v
retrieving revision 1.39
diff -p -u -5 -r1.39 panel-toplevel.c
--- gnome-panel/gnome-panel/panel-toplevel.c	2003/10/14 15:16:24	1.39
+++ gnome-panel/gnome-panel/panel-toplevel.c	2003/10/23 08:28:46
@@ -4628,5 +4628,23 @@ panel_toplevel_set_locked_down (PanelTop
 {
 	g_return_if_fail (PANEL_IS_TOPLEVEL (toplevel));
 
 	toplevel->priv->locked_down = locked_down ? 1 : 0;
 }
+
+void panel_toplevel_disconnect_attached_toplevel_signal (PanelToplevel *toplevel,
+						PanelToplevelAttachSignal attached_signal)
+{
+	g_signal_handler_disconnect (toplevel->priv->attach_toplevel,
+				     toplevel->priv->attach_toplevel_signals [attached_signal]);
+
+	toplevel->priv->attach_toplevel_signals [attached_signal] = 0;
+}
+
+void panel_toplevel_disconnect_attached_widget_signal (PanelToplevel *toplevel,
+						       PanelToplevelAttachWidgetSignal attached_signal)
+{
+	g_signal_handler_disconnect (toplevel->priv->attach_toplevel,
+				     toplevel->priv->attach_widget_signals [attached_signal]);
+
+	toplevel->priv->attach_widget_signals [attached_signal] = 0;
+}
Index: gnome-panel/gnome-panel/panel-toplevel.h
===================================================================
RCS file: /export/cvs/gnome-2.0/gnome-panel/gnome-panel/panel-toplevel.h,v
retrieving revision 1.6
diff -p -u -5 -r1.6 panel-toplevel.h
--- gnome-panel/gnome-panel/panel-toplevel.h	2003/09/15 22:07:39	1.6
+++ gnome-panel/gnome-panel/panel-toplevel.h	2003/10/23 08:28:46
@@ -70,10 +70,27 @@ struct _PanelToplevelClass {
 	/* signals */
 	void      (*hiding)           (PanelToplevel *toplevel);
 	void      (*unhiding)         (PanelToplevel *toplevel);
 };
 
+typedef enum {
+	ATTACH_TOPLEVEL_DESTROY,
+	ATTACH_TOPLEVEL_NOTIFICATION,
+	ATTACH_TOPLEVEL_CONFIGURE_EVENT,
+	ATTACH_TOPLEVEL_HIDING,
+	ATTACH_TOPLEVEL_UNHIDING
+} PanelToplevelAttachSignal;
+
+typedef enum {
+	ATTACH_WIDGET_DESTROY,
+	ATTACH_WIDGET_CONFIGURE_EVENT,
+	ATTACH_WIDGET_PARENT_SET,
+	ATTACH_WIDGET_SHOW,
+	ATTACH_WIDGET_HIDE
+} PanelToplevelAttachWidgetSignal;
+
+
 GType                panel_toplevel_get_type            (void) G_GNUC_CONST;
 GtkWidget           *panel_toplevel_new                 (void);
 
 PanelWidget         *panel_toplevel_get_panel_widget    (PanelToplevel       *toplevel);
 
@@ -165,9 +182,15 @@ gboolean             panel_toplevel_get_
 void                 panel_toplevel_set_locked_down     (PanelToplevel       *toplevel,
 							 gboolean             locked);
 
 gboolean             panel_toplevel_is_last_unattached  (PanelToplevel       *toplevel);
 GSList              *panel_toplevel_list_toplevels      (void);
+
+void                 panel_toplevel_disconnect_attached_toplevel_signal (PanelToplevel *toplevel,
+						PanelToplevelAttachSignal attached_signal);
+
+void                 panel_toplevel_disconnect_attached_widget_signal (PanelToplevel *toplevel,
+						PanelToplevelAttachWidgetSignal attached_signal);
 
 G_END_DECLS
 
 #endif /* __PANEL_TOPLEVEL_H__ */
