diff --git a/modules/views.views.inc b/modules/views.views.inc
index baee98c..069dd99 100644
--- a/modules/views.views.inc
+++ b/modules/views.views.inc
@@ -70,6 +70,7 @@ function views_views_data() {
     'help' => t('Override the default view title for this view. This is useful to display an alternative title when a view is empty.'),
     'area' => array(
       'id' => 'title',
+      'sub_type' => 'empty',
     ),
   );
 
diff --git a/views_ui/admin.inc b/views_ui/admin.inc
index 0812692..b9e3a47 100644
--- a/views_ui/admin.inc
+++ b/views_ui/admin.inc
@@ -1539,7 +1539,7 @@ function views_ui_add_item_form($form, &$form_state) {
 
   // Figure out all the base tables allowed based upon what the relationships provide.
   $base_tables = $view->getBaseTables();
-  $options = views_fetch_fields(array_keys($base_tables), $type, $display->useGroupBy());
+  $options = views_fetch_fields(array_keys($base_tables), $type, $display->useGroupBy(), $form_state['type']);
 
   if (!empty($options)) {
     $form['options']['controls'] = array(
@@ -2551,11 +2551,14 @@ function _views_sort_types($a, $b) {
  *   The handler type, for example field or filter.
  * @param bool $grouping
  *   Should the result grouping by its 'group' label.
+ * @param string $sub_type
+ *   An optional sub type. E.g. Allows making an area plugin available for
+ *   header only, instead of header, footer, and empty regions.
  *
  * @return array
  *   A keyed array of in the form of 'base_table' => 'Description'.
  */
-function views_fetch_fields($base, $type, $grouping = FALSE) {
+function views_fetch_fields($base, $type, $grouping = FALSE, $sub_type = NULL) {
   static $fields = array();
   if (empty($fields)) {
     $data = views_fetch_data();
@@ -2590,6 +2593,9 @@ function views_fetch_fields($base, $type, $grouping = FALSE) {
             if ($grouping && !empty($info[$key]['no group by'])) {
               continue;
             }
+            if ($sub_type && isset($info[$key]['sub_type']) && (!in_array($sub_type, (array) $info[$key]['sub_type']))) {
+              continue;
+            }
             if (!empty($info[$key]['skip base'])) {
               foreach ((array) $info[$key]['skip base'] as $base_name) {
                 $skip_bases[$field][$key][$base_name] = TRUE;
