diff --git a/modules/menu.workbench_access.inc b/modules/menu.workbench_access.inc
index a7a1b94..b5128a5 100644
--- a/modules/menu.workbench_access.inc
+++ b/modules/menu.workbench_access.inc
@@ -233,3 +233,39 @@ function workbench_access_menu_link_delete($link) {
     workbench_access_section_delete($access_scheme);
   }
 }
+
+/**
+ * Executes a form alter on the menu field element.
+ */
+function menu_workbench_access_default_form_alter(&$form, &$form_state, $options) {
+  // If the element isn't set, we can't do anything.
+  if (!isset($form['menu']) || empty($form['menu']['#access']) || !isset($form['menu']['link']['parent']['#options'])) {
+    return;
+  }
+  
+  $parent = &$form['menu']['link']['parent'];
+  $current = $parent['#options'];
+  foreach ($parent['#options'] as $key => $value) {
+    $ids = explode(':', $key);
+    $menu = $ids[0];
+    $plid = $ids[1];
+    if (!isset($options[$plid])) {
+      unset($parent['#options'][$key]);
+    }
+  }
+  if (empty($parent['#options'])) {
+    $parent['#options'] = $current;
+    $parent['#disabled'] = TRUE;
+    $parent['#description'] = t('You may not reassign this item.');
+  }
+  // Inform Workbench Access which data element we store on the node.
+  // (e.g.) $node->{$field}[LANGUAGE][][COLUMN].
+  $form['workbench_access_column'] = array(
+    '#type' => 'value',
+    '#value' => 'mlid',
+  );
+  $form['workbench_access_language'] = array(
+    '#type' => 'value',
+    '#value' => FALSE,
+  );
+}
