Index: /branches/plugin/bbp-includes/bbp-topic-functions.php
===================================================================
--- /branches/plugin/bbp-includes/bbp-topic-functions.php	(revision 2975)
+++ /branches/plugin/bbp-includes/bbp-topic-functions.php	(revision 2976)
@@ -73,5 +73,5 @@
 
 		// Handle Title
-		if ( empty( $_POST['bbp_topic_title'] ) || !$topic_title = esc_attr( strip_tags( $_POST['bbp_topic_title'] ) ) )
+		if ( isset( $_POST['bbp_topic_title'] ) && ( !$topic_title = esc_attr( strip_tags( $_POST['bbp_topic_title'] ) ) ) )
 			$bbp->errors->add( 'bbp_topic_title', __( '<strong>ERROR</strong>: Your topic needs a title.', 'bbpress' ) );
 
@@ -79,5 +79,5 @@
 
 		// Handle Content
-		if ( empty( $_POST['bbp_topic_content'] ) || !$topic_content = $_POST['bbp_topic_content'] )
+		if ( isset( $_POST['bbp_topic_content'] ) && ( !$topic_content = $_POST['bbp_topic_content'] ) )
 			$bbp->errors->add( 'bbp_topic_content', __( '<strong>ERROR</strong>: Your topic needs some content.', 'bbpress' ) );
 
@@ -85,5 +85,5 @@
 
 		// Handle Forum id to append topic to
