--- views_handler_filter_original.inc	2009-12-24 03:21:34.000000000 +0800
+++ views_handler_filter.inc	2010-07-02 15:13:47.684877837 +0800
@@ -507,10 +507,32 @@
 
       // Various ways to check for the absence of optional input.
       if (!empty($this->options['expose']['optional'])) {
-        if ($value == 'All' || $value === array()) {
-          return FALSE;
+      	////////////////////////////////////////////////////////////////
+      	// Code added by Stephen Leung
+      	// The following code is a fix of http://drupal.org/node/477984
+      	//	combinding patch
+      	//	http://drupal.org/files/issues/views_handler_filter.inc_.patch
+      	//	shared by demeritcowboy
+      	////////////////////////////////////////////////////////////////
+      	if ($this->operator == 'empty' && $value === '')
+      	{
+      		$value = ' ';
+      	}
+      	
+      	if ($this->operator == 'not empty' && $value === '')
+      	{
+      		$value = ' ';
+      	}
+      	
+        if ($this->operator != 'empty' && $this->operator != 'not empty') {
+          if ($value == 'All' || $value === array()) {
+            return FALSE;
+          }
+      	
         }
-
+		///////////////////////////////////////////////////////////////
+      	// Code end
+      	///////////////////////////////////////////////////////////////
         if (!empty($this->no_single) && $value === '') {
           return FALSE;
         }
