diff -ur ekiga.orig/lib/engine/gui/gtk-frontend/statusicon.cpp ekiga/lib/engine/gui/gtk-frontend/statusicon.cpp
--- ekiga.orig/lib/engine/gui/gtk-frontend/statusicon.cpp	2009-09-22 15:39:44.000000000 +0200
+++ ekiga/lib/engine/gui/gtk-frontend/statusicon.cpp	2009-09-22 15:50:16.000000000 +0200
@@ -93,6 +93,13 @@
                     guint activate_time,
                     gpointer data);
 
+#ifdef WIN32
+static gint
+hide_popup_menu_cb (GtkWidget *widget,
+                    GdkEventButton *event,
+                    gpointer data);
+#endif
+
 static void
 statusicon_activated_cb (GtkStatusIcon *icon,
                          gpointer data);
@@ -261,6 +268,22 @@
                   button, activate_time);
 }
 
+#ifdef WIN32
+static gint
+hide_popup_menu_cb (G_GNUC_UNUSED GtkWidget *widget,
+                    G_GNUC_UNUSED GdkEventButton *event,
+                    gpointer data)
+{
+  GtkWidget *popup = GTK_WIDGET (data);
+
+  if (gtk_widget_get_visible (popup)) {
+    gtk_menu_popdown (GTK_MENU (popup));
+    return TRUE;
+  }
+  else
+    return FALSE;
+}
+#endif
 
 static void
 statusicon_activated_cb (G_GNUC_UNUSED GtkStatusIcon *icon,
@@ -561,6 +584,11 @@
   g_signal_connect (self, "popup-menu",
                     G_CALLBACK (show_popup_menu_cb), self->priv->popup_menu);
 
+#ifdef WIN32
+  g_signal_connect (self, "button_press_event",
+                    G_CALLBACK (hide_popup_menu_cb), self->priv->popup_menu);
+#endif
+
   g_signal_connect (self, "activate",
                     G_CALLBACK (statusicon_activated_cb), self);
 