-		if ( empty( $_POST['bbp_forum_id'] ) || !$forum_id = $_POST['bbp_forum_id'] ) {
+		if ( isset( $_POST['bbp_forum_id'] ) && ( !$forum_id = $_POST['bbp_forum_id'] ) ) {
 			$bbp->errors->add( 'bbp_topic_forum_id', __( '<strong>ERROR</strong>: Forum ID is missing.', 'bbpress' ) );
 		} else {
@@ -108,4 +108,5 @@
 		// Handle Tags
 		if ( !empty( $_POST['bbp_topic_tags'] ) ) {
+
 			// Escape tag input
 			$terms = esc_attr( strip_tags( $_POST['bbp_topic_tags'] ) );
@@ -254,5 +255,5 @@
 
 		// Handle Forum id to append topic to
-		if ( empty( $_POST['bbp_forum_id'] ) || !$forum_id = $_POST['bbp_forum_id'] ) {
+		if ( isset( $_POST['bbp_forum_id'] ) && ( !$forum_id = $_POST['bbp_forum_id'] ) ) {
 			$bbp->errors->add( 'bbp_topic_forum_id', __( '<strong>ERROR</strong>: Forum ID is missing.', 'bbpress' ) );
 		} elseif ( $forum_id != $topic->post_parent ) {
@@ -268,5 +269,5 @@
 
 		// Handle Title
-		if ( empty( $_POST['bbp_topic_title'] ) || !$topic_title = esc_attr( strip_tags( $_POST['bbp_topic_title'] ) ) )
+		if ( isset( $_POST['bbp_topic_title'] ) && ( !$topic_title = esc_attr( strip_tags( $_POST['bbp_topic_title'] ) ) ) )
 			$bbp->errors->add( 'bbp_edit_topic_title', __( '<strong>ERROR</strong>: Your topic needs a title.', 'bbpress' ) );
 
@@ -274,5 +275,5 @@
 
 		// Handle Content
-		if ( empty( $_POST['bbp_topic_content'] ) || !$topic_content = $_POST['bbp_topic_content'] )
+		if ( isset( $_POST['bbp_topic_content'] ) && ( !$topic_content = $_POST['bbp_topic_content'] ) )
 			$bbp->errors->add( 'bbp_edit_topic_content', __( '<strong>ERROR</strong>: Your topic cannot be empty.', 'bbpress' ) );
 
Index: /branches/plugin/bbp-includes/bbp-topic-template.php
===================================================================
--- /branches/plugin/bbp-includes/bbp-topic-template.php	(revision 2975)
+++ /branches/plugin/bbp-includes/bbp-topic-template.php	(revision 2976)
@@ -2395,12 +2395,30 @@
 	$topic_id = bbp_get_topic_id( $topic_id );
 
-	// Current topic type
-	if ( !bbp_is_topic_edit() ) {
-		$sticky_current = 'unstick';
-	} else {
-		if ( bbp_is_topic_super_sticky( $topic_id ) ) {
+	// Edit topic
+	if ( bbp_is_topic_edit() ) {
+
+		// Post value is passed
+		if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && isset( $_POST[$select_id] ) ) {
+			$sticky_current = $_POST[$select_id];
+
+		// Topic is super sticky
+		} elseif ( bbp_is_topic_super_sticky( $topic_id ) ) {
 			$sticky_current = 'super';
+
+		// Topic is sticky or normal
 		} else {
 			$sticky_current = bbp_is_topic_sticky( $topic_id, false ) ? 'stick' : 'unstick';
+		}
+
+	// New topic
+	} else {
+
+		// Post value is passed
+		if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && isset( $_POST[$select_id] ) ) {
+			$sticky_current = $_POST[$select_id];
+
+		// Default to unstick
+		} else {
+			$sticky_current = 'unstick';
 		}
 	}
@@ -2506,3 +2524,259 @@
 	}
 
+/** Forms *********************************************************************/
+
+/**
+ * Output the value of topic title field
+ *
+ * @since bbPress (r2976)
+ *
+ * @uses bbp_get_form_topic_title()
+ */
+function bbp_form_topic_title() {
+	echo bbp_get_form_topic_title();
+}
+	/**
+	 * Return the value of topic title field
+	 *
+	 * @since bbPress (r2976)
+	 *
+	 * @global obj $post
+	 * @uses bbp_is_topic_edit()
+	 * @uses esc_attr()
+	 * @return string
+	 */
+	function bbp_get_form_topic_title() {
+		global $post;
+
+		// Get _POST data
+		if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && isset( $_POST['bbp_topic_title'] ) )
+			$topic_title = $_POST['bbp_topic_title'];
+
+		// Get edit data
+		elseif ( !empty( $post->post_title ) && bbp_is_topic_edit() )
+			$topic_title = $post->post_title;
+
+		// No data
+		else
+			$topic_title = '';
+
+		return apply_filters( 'bbp_get_form_topic_title', esc_attr( $topic_title ) );
+	}
+
+/**
+ * Output the value of topic content field
+ *
+ * @since bbPress (r2976)
+ *
+ * @uses bbp_get_form_topic_content()
+ */
+function bbp_form_topic_content() {
+	echo bbp_get_form_topic_content();
+}
+	/**
+	 * Return the value of topic content field
+	 *
+	 * @since bbPress (r2976)
+	 *
+	 * @global obj $post
+	 * @uses bbp_is_topic_edit()
+	 * @uses esc_textarea()
+	 * @return string
+	 */
+	function bbp_get_form_topic_content() {
+		global $post;
+
+		// Get _POST data
+		if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && isset( $_POST['bbp_topic_content'] ) )
+			$topic_content = $_POST['bbp_topic_content'];
+
+		// Get edit data
+		elseif ( !empty( $post->post_title ) && bbp_is_topic_edit() )
+			$topic_content = $post->post_content;
+
+		// No data
+		else
+			$topic_content = '';
+
+		return apply_filters( 'bbp_get_form_topic_content', esc_textarea( $topic_content ) );
+	}
+
+/**
+ * Output value of topic tags field
+ *
+ * @since bbPress (r2976)
+ * @uses bbp_get_form_topic_tags()
+ */
+function bbp_form_topic_tags() {
+	echo bbp_get_form_topic_tags();
+}
+	/**
+	 * Return value of topic tags field
+	 *
+	 * @since bbPress (r2976)
+	 *
+	 * @global obj $post
+	 * @uses bbp_is_topic_edit()
+	 * @uses esc_attr()
+	 * @return string
+	 */
+	function bbp_get_form_topic_tags() {
+		global $post;
+
+		// Get _POST data
+		if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && isset( $_POST['bbp_topic_tags'] ) )
+			$topic_tags = $_POST['bbp_topic_tags'];
+
+		// Get edit data
+		elseif ( !empty( $post->post_title ) && bbp_is_topic_edit() )
+			$topic_tags = $post->post_tags;
+
+		// No data
+		else
+			$topic_tags = '';
+
+		return apply_filters( 'bbp_get_form_topic_tags', esc_attr( $topic_tags ) );
+	}
+
+/**
+ * Output value of topic forum
+ *
+ * @since bbPress (r2976)
+ *
+ * @uses bbp_get_form_topic_forum()
+ */
+function bbp_form_topic_forum() {
+	echo bbp_get_form_topic_forum();
+}
+	/**
+	 * Return value of topic forum
+	 *
+	 * @since bbPress (r2976)
+	 *
+	 * @uses bbp_is_topic_edit()
+	 * @uses bbp_get_topic_forum_id()
+	 * @uses esc_attr()
+	 * @return string
+	 */
+	function bbp_get_form_topic_forum() {
+
+		// Get _POST data
+		if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && isset( $_POST['bbp_forum_id'] ) )
+			$topic_forum = $_POST['bbp_forum_id'];
+
+		// Get edit data
+		elseif ( bbp_is_topic_edit() )
+			$topic_forum = bbp_get_topic_forum_id();
+
+		// No data
+		else
+			$topic_forum = 0;
+
+		return apply_filters( 'bbp_get_form_topic_forum', esc_attr( $topic_forum ) );
+	}
+
+/**
+ * Output checked value of topic subscription
+ *
+ * @since bbPress (r2976)
+ *
+ * @uses bbp_get_form_topic_subscribed()
+ */
+function bbp_form_topic_subscribed() {
+	echo bbp_get_form_topic_subscribed();
+}
+	/**
+	 * Return checked value of topic subscription
+	 *
+	 * @since bbPress (r2976)
+	 *
+	 * @global obj $post
+	 * @uses bbp_is_topic_edit()
+	 * @uses bbp_is_user_user_subscribed()
+	 * @return string
+	 */
+	function bbp_get_form_topic_subscribed() {
+		global $post;
+
+		// Get _POST data
+		if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && isset( $_POST['bbp_topic_subscription'] ) )
+			$topic_subscribed = $_POST['bbp_topic_subscription'];
+
+		// Get edit data
+		elseif ( bbp_is_topic_edit() )
+			$topic_subscribed = bbp_is_user_subscribed( $post->post_author );
+
+		// No data
+		else
+			$topic_subscribed = 0;
+
+		return apply_filters( 'bbp_get_form_topic_subscribed', checked( 'bbp_subscribe', $topic_subscribed, false ) );
+	}
+
+/**
+ * Output checked value of topic log edit field
+ *
+ * @since bbPress (r2976)
+ *
+ * @uses bbp_get_form_topic_log_edit()
+ */
+function bbp_form_topic_log_edit() {
+	echo bbp_get_form_topic_log_edit();
+}
+	/**
+	 * Return checked value of topic log edit field
+	 *
+	 * @since bbPress (r2976)
+	 *
+	 * @global obj $post
+	 * @uses checked()
+	 * @return string
+	 */
+	function bbp_get_form_topic_log_edit() {
+		global $post;
+
+		// Get _POST data
+		if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && isset( $_POST['bbp_log_topic_edit'] ) )
+			$topic_revision = $_POST['bbp_log_topic_edit'];
+
+		// No data
+		else
+			$topic_revision = 1;
+
+		return apply_filters( 'bbp_get_form_topic_log_edit', checked( true, $topic_revision, false ) );
+	}
+
+/**
+ * Output the value of the topic edit reason
+ *
+ * @since bbPress (r2976)
+ *
+ * @uses bbp_get_form_topic_edit_reason()
+ */
+function bbp_form_topic_edit_reason() {
+	echo bbp_get_form_topic_edit_reason();
+}
+	/**
+	 * Return the value of the topic edit reason
+	 *
+	 * @since bbPress (r2976)
+	 *
+	 * @global obj $post
+	 * @uses esc_attr()
+	 * @return string
+	 */
+	function bbp_get_form_topic_edit_reason() {
+		global $post;
+
+		// Get _POST data
+		if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && isset( $_POST['bbp_topic_edit_reason'] ) )
+			$topic_edit_reason = $_POST['bbp_topic_edit_reason'];
+
+		// No data
+		else
+			$topic_edit_reason = '';
+
+		return apply_filters( 'bbp_get_form_topic_edit_reason', esc_attr( $topic_edit_reason ) );
+	}
+
 ?>
