]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Possibility to disable keyboard search in tree view.
authorsan <san@opencascade.com>
Wed, 17 Nov 2010 13:11:11 +0000 (13:11 +0000)
committersan <san@opencascade.com>
Wed, 17 Nov 2010 13:11:11 +0000 (13:11 +0000)
Search tool not get the alpha numeric key events from watched widget.

src/Qtx/QtxSearchTool.cxx
src/Qtx/QtxTreeView.cxx
src/Qtx/QtxTreeView.h

index dbb40df12d28f4dc6b9da41b7d0cd707aa8aaf61..674a91e79699c2914533406e8a5abb36727308ff 100644 (file)
@@ -694,66 +694,32 @@ bool QtxSearchTool::eventFilter( QObject* o, QEvent* e )
   switch ( e->type() )
   {
   case QEvent::KeyPress:
-    if ( myWatched && o == myWatched )
-    {
+    if ( o == myWatched ) {
       QKeyEvent* ke = (QKeyEvent*)e;
-      int key = ke->key();
-      QString ttf = myData->text();
       QString text = ke->text();
 
-      if ( isVisible() )
-      {
-        switch ( key )
-        {
-        case Qt::Key_Escape:
-          hide();
-          return true;
-        case Qt::Key_Backspace:
-          ttf.chop( 1 );
-          break;
-        case Qt::Key_Return:
-        case Qt::Key_Enter:
-          findNext();
-          return true;
-        default:
-          if ( text.isEmpty() || !text[0].isPrint() )
-            return QFrame::eventFilter( o, e );
-          ttf += text;
-        }
-      }
-      else
-      {
-        if ( text.isEmpty() || !isEnabled() || !text[0].isPrint() || myActivators == None )
-          return QFrame::eventFilter( o, e );
-
+      if ( !isVisible() ) {
         if ( text.startsWith( '/' ) && myActivators & SlashKey )
         {
           myData->clear();
           find();
           return true;
         }
-        else if ( !( myActivators & PrintKey ) )
+        else if ( myActivators & PrintKey && text[0].isPrint() )
         {
-          return QFrame::eventFilter( o, e );
-        }
-
-        ttf = text;
-        show();
+         myData->setText( text );
+         find( text );
+          return true;
+       }
       }
-      myData->setText( ttf );
-      find( ttf );
     }
-    break; // case QEvent::KeyPress
+    break;
   case QEvent::FocusIn:
   case QEvent::FocusOut:
     if ( focused() )
-    {
       myAutoHideTimer->stop();
-    }
     else if ( isVisible() && isAutoHideEnabled() )
-    {
       myAutoHideTimer->start();
-    }
     break;
   default:
     break;
index b6e159979eeca5f604e27530591c6702bd192e1f..bf84aa36673d0ef13f2621c33d0b16707d30df47 100644 (file)
@@ -470,7 +470,8 @@ void QtxTreeView::Header::contextMenuEvent( QContextMenuEvent* e )
   \param parent parent widget
 */
 QtxTreeView::QtxTreeView( QWidget* parent )
-: QTreeView( parent )
+  : QTreeView( parent ),
+    myKeySearchEnabled( true )
 {
   setHeader( new Header( false, this ) );
 }
@@ -481,7 +482,9 @@ QtxTreeView::QtxTreeView( QWidget* parent )
   \param parent parent widget
 */
 QtxTreeView::QtxTreeView( const bool enableSortMenu, QWidget* parent )
-: QTreeView( parent )
+  : QTreeView( parent ),
+    myKeySearchEnabled( true )
+
 {
   setHeader( new Header( enableSortMenu, this ) );
 }
@@ -772,4 +775,31 @@ void QtxTreeView::emitSortingEnabled( bool enabled )
   emit( sortingEnabled( enabled ) );
 }
 
+/*!
+  \brief Returns true if the keyboard search is enabled.
+*/
+bool QtxTreeView::isKeyboardSearchEnabled() const
+{
+  return myKeySearchEnabled;
+}
+
+/*!
+  \brief Enable/disable the keyboard search.
+*/
+void QtxTreeView::setKeyboardSearchEnabled( bool on )
+{
+  myKeySearchEnabled = on;
+}
+
+/*!
+  \brief Moves to and selects the item best matching the string search.
+  If keyboard search is disabled or no item is found nothing happens.
+  \param search is pattern string
+*/
+void QtxTreeView::keyboardSearch( const QString& search )
+{
+  if ( isKeyboardSearchEnabled() )
+    QAbstractItemView::keyboardSearch( search );
+}
+
 #include <QtxTreeView.moc>
index be47a4ab26b3ddd9cf90adbe96daeb92eb62957e..bdb2409a0e85ed56f612c2c2340a817f31ec6f01 100644 (file)
@@ -63,6 +63,11 @@ public:
 
   void     expandTo( const QModelIndex& );
 
+  bool     isKeyboardSearchEnabled() const;
+  void     setKeyboardSearchEnabled( bool );
+
+  void     keyboardSearch( const QString& );
+
 protected slots:
   void     onHeaderClicked();
   void     rowsAboutToBeRemoved( const QModelIndex&, int, int );
@@ -82,6 +87,9 @@ signals:
 private:
   void     emitSortingEnabled( bool );
 
+ private:
+  bool     myKeySearchEnabled;
+
   friend class QtxTreeView::Header;
 };