diff -rupN css/views-list.css css/views-list.css
--- css/views-list.css	2008-10-28 19:11:42.000000000 +0100
+++ css/views-list.css	2009-01-02 15:04:11.000000000 +0100
@@ -42,7 +42,8 @@ body form#views-ui-list-views-form {
   clear: left;
 }
 
-#edit-views-apply {
+#edit-views-apply,
+#edit-views-reset {
   margin-top: 1.65em;
   float: left;
 }
diff -rupN includes/admin.inc includes/admin.inc
--- includes/admin.inc	2008-12-02 17:04:59.000000000 +0100
+++ includes/admin.inc	2009-01-02 17:40:50.000000000 +0100
@@ -50,6 +50,20 @@ function template_preprocess_views_ui_li
 
   $views = views_get_all_views();
 
+  if (isset($_GET['op']) && $_GET['op'] == t('Reset')) {
+    unset($_SESSION['views']['#admin']);
+    drupal_goto('admin/build/views');
+  }
+  if (count($_GET) <= 1) {
+    if (isset($_SESSION['views']['#admin']) && is_array($_SESSION['views']['#admin'])) {
+      $_GET += $_SESSION['views']['#admin'];
+    }
+  }
+  else {
+    $_SESSION['views']['#admin'] = $_GET;
+    unset($_SESSION['views']['#admin']['q']);
+  }
+
   $form_state = array(
     'views' => $views,
     'input' => $_GET,
@@ -295,6 +309,14 @@ function views_ui_list_views_form(&$form
     '#value' => t('Apply'),
   );
 
+  if (!empty($_SESSION['views']['#admin'])) {
+    $form['reset'] = array(
+      '#type' => 'submit',
+      '#id' => 'edit-views-reset',
+      '#value' => t('Reset'),
+    );
+  }
+
   $form['#theme'] = array('views_ui_list_views_form');
   return $form;
 }
