diff -Naur rules-ORIG/rules_forms/rules_forms.rules_forms.inc rules/rules_forms/rules_forms.rules_forms.inc
--- rules-ORIG/rules_forms/rules_forms.rules_forms.inc	2009-08-14 11:52:51.000000000 +0200
+++ rules/rules_forms/rules_forms.rules_forms.inc	2010-08-13 13:55:47.000000000 +0200
@@ -161,3 +161,10 @@
 function rules_forms_condition_element_value_label($settings, $argument_labels) {
   return t("Form element '@element' value check", array('@element' => $settings['element']));
 }
+
+/**
+ * Label callback for button clicked condition.
+ */
+function rules_forms_condition_clicked_button_label($settings, $argument_labels) {
+  return t("Button '@button' clicked", array('@button' => $settings['button']));
+}
diff -Naur rules-ORIG/rules_forms/rules_forms.rules.inc rules/rules_forms/rules_forms.rules.inc
--- rules-ORIG/rules_forms/rules_forms.rules.inc	2009-09-01 22:32:56.000000000 +0200
+++ rules/rules_forms/rules_forms.rules.inc	2010-08-13 14:05:01.000000000 +0200
@@ -380,6 +380,19 @@
       ),
       'module' => 'Rules Forms',
     ),
+    'rules_forms_condition_clicked_button' => array(
+      'label'  => t('Form button was clicked'),
+      'arguments' => array(
+        'form' => array('type' => 'form', 'label' => t('Form')),
+        'form_state' => array('type' => 'form_state', 'label' => t('Form state')),
+        'button' => array(
+          'type' => 'string',
+          'label' => t('Form button ID'),
+          'description' => t('ID of the form button that was clicked.') .' '. _rules_forms_element_description(),
+        ),
+      ),
+      'module' => 'Rules Forms',
+    ),
   );
 }
 
@@ -417,5 +430,13 @@
 }
 
 /**
+ * Condition implementation: Check that a specific button was clicked.
+ */
+function rules_forms_condition_clicked_button ($form, $form_state, $button, $value) {
+  $form_element = _rules_forms_get_element($form, $button);
+  return $form_state['clicked_button']['#id'] === $form_element['#id'];
+}
+
+/**
  * @}
  */
