Index: modules/user/user.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v
retrieving revision 1.123
diff -u -p -r1.123 user.admin.inc
--- modules/user/user.admin.inc	17 Nov 2010 04:10:52 -0000	1.123
+++ modules/user/user.admin.inc	9 Dec 2010 23:23:46 -0000
@@ -398,13 +398,26 @@ function user_admin_settings() {
     );
   }
   $form['personalization']['pictures']['user_picture_dimensions'] = array(
-    '#type' => 'textfield',
+    '#type' => 'item',
     '#title' => t('Picture upload dimensions'),
-    '#default_value' => variable_get('user_picture_dimensions', '85x85'),
-    '#size' => 10,
-    '#maxlength' => 10,
-    '#field_suffix' => ' ' . t('pixels'),
     '#description' => t('Pictures larger than this will be scaled down to this size.'),
+    '#field_prefix' => '<div class="container-inline">',
+    '#field_suffix' => '</div>',
+    '#element_validate' => array('user_picture_field_max_resolution_validate'),
+  );
+  $form['personalization']['pictures']['user_picture_dimensions']['user_picture_max_resolution_x'] = array(
+    '#type' => 'textfield',
+    '#default_value' => variable_get('user_picture_max_resolution_x', 85),
+    '#size' => 5,
+    '#maxlength' => 5,
+    '#field_suffix' => t('x'),
+  );
+  $form['personalization']['pictures']['user_picture_dimensions']['user_picture_max_resolution_y'] = array(
+    '#type' => 'textfield',
+    '#default_value' => variable_get('user_picture_max_resolution_y', 85),
+    '#size' => 5,
+    '#maxlength' => 5,
+    '#field_suffix' => t('px'),
   );
   $form['personalization']['pictures']['user_picture_file_size'] = array(
     '#type' => 'textfield',
@@ -648,6 +661,21 @@ function user_admin_settings() {
 }
 
 /**
+ * Element validate function for user picture resolution field.
+ */
+function user_picture_field_max_resolution_validate($element, &$form_state) {
+  foreach (array('x', 'y') as $dimension) {
+    $value = $element['user_picture_max_resolution_' . $dimension]['#value'];
+    if (!is_int($value)) {
+      form_error($element['user_picture_max_resolution_' . $dimension], t('Height and width values must be integers.'));
+      return;
+    }
+  }
+  form_set_value($element, $element['user_picture_max_resolution_x']['#value'] . 'x' . $element['user_picture_max_resolution_y']['#value'], $form_state);
+}
+
+
+/**
  * Menu callback: administer permissions.
  *
  * @ingroup forms
Index: modules/user/user.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.install,v
retrieving revision 1.68
diff -u -p -r1.68 user.install
--- modules/user/user.install	20 Oct 2010 01:15:58 -0000	1.68
+++ modules/user/user.install	9 Dec 2010 23:23:46 -0000
@@ -855,6 +855,28 @@ function user_update_7015() {
 }
 
 /**
+ * Split the picture dimensions variable in two.
+ */
+function user_update_7016() {
+  $user_picture_dimensions = variable_get('user_picture_dimensions', NULL);
+  // Only set the new variables if the old variable was set.
+  if (!empty($user_picture_dimensions)) {
+    $dimensions = explode("x", $user_picture_dimensions);
+
+    // There was no validation on this field. Assign default values if
+    // dimensions are invalid.
+    if (count($dimensions) != 2 || !is_int($dimensions[0] || !is_int($dimensions[1]))) {
+      $dimensions = array(85, 85);
+    }
+
+    // We don't delete the old variable, because it is still used for image
+    // resizing for backwards compatibility.
+    variable_set('user_picture_max_resolution_x', $dimensions[0]);
+    variable_set('user_picture_max_resolution_y', $dimensions[1]);
+  }
+}
+
+/**
  * @} End of "defgroup user-updates-6.x-to-7.x"
  * The next series of updates should start at 8000.
  */
