diff --git a/modules/gui/pymod/scene/preset_editor_list_model.py b/modules/gui/pymod/scene/preset_editor_list_model.py
index e85a67c05e53ebe8500f986e2d85ab312148bdd9..a30fc13c31f098081f587978d9c0039110fcec42 100644
--- a/modules/gui/pymod/scene/preset_editor_list_model.py
+++ b/modules/gui/pymod/scene/preset_editor_list_model.py
@@ -45,7 +45,7 @@ class PresetEditorListModel(QtCore.QAbstractListModel):
         name=data.GetName()
         selection=str(data.GetSelection())
         if(len(selection)>0):
-          return QtCore.QVariant(str("%s (%s)"%(name,selection)))
+          return QtCore.QVariant(str("%s (%s)"%(name,selection.replace(os.linesep, " "))))
         else:
           return QtCore.QVariant(str("%s (all)"%name))
     return QtCore.QVariant()
diff --git a/modules/gui/pymod/scene/query_editor.py b/modules/gui/pymod/scene/query_editor.py
index 07b433a276f52c8f56da79bef72c85f7b02b5758..186ab48dd1e7006660042e338a97ffb916a689ba 100644
--- a/modules/gui/pymod/scene/query_editor.py
+++ b/modules/gui/pymod/scene/query_editor.py
@@ -5,13 +5,22 @@ class QueryEditorWidget(QtGui.QWidget):
    
   def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent)
-    self.selection_edit_ = QtGui.QLineEdit()
-    selection_label = QtGui.QLabel("Selection",self)    
+    self.default_font_= QtGui.QTextCharFormat()
+    self.default_font_.setForeground(QtGui.QBrush(QtGui.QColor(0,0,0)))
+    self.error_font_= QtGui.QTextCharFormat()
+    self.error_font_.setForeground(QtGui.QBrush(QtGui.QColor(255,0,0))) 
+    self.selection_edit_ = QtGui.QTextEdit(self)
+    self.selection_edit_.setMinimumHeight(50)
+    self.selection_edit_.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.MinimumExpanding))
+    self.selection_edit_.updateGeometry()
+    selection_label = QtGui.QLabel("Selection",self)
+        
     self.status_=QtGui.QLabel("",self);
     self.status_.setWordWrap(True)
     self.status_.setMargin(0)
     self.status_.setHidden(True)
-    
+    self.status_.setAlignment(QtCore.Qt.AlignRight)
+    self.status_.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Expanding))
     self.checkboxes_ = dict()
     for k,v in mol.QueryFlag.__dict__["values"].iteritems():
       checkbox = QtGui.QCheckBox(str(v),self)
@@ -26,17 +35,14 @@ class QueryEditorWidget(QtGui.QWidget):
     flag_label = QtGui.QLabel("Query flags")       
     grid = QtGui.QGridLayout(self)
     grid.setContentsMargins(0,5,0,0)
-    grid.addWidget(selection_label,0,0,1,1)
+    grid.addWidget(selection_label,0,0,1,1,QtCore.Qt.AlignTop|QtCore.Qt.AlignLeft)
     grid.addWidget(self.selection_edit_,0,1,1,1)
-    grid.setRowMinimumHeight(1,0)
-    grid.addWidget(self.status_,1,0,1,2)
-    grid.addWidget(flag_label,2,0,1,1)
-    grid.addLayout(v_checkbox_layout,2,1,1,1)
-    grid.setRowStretch(2, 1)
-    #group_box = QtGui.QGroupBox("Selection",self)
-    #group_box.setLayout(h_layout)
-        
-    self.connect(self.selection_edit_,QtCore.SIGNAL("textChanged(const QString& )"),self.UpdateMessage)
+    grid.addWidget(self.status_,1,0,1,2,QtCore.Qt.AlignRight)
+    grid.addWidget(flag_label,2,0,3,1,QtCore.Qt.AlignTop|QtCore.Qt.AlignLeft)
+    grid.addLayout(v_checkbox_layout,2,1,3,1)
+    grid.setRowStretch(0,1)
+    self.changing_text_=False;
+    self.connect(self.selection_edit_,QtCore.SIGNAL("textChanged()"),self.UpdateMessage)
     
   def GetQueryFlags(self):
     flag = 0
@@ -46,10 +52,10 @@ class QueryEditorWidget(QtGui.QWidget):
     return flag
   
   def GetQuery(self):
-    return mol.Query(str(self.selection_edit_.text()))
+    return mol.Query(str(self.selection_edit_.toPlainText()))
 
   def GetQueryText(self):
-    return str(self.selection_edit_.text())
+    return str(self.selection_edit_.toPlainText())
   
   def SetQueryFlags(self,flags):
     for k,v in self.checkboxes_.iteritems():
@@ -62,12 +68,26 @@ class QueryEditorWidget(QtGui.QWidget):
     self.selection_edit_.setText(query)
     
   def UpdateMessage(self):
-    q=self.GetQuery()
-    if q.IsValid():
+    if self.changing_text_:
+      return
+    self.changing_text_ = True
+    query=self.GetQuery()
+    
+    cursor=self.selection_edit_.textCursor()
+    cursor.select(QtGui.QTextCursor.Document)
+    cursor.setCharFormat(self.default_font_)  
+    
+    if query.IsValid():
       self.status_.setText("")
       self.status_.setHidden(True)
-      
-    else:
-      d=q.GetErrorDescription()
+    else:      
+      d=query.GetErrorDescription()
       self.status_.setText("<font color='red'>%s</font>"%d.msg)
-      self.status_.setVisible(True)
\ No newline at end of file
+      self.status_.setVisible(True)
+      self.status_.setFixedSize(self.width(),self.status_.height())
+      
+      cursor.movePosition(QtGui.QTextCursor.Start)
+      cursor.movePosition(QtGui.QTextCursor.NextCharacter, QtGui.QTextCursor.MoveAnchor, d.range.Loc)
+      cursor.movePosition(QtGui.QTextCursor.NextCharacter, QtGui.QTextCursor.KeepAnchor, d.range.Length)
+      cursor.setCharFormat(self.error_font_)
+    self.changing_text_ = False
\ No newline at end of file
diff --git a/modules/mol/base/pymod/export_query.cc b/modules/mol/base/pymod/export_query.cc
index 40c729672f0204a5fdfb0262e504525e176e4fb7..4b54cb1865981f4ee125fe01a833a54db745daa6 100644
--- a/modules/mol/base/pymod/export_query.cc
+++ b/modules/mol/base/pymod/export_query.cc
@@ -42,6 +42,7 @@ void export_Query()
   
   class_<QueryErrorDesc>("QueryErrorDesc", no_init)
     .def_readonly("msg", &QueryErrorDesc::msg)
+    .def_readonly("range", &QueryErrorDesc::range)
   ;
   
   enum_<QueryFlag::Flag>("QueryFlag")