Index: imagefield_widget.inc
===================================================================
--- imagefield_widget.inc	(revision 1149)
+++ imagefield_widget.inc	(working copy)
@@ -44,8 +44,13 @@
     '#weight' => 8,
   );
   $form['alt_settings']['custom_alt'] = array(
-    '#type' => 'checkbox',
+    '#type' => 'radios',
     '#title' => t('Enable custom alternate text'),
+    '#options' => array(
+      t('Disabled'),
+      t('Optional'),
+      t('Required')
+    ),
     '#default_value' =>  !empty($widget['custom_alt']) ? $widget['custom_alt'] : 0,
     '#description' => t('Enable user input alternate text for images.'),
   );
@@ -233,9 +238,10 @@
     '#description' => t('This text will be used by screen readers, search engines, or when the image cannot be loaded.'),
     '#maxlength' => variable_get('imagefield_alt_length', 80), // See http://www.gawds.org/show.php?contentid=28.
     '#attributes' => array('class' => 'imagefield-text'),
+    '#required' => ( $field['widget']['custom_alt'] == 2 ) ? TRUE : FALSE,
   );
   // #value must be hard-coded if #type = 'value'.
-  if ($default_alt) {
+  if (!$field['widget']['custom_alt']) {
     $element['data']['alt']['#value'] = $field['widget']['alt'];
   }
 
