diff --git a/includes/admin.inc b/includes/admin.inc
index bd5bf59..e8f7f51 100644
--- a/includes/admin.inc
+++ b/includes/admin.inc
@@ -117,17 +117,22 @@ function views_ui_preview($view, $display_id, $args = array()) {
 
     // AJAX happens via $_POST but everything expects exposed data to
     // be in GET. Copy stuff but remove ajax-framework specific keys.
-    $exposed_input = $_POST;
+
+    // If the user is updating the preview to incorporate parameters (contextual filters)
+    // DON'T asume the exposed input come from $_POST, just leave the exposed_input empty
+    if (empty($_POST) || (isset($_POST['form_id']) && $_POST['form_id'] == 'views_ui_preview_form')) {
+        $exposed_input = array();
+    }
+    else {
+        $exposed_input = $_POST;
+    }
     foreach (array('view_name', 'view_display_id', 'view_args', 'view_path', 'view_dom_id', 'pager_element', 'view_base_path', 'ajax_html_ids', 'ajax_page_state') as $key) {
       if (isset($exposed_input[$key])) {
         unset($exposed_input[$key]);
       }
     }
-    // @todo Remove this hack after fixing Views UI to display the preview
-    //   outside of the edit form, so that the edit form doesn't conflict with
-    //   the exposed widget form.
+    
     $exposed_input['form_id'] = 'views_exposed_form';
-    unset($exposed_input['form_build_id'], $exposed_input['form_token']);
 
     $view->set_exposed_input($exposed_input);
 
@@ -892,6 +897,10 @@ function views_ui_build_preview($view, $display_id) {
     '#theme_wrappers' => array('container'),
     '#attributes' => array('id' => 'views-preview-wrapper', 'class' => 'views-admin clearfix'),
   );
+  
+  if (!isset($_POST['form_id']) || ($_POST['form_id'] != 'views_ui_preview_form')) {
+      $_POST['view_args'] = implode('/', array_slice(func_get_args(), 2));
+  }
 
   $form_state = array('build_info' => array('args' => array($view, $display_id)));
   $build['controls'] = drupal_build_form('views_ui_preview_form', $form_state);
@@ -1143,7 +1152,7 @@ function views_ui_preview_form($form, &$form_state, $view, $display_id = 'defaul
     '#title' => t('Preview with contextual filters:'),
     '#description' => t('Separate contextual filter values with a "/". For example, %example.', array('%example' => '40/12/10')),
     '#id' => 'preview-args',
-//      '#attributes' => array('class' => array('ctools-auto-submit')),
+    '#default_value' => isset($form_state['input']['views_args']) ? $form_state['input']['views_args'] : '',
   );
 
   // Add the preview button
diff --git a/includes/view.inc b/includes/view.inc
index 385d9e0..9ab493a 100644
--- a/includes/view.inc
+++ b/includes/view.inc
@@ -196,8 +196,12 @@ class view extends views_db_object {
   function get_exposed_input() {
     // Fill our input either from $_GET or from something previously set on the
     // view.
-    if (empty($this->exposed_input)) {
-      $this->exposed_input = $_GET;
+    if (!isset($this->exposed_input) || empty($this->exposed_input)) {
+        $this->exposed_input['form_id'] = 'views_exposed_form';
+    }
+
+    if (count($this->exposed_input) == 1) {
+      $this->exposed_input += $_GET;
       // unset items that are definitely not our input:
       foreach (array('page', 'q') as $key) {
         if (isset($this->exposed_input[$key])) {
diff --git a/js/ajax.js b/js/ajax.js
index 001a9d3..eb730c5 100644
--- a/js/ajax.js
+++ b/js/ajax.js
@@ -179,7 +179,7 @@
       // Preview button.
       // @todo Revisit this after fixing Views UI to display a Preview outside
       //   of the main Edit form.
-      $('div#views-live-preview input[type=submit]')
+      $('div#views-live-preview #edit-reset')
         .once('views-ajax-processed').each(function () {
         $(this).click(function(event) {
           event.preventDefault();
diff --git a/plugins/views_plugin_exposed_form.inc b/plugins/views_plugin_exposed_form.inc
index 1a08fa6..49fb7b8 100644
--- a/plugins/views_plugin_exposed_form.inc
+++ b/plugins/views_plugin_exposed_form.inc
@@ -233,7 +233,19 @@ class views_plugin_exposed_form extends views_plugin {
       $form_state['pager_plugin'] = $pager;
     }
 
-
+    //If we are in live preview give the button ajax behavior, if not do nothig,
+    //views_ajax.js takes care
+    if(isset($this->view->live_preview) && $this->view->live_preview == TRUE) {
+        $q = 'admin/structure/views/view/' . $this->view->name . '/preview/' . $this->view->current_display . '/ajax';
+	$form['submit']['#ajax'] = array(
+            'path' => (!empty($this->view->args)) ? $q . '/' . implode('/', $this->view->args) : $q,
+	    'wrapper' => 'views-preview-wrapper',
+	    'event' => 'click',
+	    'progress' => array('type' => 'throbber'),
+	    'method' => 'replace',
+	);
+    }
+    
     // Apply autosubmit values.
     if (!empty($this->options['autosubmit'])) {
       $form = array_merge_recursive($form, array('#attributes' => array('class' => array('ctools-auto-submit-full-form'))));
