Index: /trunk/camelot/view/filters.py
===================================================================
--- /trunk/camelot/view/filters.py (revision 1173)
+++ /trunk/camelot/view/filters.py (revision 1184)
@@ -216,49 +216,40 @@
                 self._field_attributes['editable'] = True
                 layout = QtGui.QVBoxLayout()
-                group = QtGui.QButtonGroup(self)
-                self.all_button = QtGui.QRadioButton(ugettext('All'), self)
-                self.all_button.setChecked(True)
-                group.addButton(self.all_button)
-                layout.addWidget(self.all_button)
-                self.none_button = QtGui.QRadioButton(ugettext('None'), self)
-                group.addButton(self.none_button)
-                layout.addWidget(self.none_button)
-                self.connect(self.all_button, QtCore.SIGNAL('toggled(bool)'), self.all_toggled)
-                self.connect(self.none_button, QtCore.SIGNAL('toggled(bool)'), self.none_toggled)
-                self.setLayout(layout)
-#                if self._field_attributes.get('nullable', True)==False:
-#                    self.none_button.hide()
+                self._choices = [(0, ugettext('All')), (1, ugettext('None')), (2, ugettext('='))]
+                combobox = QtGui.QComboBox(self)
+                layout.addWidget(combobox)
+                for i,name in self._choices:
+                    combobox.insertItem(i, unicode(name))
+                self.connect(combobox, QtCore.SIGNAL('currentIndexChanged(int)'), self.combobox_changed)
                 delegate = self._field_attributes['delegate'](**self._field_attributes)
                 option = QtGui.QStyleOptionViewItem()
                 option.version = 5
-                self.editor = delegate.createEditor( self, option, None )
+                self._editor = delegate.createEditor( self, option, None )
                 # explicitely set a value, otherways the current value remains ValueLoading
-                self.editor.set_value(None)
-                self.connect(self.editor, editors.editingFinished, self.editor_editing_finished)
-                layout.addWidget(self.editor)
-                self._filter = False
+                self._editor.set_value(None)
+                self.connect(self._editor, editors.editingFinished, self.editor_editing_finished)
+                layout.addWidget(self._editor)
+                self.setLayout(layout)
+                self._editor.setEnabled(False)
+                self._index = 0
                 self._value = None
                 
-            def all_toggled(self, bool):
-                self.editor.set_value(None)
-                self._filter = False
-                self.emit(filter_changed_signal)
-            
-            def none_toggled(self, bool):
-                self.editor.set_value(None)
-                self._filter = True
-                self._value = None
+            def combobox_changed(self, index):
+                self._index = index
+                if index==2:
+                    self._editor.setEnabled(True)
+                else:
+                    self._editor.setEnabled(False)
                 self.emit(filter_changed_signal)
                 
             def editor_editing_finished(self):
-                self.all_button.setChecked(False)
-                self.none_button.setChecked(False)
-                self._filter = True
-                self._value = self.editor.get_value()
+                self._value = self._editor.get_value()
                 self.emit(filter_changed_signal)
             
             def decorate_query(self, query):
-                if not self._filter:
+                if self._index==0:
                     return query
+                if self._index==1:
+                    return query.filter(getattr(self._entity, self._field_name)==None)
                 return query.filter(getattr(self._entity, self._field_name)==self._value)
                 
Index: /trunk/camelot/view/controls/search.py
===================================================================
--- /trunk/camelot/view/controls/search.py (revision 1154)
+++ /trunk/camelot/view/controls/search.py (revision 1184)
@@ -38,4 +38,6 @@
   """
 
+    expand_search_options_signal = QtCore.SIGNAL('expand_search_options()')
+    
     def __init__(self, parent):
         QtGui.QWidget.__init__(self, parent)
@@ -52,5 +54,5 @@
         self.connect(self.search_button,
                      QtCore.SIGNAL('clicked()'),
-                     self.emit_search)
+                     self.expand_search_options_signal)
 
         # Search input
@@ -89,4 +91,7 @@
         self.emit_search()
 
+    def emit_expand_search_options(self):
+        self.emit(self.expand_search_options_signal)
+        
     def emit_search(self):
         text = unicode(self.search_input.user_input())
Index: /trunk/camelot/view/controls/filterlist.py
===================================================================
--- /trunk/camelot/view/controls/filterlist.py (revision 1165)
+++ /trunk/camelot/view/controls/filterlist.py (revision 1184)
@@ -58,5 +58,4 @@
         widget.setLayout(layout)
         self.setWidget(widget)
-        #self.setMaximumWidth(self.fontMetrics().width( ' ' )*70)
         if len(items) == 0:
             self.setMaximumWidth(0)
Index: /trunk/camelot/view/controls/tableview.py
===================================================================
--- /trunk/camelot/view/controls/tableview.py (revision 1183)
+++ /trunk/camelot/view/controls/tableview.py (revision 1184)
@@ -113,6 +113,8 @@
     def __init__( self, parent, admin ):
         QtGui.QWidget.__init__( self, parent )
+        layout = QtGui.QVBoxLayout()
         widget_layout = QtGui.QHBoxLayout()
         self.search = self.search_widget( self )
+        self.connect(self.search, SimpleSearchControl.expand_search_options_signal, self.expand_search_options)
         title = UserTranslatableLabel( admin.get_verbose_name_plural(), self )
         title.setFont( self._title_font )
@@ -122,11 +124,20 @@
             self.number_of_rows = self.rows_widget( self )
             widget_layout.addWidget( self.number_of_rows )
-      
         else:
             self.number_of_rows = None
-        self.setLayout( widget_layout )
+        layout.addLayout( widget_layout )
+        self._expanded_search = QtGui.QLabel('Expanded')
+        self._expanded_search.hide()
+        layout.addWidget(self._expanded_search)
+        self.setLayout( layout )
         self.setSizePolicy( QSizePolicy.Minimum, QSizePolicy.Fixed )
         self.setNumberOfRows( 0 )
     
+    def expand_search_options(self):
+        if self._expanded_search.isHidden():
+            self._expanded_search.show()
+        else:
+            self._expanded_search.hide()
+        
     @gui_function
     def setNumberOfRows( self, rows ):