Index: /branches/plugin/bbp-themes/bbp-twentyten/bbpress/form-topic.php
===================================================================
--- /branches/plugin/bbp-themes/bbp-twentyten/bbpress/form-topic.php	(revision 2975)
+++ /branches/plugin/bbp-themes/bbp-twentyten/bbpress/form-topic.php	(revision 2976)
@@ -37,6 +37,4 @@
 					<?php endif; ?>
 
-					<?php do_action( 'bbp_template_notices' ); ?>
-
 					<div>
 						<div class="alignright avatar">
@@ -50,10 +48,10 @@
 						<p>
 							<label for="bbp_topic_title"><?php _e( 'Topic Title:', 'bbpress' ); ?></label><br />
-							<input type="text" id="bbp_topic_title" value="<?php echo ( bbp_is_topic_edit() && !empty( $post->post_title ) ) ? $post->post_title : ''; ?>" tabindex="<?php bbp_tab_index(); ?>" size="40" name="bbp_topic_title" />
+							<input type="text" id="bbp_topic_title" value="<?php bbp_form_topic_title(); ?>" tabindex="<?php bbp_tab_index(); ?>" size="40" name="bbp_topic_title" />
 						</p>
 
 						<p>
 							<label for="bbp_topic_content"><?php _e( 'Topic Description:', 'bbpress' ); ?></label><br />
-							<textarea id="bbp_topic_content" tabindex="<?php bbp_tab_index(); ?>" name="bbp_topic_content" cols="52" rows="6"><?php echo ( bbp_is_topic_edit() && !empty( $post->post_content ) ) ? $post->post_content : ''; ?></textarea>
+							<textarea id="bbp_topic_content" tabindex="<?php bbp_tab_index(); ?>" name="bbp_topic_content" cols="52" rows="6"><?php bbp_form_topic_content(); ?></textarea>
 						</p>
 
