--- totem.c.orig	2006-10-16 09:57:07.000000000 +0200
+++ totem.c	2006-10-16 10:05:35.000000000 +0200
@@ -2288,25 +2288,60 @@ on_video_motion_notify_event (GtkWidget 
 	if (totem->popup_in_progress != FALSE)
 		return FALSE;
 
-	totem->popup_in_progress = TRUE;
 
-	popup_timeout_remove (totem);
-
-	item = glade_xml_get_widget (totem->xml, "tcw_hbox");
-	gtk_widget_show_all (item);
-	gdk_flush ();
+	// Check whether fullscreen controls should be popped up or not...
+	gboolean b_show_popup = FALSE;
+	int i_topLimit = (totem->window_h / 16); // Why 16?, well... why not... seemed like a nice portion of the screen
+	int i_bottomLimit = (totem->window_h - (totem->window_h / 16));
+	int i_currentMouseY;
+	
+	// event may be NULL if triggered from a scroll wheel event...
+	if (event == NULL)
+		b_show_popup = TRUE;
+	else
+	{
+		i_currentMouseY = event->y_root;
 
-	move_popups (totem);
+		// Only show controls if cursor is within the top/bottom area
+		if (i_currentMouseY < i_topLimit || i_currentMouseY > i_bottomLimit)
+		{
+			b_show_popup = TRUE;
+			// Remove timeout for clearing controls...
+			popup_timeout_remove (totem);
+		}
+		else
+		{
+			// Hide fullscreen controls and remove the timer (if active) 
+			popup_hide (totem);
+			popup_timeout_remove (totem);
+			// Show cursor and set timer to remove it...
+			totem_action_set_cursor (totem, TRUE);
+			popup_timeout_add (totem);	
+		}
+	}
 
-	gtk_widget_show_all (totem->exit_popup);
-	gtk_widget_show_all (totem->control_popup);
-	totem_action_set_cursor (totem, TRUE);
+	if(b_show_popup)
+	{
+		totem->popup_in_progress = TRUE;
 
-	popup_timeout_add (totem);
-	totem->popup_in_progress = FALSE;
+		popup_timeout_remove (totem);
 
+		item = glade_xml_get_widget (totem->xml, "tcw_hbox");
+		gtk_widget_show_all (item);
+		gdk_flush ();
+	
+		move_popups (totem);
+	
+		gtk_widget_show_all (totem->exit_popup);
+		gtk_widget_show_all (totem->control_popup);
+		totem_action_set_cursor (totem, TRUE);
+	
+		popup_timeout_add (totem);
+		totem->popup_in_progress = FALSE;
+	}
+	
 	return FALSE;
-}
+}	
 
 static gboolean
 on_video_button_press_event (BaconVideoWidget *bvw, GdkEventButton *event,
@@ -2318,6 +2353,27 @@ on_video_button_press_event (BaconVideoW
 		return TRUE;
 	}
 
+	// Pause/play toggle on lift-click
+	else if (event->type == GDK_BUTTON_PRESS && event->button == 1)
+	{	
+		totem_action_play_pause (totem);
+		// If currently playing, remove fullscreen-controls...
+		if (totem->state == STATE_PLAYING && (totem_is_fullscreen (totem) != FALSE))
+		{
+			popup_timeout_remove (totem);
+			popup_hide (totem);
+		}
+
+		return TRUE;
+	} 
+
+	// Toggle fullscreen on dbl-left-click
+	else if (event->type == GDK_2BUTTON_PRESS && event->button == 1)
+	{
+		totem_action_fullscreen_toggle (totem);
+		return TRUE;
+	} 
+
 	return FALSE;
 }
 
@@ -2653,6 +2709,7 @@ totem_action_handle_volume_scroll (Totem
 	return retval;
 }
 
+
 static int
 on_window_key_press_event (GtkWidget *win, GdkEventKey *event, Totem *totem)
 {
@@ -3092,10 +3149,12 @@ video_widget_create (Totem *totem) 
 			"motion-notify-event",
 			G_CALLBACK (on_video_motion_notify_event),
 			totem);
+
 	g_signal_connect (G_OBJECT (totem->bvw),
 			"button-press-event",
 			G_CALLBACK (on_video_button_press_event),
 			totem);
+
 	g_signal_connect (G_OBJECT (totem->bvw),
 			"eos",
 			G_CALLBACK (on_eos_event),
@@ -3144,6 +3203,7 @@ video_widget_create (Totem *totem) 
 			G_CALLBACK (on_window_key_press_event), totem);
 	g_signal_connect (G_OBJECT(totem->bvw), "key_release_event",
 			G_CALLBACK (on_window_key_press_event), totem);
+	
 
 	g_signal_connect (G_OBJECT (totem->bvw), "drag_data_received",
 			G_CALLBACK (drop_video_cb), totem);
