diff --git a/data/fullscreen.ui b/data/fullscreen.ui
index fa6faa9..21dcd4b 100644
--- a/data/fullscreen.ui
+++ b/data/fullscreen.ui
@@ -18,6 +18,8 @@
   <property name="focus_on_map">True</property>
   <property name="urgency_hint">False</property>
   <signal name="motion-notify-event" handler="totem_fullscreen_motion_notify"/>
+  <signal name="enter-notify-event" handler="totem_fullscreen_control_enter_notify"/>
+  <signal name="leave-notify-event" handler="totem_fullscreen_control_leave_notify"/>
 
   <child>
     <object class="GtkButton" id="tefw_fs_exit_button">
@@ -109,6 +111,8 @@
   <property name="focus_on_map">True</property>
   <property name="urgency_hint">False</property>
   <signal name="motion-notify-event" handler="totem_fullscreen_motion_notify"/>
+  <signal name="enter-notify-event" handler="totem_fullscreen_control_enter_notify"/>
+  <signal name="leave-notify-event" handler="totem_fullscreen_control_leave_notify"/>
 
   <child>
     <object class="GtkHBox" id="tcw_hbox">
diff --git a/src/totem-fullscreen.c b/src/totem-fullscreen.c
index 564579b..da0161b 100644
--- a/src/totem-fullscreen.c
+++ b/src/totem-fullscreen.c
@@ -49,6 +49,9 @@ G_MODULE_EXPORT gboolean totem_fullscreen_vol_slider_released_cb (GtkWidget *wid
 G_MODULE_EXPORT gboolean totem_fullscreen_seek_slider_pressed_cb (GtkWidget *widget, GdkEventButton *event, TotemFullscreen *fs);
 G_MODULE_EXPORT gboolean totem_fullscreen_seek_slider_released_cb (GtkWidget *widget, GdkEventButton *event, TotemFullscreen *fs);
 G_MODULE_EXPORT gboolean totem_fullscreen_motion_notify (GtkWidget *widget, GdkEventMotion *event, TotemFullscreen *fs);
+G_MODULE_EXPORT gboolean totem_fullscreen_control_enter_notify (GtkWidget *widget, GdkEventCrossing *event, TotemFullscreen *fs);
+G_MODULE_EXPORT gboolean totem_fullscreen_control_leave_notify (GtkWidget *widget, GdkEventCrossing *event, TotemFullscreen *fs);
+
 
 struct _TotemFullscreenPrivate {
 	BaconVideoWidget *bvw;
@@ -63,6 +66,7 @@ struct _TotemFullscreenPrivate {
 
 	guint             popup_timeout;
 	gboolean          popup_in_progress;
+	gboolean          pointer_on_control;
 	guint             motion_handler_id;
 
 	GtkBuilder       *xml;
@@ -245,7 +249,8 @@ G_MODULE_EXPORT gboolean
 totem_fullscreen_motion_notify (GtkWidget *widget, GdkEventMotion *event,
 				TotemFullscreen *fs)
 {
-	totem_fullscreen_show_popups (fs, TRUE);
+	if (!fs->priv->pointer_on_control)
+		totem_fullscreen_show_popups (fs, TRUE);
 	return FALSE;
 }
 
@@ -288,6 +293,25 @@ totem_fullscreen_show_popups (TotemFullscreen *fs, gboolean show_cursor)
 	fs->priv->popup_in_progress = FALSE;
 }
 
+G_MODULE_EXPORT gboolean
+totem_fullscreen_control_enter_notify (GtkWidget *widget,
+			       GdkEventCrossing *event,
+			       TotemFullscreen *fs)
+{
+	fs->priv->pointer_on_control = TRUE;
+	totem_fullscreen_popup_timeout_remove (fs);
+	return TRUE;
+}
+
+G_MODULE_EXPORT gboolean
+totem_fullscreen_control_leave_notify (GtkWidget *widget,
+			       GdkEventCrossing *event,
+			       TotemFullscreen *fs)
+{
+	fs->priv->pointer_on_control = FALSE;
+	return TRUE;
+}
+
 void
 totem_fullscreen_set_fullscreen (TotemFullscreen *fs,
 				 gboolean fullscreen)
@@ -342,6 +366,7 @@ totem_fullscreen_new (GtkWindow *toplevel_window)
 		g_object_unref (fs);
 		return NULL;
 	}
+	fs->priv->pointer_on_control = FALSE;
 
 	totem_fullscreen_set_parent_window (fs, toplevel_window);
 