@@ -67,5 +65,5 @@
 							<p>
 								<label for="bbp_topic_tags"><?php _e( 'Topic Tags:', 'bbpress' ); ?></label><br />
-								<input type="text" value="" tabindex="<?php bbp_tab_index(); ?>" size="40" name="bbp_topic_tags" id="bbp_topic_tags" />
+								<input type="text" value="<?php bbp_form_topic_tags(); ?>" tabindex="<?php bbp_tab_index(); ?>" size="40" name="bbp_topic_tags" id="bbp_topic_tags" />
 							</p>
 
@@ -76,5 +74,5 @@
 							<p>
 								<label for="bbp_forum_id"><?php _e( 'Forum:', 'bbpress' ); ?></label><br />
-								<?php bbp_dropdown( array( 'selected' => bbp_is_topic_edit() ? bbp_get_topic_forum_id() : 0 ) ); ?>
+								<?php bbp_dropdown( array( 'selected' => bbp_get_form_topic_forum() ) ); ?>
 							</p>
 
@@ -96,12 +94,12 @@
 
 							<p>
-								<?php if ( bbp_is_topic_edit() && $post->post_author != bbp_get_current_user_id() ) : ?>
+								<input name="bbp_topic_subscription" id="bbp_topic_subscription" type="checkbox" value="bbp_subscribe" <?php bbp_form_topic_subscribed(); ?> tabindex="<?php bbp_tab_index(); ?>" />
 
-									<input name="bbp_topic_subscription" id="bbp_topic_subscription" type="checkbox" value="bbp_subscribe"<?php checked( true, bbp_is_user_subscribed( $post->post_author ) ); ?> tabindex="<?php bbp_tab_index(); ?>" />
+								<?php if ( bbp_is_topic_edit() && ( $post->post_author != bbp_get_current_user_id() ) ) : ?>
+									
 									<label for="bbp_topic_subscription"><?php _e( 'Notify the author of follow-up replies via email', 'bbpress' ); ?></label>
 
 								<?php else : ?>
 
-									<input name="bbp_topic_subscription" id="bbp_topic_subscription" type="checkbox" value="bbp_subscribe"<?php checked( true, bbp_is_user_subscribed( bbp_get_user_id( 0, false, true ) ) ); ?> tabindex="<?php bbp_tab_index(); ?>" />
 									<label for="bbp_topic_subscription"><?php _e( 'Notify me of follow-up replies via email', 'bbpress' ); ?></label>
 
@@ -116,5 +114,5 @@
 								<legend><?php _e( 'Revision', 'bbpress' ); ?></legend>
 								<div>
-									<input name="bbp_log_topic_edit" id="bbp_log_topic_edit" type="checkbox" value="1" checked="checked" tabindex="<?php bbp_tab_index(); ?>" />
+									<input name="bbp_log_topic_edit" id="bbp_log_topic_edit" type="checkbox" value="1" <?php bbp_form_topic_log_edit(); ?> tabindex="<?php bbp_tab_index(); ?>" />
 									<label for="bbp_log_topic_edit"><?php _e( 'Keep a log of this edit:', 'bbpress' ); ?></label><br />
 								</div>
@@ -122,5 +120,5 @@
 								<div>
 									<label for="bbp_topic_edit_reason"><?php printf( __( 'Optional reason for editing:', 'bbpress' ), bbp_get_current_user_name() ); ?></label><br />
-									<input type="text" value="" tabindex="<?php bbp_tab_index(); ?>" size="40" name="bbp_topic_edit_reason" id="bbp_topic_edit_reason" />
+									<input type="text" value="<?php bbp_form_topic_edit_reason(); ?>" tabindex="<?php bbp_tab_index(); ?>" size="40" name="bbp_topic_edit_reason" id="bbp_topic_edit_reason" />
 								</div>
 							</fieldset>
Index: /branches/plugin/bbpress.php
===================================================================
--- /branches/plugin/bbpress.php	(revision 2975)
+++ /branches/plugin/bbpress.php	(revision 2976)
@@ -762,5 +762,8 @@
 	 */
 	function generate_rewrite_rules( $wp_rewrite ) {
+
+		// New rules to merge with existing
 		$bbp_rules = array(
+
 			// Edit Pages
 			$this->topic_slug . '/([^/]+)/edit/?$' => 'index.php?' . $this->topic_post_type . '=' . $wp_rewrite->preg_index( 1 ) . '&edit=1',
@@ -784,5 +787,9 @@
 		);
 
+		// Merge bbPress rules with existing
 		$wp_rewrite->rules = array_merge( $bbp_rules, $wp_rewrite->rules );
+
+		// Return merged rules
+		return $wp_rewrite;
 	}
 }
