Index: stickynotes/stickynotes.c
===================================================================
--- stickynotes/stickynotes.c	(revision 10760)
+++ stickynotes/stickynotes.c	(working copy)
@@ -150,6 +150,7 @@
 	note->font_color = NULL;
 	note->font = NULL;
 	note->locked = FALSE;
+	note->visible = TRUE;
 	note->x = x;
 	note->y = y;
 	note->w = w;
@@ -621,6 +622,7 @@
 void
 stickynote_set_visible (StickyNote *note, gboolean visible)
 {
+	note->visible = visible;
 	if (visible)
 	{
 		gtk_window_present (GTK_WINDOW (note->w_window));
Index: stickynotes/stickynotes_applet_callbacks.c
===================================================================
--- stickynotes/stickynotes_applet_callbacks.c	(revision 10760)
+++ stickynotes/stickynotes_applet_callbacks.c	(working copy)
@@ -73,7 +73,19 @@
 		stickynote_set_visible (note, visible);
 	}
 }
+static void
+stickynote_toggle_notes ()
+{
+	StickyNote *note;
+	GList *l;
 
+	for (l = stickynotes->notes; l; l = l->next)
+	{
+		note = l->data;
+		stickynote_set_visible (note, !note->visible);
+	}
+}
+
 /* Applet Callback : Mouse button press on the applet. */
 gboolean
 applet_button_cb (GtkWidget         *widget,
@@ -82,12 +94,13 @@
 {
 	if (event->type == GDK_2BUTTON_PRESS)
 	{
+		stickynote_show_notes(TRUE);
 		popup_add_note (applet, NULL);
 		return TRUE;
 	}
-	else if (event->button == 1)
+	else if (event->button == 1 && event->type == GDK_BUTTON_PRESS)
 	{
-		stickynote_show_notes (TRUE);
+		stickynote_toggle_notes ();
 		return TRUE;
 	}
 
Index: stickynotes/stickynotes.h
===================================================================
--- stickynotes/stickynotes.h	(revision 10760)
+++ stickynotes/stickynotes.h	(working copy)
@@ -58,6 +58,7 @@
 	gchar *font_color;		/* Font color */
 	gchar *font;			/* Note font */
 	gboolean locked;		/* Note locked state */
+	gboolean visible;		/* Visibility state */
 	
 	gint x;				/* Note x-coordinate */
 	gint y;				/* Note y-coordinate */
