Index: src/totem-statusbar.c
===================================================================
--- src/totem-statusbar.c	(revision 5025)
+++ src/totem-statusbar.c	(working copy)
@@ -40,6 +40,7 @@
 #define NORMAL_CONTEXT "text"
 #define BUFFERING_CONTEXT "buffering"
 
+static void totem_statusbar_toggle_time	     (GtkWidget *widget, TotemStatusbar *statusbar);
 static void totem_statusbar_class_init       (TotemStatusbarClass *class);
 static void totem_statusbar_init             (TotemStatusbar      *statusbar);
 static void totem_statusbar_dispose          (GObject             *object);
@@ -48,7 +49,7 @@
 static void totem_statusbar_size_allocate    (GtkWidget           *widget,
                                               GtkAllocation       *allocation);
 #endif
-
+static gboolean time_toggle;
 G_DEFINE_TYPE(TotemStatusbar, totem_statusbar, GTK_TYPE_STATUSBAR)
 
 static void
@@ -72,6 +73,7 @@
 
   statusbar->time = 0;
   statusbar->length = -1;
+  time_toggle = TRUE;
 
   hbox = gtk_hbox_new (FALSE, SPACING);
 
@@ -102,10 +104,16 @@
   packer = gtk_vseparator_new ();
   gtk_box_pack_start (GTK_BOX (hbox), packer, FALSE, FALSE, 0);
   gtk_widget_show (packer);
-
+  
   statusbar->time_label = gtk_label_new (_("0:00 / 0:00"));
+  statusbar->time_event_box = gtk_event_box_new();
+  gtk_container_add( GTK_CONTAINER( statusbar->time_event_box ), statusbar->time_label );
+  gtk_widget_set_events( statusbar->time_event_box, GDK_BUTTON_PRESS_MASK);
+  g_signal_connect(G_OBJECT( statusbar->time_event_box ), "button_press_event",
+		   G_CALLBACK( totem_statusbar_toggle_time ), statusbar );
   gtk_misc_set_alignment (GTK_MISC (statusbar->time_label), 0.0, 0.5);
-  gtk_box_pack_start (GTK_BOX (hbox), statusbar->time_label, FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (hbox), statusbar->time_event_box, FALSE, FALSE, 0);
+  gtk_widget_show (statusbar->time_event_box);
   gtk_widget_show (statusbar->time_label);
 
   totem_statusbar_set_text (statusbar, _("Stopped"));
@@ -120,7 +128,7 @@
 static void
 totem_statusbar_update_time (TotemStatusbar *statusbar)
 {
-  char *time, *length, *label;
+  char *time, *length, *remaining, *label;
 
   time = totem_time_to_string (statusbar->time * 1000);
 
@@ -129,15 +137,20 @@
   } else {
     length = totem_time_to_string
 	    (statusbar->length == -1 ? 0 : statusbar->length * 1000);
-
+    remaining = totem_time_to_string
+    	        (statusbar->length == -1 ? 0 : (statusbar->length - statusbar->time) * 1000);
     if (statusbar->seeking == FALSE)
-      /* Elapsed / Total Length */
-      label = g_strdup_printf (_("%s / %s"), time, length);
+	    if(time_toggle)
+	      /* Elapsed / Total Length */
+	      label = g_strdup_printf (_("%s / %s"), time, length);
+	    else
+	      label = g_strdup_printf (_("-%s / %s"), remaining, length);
     else
       /* Seeking to Time / Total Length */
       label = g_strdup_printf (_("Seek to %s / %s"), time, length);
 
     g_free (length);
+    g_free (remaining);
   }
   g_free (time);
 
@@ -147,6 +160,12 @@
   totem_statusbar_sync_description (statusbar);
 }
 
+static void totem_statusbar_toggle_time ( GtkWidget *widget, TotemStatusbar *statusbar)
+{
+  time_toggle = !time_toggle;
+  //totem_statusbar_update_time( statusbar ); I can't get this to work, "statusbar" points to the wrong memory address.
+}
+
 void
 totem_statusbar_set_text (TotemStatusbar *statusbar, const char *label)
 {
Index: src/totem-statusbar.h
===================================================================
--- src/totem-statusbar.h	(revision 5025)
+++ src/totem-statusbar.h	(working copy)
@@ -49,6 +49,7 @@
 
   GtkWidget *progress;
   GtkWidget *time_label;
+  GtkWidget *time_event_box;
 
   gint time;
   gint length;
