Index: wp-admin/includes/default-list-tables.php
===================================================================
--- wp-admin/includes/default-list-tables.php	(revision 15659)
+++ wp-admin/includes/default-list-tables.php	(working copy)
@@ -920,9 +920,9 @@
 					</select>
 				</label>
 
-	<?php if ( 'post' == $screen->post_type && $can_publish && current_user_can( $post_type_object->cap->edit_others_posts ) ) : ?>
+	<?php if ( post_type_supports( $screen->post_type, 'sticky' ) && $can_publish && current_user_can( $post_type_object->cap->edit_others_posts ) ) : ?>
 
-	<?php	if ( $bulk ) : ?>
+	<?php	if ( $bulk && post_type_supports( $screen->post_type, 'sticky' ) ) : ?>
 
 				<label class="alignright">
 					<span class="title"><?php _e( 'Sticky' ); ?></span>
@@ -933,11 +933,11 @@
 					</select>
 				</label>
 
-	<?php	else : // $bulk ?>
+	<?php	elseif(post_type_supports( $screen->post_type, 'sticky' )) : // $bulk ?>
 
 				<label class="alignleft">
 					<input type="checkbox" name="sticky" value="sticky" />
-					<span class="checkbox-title"><?php _e( 'Make this post sticky' ); ?></span>
+					<span class="checkbox-title"><?php _e( 'Make this sticky' ); ?></span>
 				</label>
 
 	<?php	endif; // $bulk ?>
Index: wp-admin/includes/meta-boxes.php
===================================================================
--- wp-admin/includes/meta-boxes.php	(revision 15659)
+++ wp-admin/includes/meta-boxes.php	(working copy)
@@ -116,7 +116,7 @@
 } elseif ( !empty( $post->post_password ) ) {
 	$visibility = 'password';
 	$visibility_trans = __('Password protected');
-} elseif ( $post_type == 'post' && is_sticky( $post->ID ) ) {
+} elseif (post_type_supports( $post->post_type, 'sticky' ) && is_sticky( $post->ID ) ) {
 	$visibility = 'public';
 	$visibility_trans = __('Public, Sticky');
 } else {
@@ -130,15 +130,15 @@
 
 <div id="post-visibility-select" class="hide-if-js">
 <input type="hidden" name="hidden_post_password" id="hidden-post-password" value="<?php echo esc_attr($post->post_password); ?>" />
-<?php if ($post_type == 'post'): ?>
+<?php if (post_type_supports( $post->post_type, 'sticky' )): ?>
 <input type="checkbox" style="display:none" name="hidden_post_sticky" id="hidden-post-sticky" value="sticky" <?php checked(is_sticky($post->ID)); ?> />
 <?php endif; ?>
 <input type="hidden" name="hidden_post_visibility" id="hidden-post-visibility" value="<?php echo esc_attr( $visibility ); ?>" />
 
 
 <input type="radio" name="visibility" id="visibility-radio-public" value="public" <?php checked( $visibility, 'public' ); ?> /> <label for="visibility-radio-public" class="selectit"><?php _e('Public'); ?></label><br />
-<?php if ($post_type == 'post'): ?>
-<span id="sticky-span"><input id="sticky" name="sticky" type="checkbox" value="sticky" <?php checked(is_sticky($post->ID)); ?> tabindex="4" /> <label for="sticky" class="selectit"><?php _e('Stick this post to the front page') ?></label><br /></span>
+<?php if (post_type_supports( $post->post_type, 'sticky' )): ?>
+<span id="sticky-span"><input id="sticky" name="sticky" type="checkbox" value="sticky" <?php checked(is_sticky($post->ID)); ?> tabindex="4" /> <label for="sticky" class="selectit"><?php _e('Stick this to the front page') ?></label><br /></span>
 <?php endif; ?>
 <input type="radio" name="visibility" id="visibility-radio-password" value="password" <?php checked( $visibility, 'password' ); ?> /> <label for="visibility-radio-password" class="selectit"><?php _e('Password protected'); ?></label><br />
 <span id="password-span"><label for="post_password"><?php _e('Password:'); ?></label> <input type="text" name="post_password" id="post_password" value="<?php echo esc_attr($post->post_password); ?>" /><br /></span>
Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 15659)
+++ wp-includes/post.php	(working copy)
@@ -23,7 +23,7 @@
 		'hierarchical' => false,
 		'rewrite' => false,
 		'query_var' => false,
-		'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions' ),
+		'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'sticky', 'trackbacks', 'custom-fields', 'comments', 'revisions' ),
 	) );
 
 	register_post_type( 'page', array(
@@ -1334,6 +1334,9 @@
  * @return bool Whether post is sticky.
  */
 function is_sticky( $post_id = 0 ) {
+    global $post;
+    $post_type = $post->post_type;
+    
 	$post_id = absint( $post_id );
 
 	if ( ! $post_id )
@@ -1341,10 +1344,10 @@
 
 	$stickies = get_option( 'sticky_posts' );
 
-	if ( ! is_array( $stickies ) )
+	if ( ! is_array( $stickies ) || ! isset($stickies[$post_type]) )
 		return false;
 
-	if ( in_array( $post_id, $stickies ) )
+	if ( in_array( $post_id, $stickies ) || in_array( $post_id, $stickies[$post_type] ))
 		return true;
 
 	return false;
@@ -1486,13 +1489,16 @@
  * @param int $post_id Post ID.
  */
 function stick_post($post_id) {
+    global $post;
+    $post_type = $post['post_type'];
+    
 	$stickies = get_option('sticky_posts');
 
-	if ( !is_array($stickies) )
-		$stickies = array($post_id);
+	if ( !is_array($stickies) || !isset($stickies[$post_type]) )
+		$stickies[$post_type] = array($post_id);
 
-	if ( ! in_array($post_id, $stickies) )
-		$stickies[] = $post_id;
+	if ( ! in_array($post_id, $stickies[$post_type]) )
+		$stickies[$post_type][] = $post_id;
 
 	update_option('sticky_posts', $stickies);
 }
@@ -1507,19 +1513,22 @@
  * @param int $post_id Post ID.
  */
 function unstick_post($post_id) {
+    global $post;
+    $post_type = $post['post_type'];
+    
 	$stickies = get_option('sticky_posts');
 
-	if ( !is_array($stickies) )
+	if ( !is_array($stickies) || !isset($stickies[$post_type]) )
 		return;
 
-	if ( ! in_array($post_id, $stickies) )
+	if ( ! in_array($post_id, $stickies[$post_type]) )
 		return;
 
-	$offset = array_search($post_id, $stickies);
+	$offset = array_search($post_id, $stickies[$post_type]);
 	if ( false === $offset )
 		return;
 
-	array_splice($stickies, $offset, 1);
+	array_splice($stickies[$post_type], $offset, 1);
 
 	update_option('sticky_posts', $stickies);
 }
