diff --git a/reference_option_limit.views.inc b/reference_option_limit.views.inc
index 3e23f5f..7bdaf51 100644
--- a/reference_option_limit.views.inc
+++ b/reference_option_limit.views.inc
@@ -169,14 +169,30 @@ function reference_option_limit_views_handler_filter_get_value_options($filter_h
     //dsm($handler);
 
     // Here we probably need to switch out depending on whether we are:
-    // a filter, an exposed filter, or an argument.
+    // a filter or an argument.
 
     // Case: filter.
     // This is the only one in my use case at the moment; if you want more
     // post a patch ;)
-
-    // Grab the value from $handler->value;
-    $match_values[$field_name_matching] = $handler->value;
+    if ($handler_type == 'filter') {
+      if ($handler->options['exposed']) {
+        // Exposed filter.
+        // accept_exposed_input() has not yet been run on the handler at this
+        // stage, so we need to get it from the view. Furthermore, we can't
+        // call accept_exposed_input() ourselves as various other things it
+        // expects haven't happened yet.
+        $exposed_input = $handler->view->get_exposed_input();
+        // This ends up as a nested array if the filter takes multiple values
+        // but nothing further one seems to be bothered by it!
+        if (isset($exposed_input[$handler->options['expose']['identifier']])) {
+          $match_values[$field_name_matching] = array($exposed_input[$handler->options['expose']['identifier']]);
+        }
+      }
+      else {
+        // Non-exposed filter: grab the value from $handler->value.
+        $match_values[$field_name_matching] = $handler->value;
+      }
+    }
 
     $field_info_matching = field_info_field($field_name_matching);
     // Get the list of columns we should be extracting from the form and
@@ -198,9 +214,11 @@ function reference_option_limit_views_handler_filter_get_value_options($filter_h
   foreach ($fields_match as $field_name_matching => $handler) {
     // @todo: handle more than one column to match on.
     $column = $match_columns[$field_name_matching][0];
-    $value = $match_values[$field_name_matching];
-    if (!empty($value)) {
-      $query->fieldCondition($field_name_matching, $column, $value, 'IN');
+    if (isset($match_values[$field_name_matching])) {
+      $value = $match_values[$field_name_matching];
+      if (!empty($value)) {
+        $query->fieldCondition($field_name_matching, $column, $value, 'IN');
+      }
     }
   }
   // @todo: add some sort of ordering?
