]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Errors in header edition.
authorstv <stv@opencascade.com>
Thu, 5 Oct 2006 11:02:42 +0000 (11:02 +0000)
committerstv <stv@opencascade.com>
Thu, 5 Oct 2006 11:02:42 +0000 (11:02 +0000)
src/QDS/QDS_Datum.cxx
src/Qtx/QtxTable.cxx
src/Qtx/QtxTable.h

index a542a19b40812925a21e09d4db3bea9099201eed..6f57de32b57526d2167cae676a755a9143b25455 100644 (file)
@@ -30,6 +30,7 @@
 #include <qwhatsthis.h>
 #include <qvalidator.h>
 #include <qmessagebox.h>
+#include <qapplication.h>
 
 #include <TColStd_SequenceOfAsciiString.hxx>
 
@@ -50,6 +51,8 @@ public:
   virtual void  setGeometry( int x, int y, int w, int h );
   virtual void  setSizePolicy( QSizePolicy );
 
+  virtual bool  eventFilter( QObject*, QEvent* );
+
 private:
   QWidget*      myWid;
 };
@@ -77,6 +80,9 @@ void QDS_Datum::Wrapper::setWidget( QWidget* wid )
   if ( myWid == wid )
     return;
 
+  if ( myWid )
+    myWid->removeEventFilter( this );
+
   myWid = wid;
 
   if ( !myWid )
@@ -85,6 +91,8 @@ void QDS_Datum::Wrapper::setWidget( QWidget* wid )
   if ( myWid->parent() != this )
     myWid->reparent( this, QPoint( 0, 0 ) );
 
+  myWid->installEventFilter( this );
+
   setTabOrder( this, myWid );
   setFocusProxy( myWid );
 
@@ -92,6 +100,14 @@ void QDS_Datum::Wrapper::setWidget( QWidget* wid )
   updateGeometry();
 }
 
+bool QDS_Datum::Wrapper::eventFilter( QObject* o, QEvent* e )
+{
+  if ( o == widget() && ( e->type() == QEvent::FocusIn || e->type() == QEvent::FocusOut ) )
+    QApplication::sendEvent( this, e );
+
+  return false;
+}
+
 void QDS_Datum::Wrapper::setSizePolicy( QSizePolicy sp )
 {
   QWidget::setSizePolicy( sp );
index 1f7c0be558ff993ee1af7d6127c0624467f3df1f..6d110e63fc7791b7a17335e744c4caea47251725 100644 (file)
@@ -117,16 +117,6 @@ void QtxTable::endEditHeader( const bool accept )
   endHeaderEdit( accept );
 }
 
-/*!
-  Finishes edition and hides table
-*/
-void QtxTable::hide()
-{
-  endHeaderEdit();
-
-  QTable::hide();
-}
-
 /*!
   Custom event filter
   Starts edition of header by double click
@@ -168,10 +158,10 @@ bool QtxTable::eventFilter( QObject* o, QEvent* e )
   }
 
   if ( o == myHeaderEditor && e->type() == QEvent::FocusOut &&
-       isHeaderEditing() && ((QFocusEvent*)e)->reason() != QFocusEvent::Popup )
+       ((QFocusEvent*)e)->reason() != QFocusEvent::Popup )
   {
-               endHeaderEdit();
-               return true;
+                 endHeaderEdit();
+                 return true;
   }
 
   if ( e->type() == QEvent::Wheel && isHeaderEditing() )
@@ -180,6 +170,86 @@ bool QtxTable::eventFilter( QObject* o, QEvent* e )
   return QTable::eventFilter( o, e );
 }
 
+/*!
+  Reimplemented for internal reasons.
+  Firstly end the edition of header.
+*/
+void QtxTable::setNumRows( int rows )
+{
+  endHeaderEdit();
+  QTable::setNumRows( rows );
+}
+
+/*!
+  Reimplemented for internal reasons.
+  Firstly end the edition of header.
+*/
+void QtxTable::setNumCols( int cols )
+{
+  endHeaderEdit();
+  QTable::setNumCols( cols );
+}
+
+/*!
+  Reimplemented for internal reasons.
+  Firstly end the edition of header.
+*/
+void QtxTable::insertRows( int row, int count )
+{
+  endHeaderEdit();
+  QTable::insertRows( row, count );
+}
+
+/*!
+  Reimplemented for internal reasons.
+  Firstly end the edition of header.
+*/
+void QtxTable::insertColumns( int col, int count )
+{
+  endHeaderEdit();
+  QTable::insertColumns( col, count );
+}
+
+/*!
+  Reimplemented for internal reasons.
+  Firstly end the edition of header.
+*/
+void QtxTable::removeRow( int row )
+{
+  endHeaderEdit();
+  QTable::removeRow( row );
+}
+
+/*!
+  Reimplemented for internal reasons.
+  Firstly end the edition of header.
+*/
+void QtxTable::removeRows( const QMemArray<int>& rows )
+{
+  endHeaderEdit();
+  QTable::removeRows( rows );
+}
+
+/*!
+  Reimplemented for internal reasons.
+  Firstly end the edition of header.
+*/
+void QtxTable::removeColumn( int col )
+{
+  endHeaderEdit();
+  QTable::removeColumn( col );
+}
+
+/*!
+  Reimplemented for internal reasons.
+  Firstly end the edition of header.
+*/
+void QtxTable::removeColumns( const QMemArray<int>& cols )
+{
+  endHeaderEdit();
+  QTable::removeColumns( cols );
+}
+
 /*!
   SLOT: called on scroll
 */
@@ -197,6 +267,16 @@ void QtxTable::onHeaderSizeChange( int, int, int )
     updateHeaderEditor();
 }
 
+/*!
+  Custom hide event handler
+*/
+void QtxTable::hideEvent( QHideEvent* e )
+{
+  endHeaderEdit();
+
+  QTable::hideEvent( e );
+}
+
 /*!
   Custom resize event handler
 */
index b7175d08e1e2b8df14c4f932d75ba865383e583d..a7d4f3ebf91f05c8eb90b1b0506666eabb66ab71 100644 (file)
@@ -48,19 +48,29 @@ public:
 
   virtual bool     eventFilter( QObject*, QEvent* );
 
+  virtual void     setNumRows( int );
+  virtual void     setNumCols( int );
+
 signals:
   void             headerEdited( QHeader*, int );
   void             headerEdited( Orientation, int );
 
 public slots:
-  virtual void     hide();
   virtual void     setHeaderEditable( Orientation, bool );
 
+  virtual void     insertRows( int, int = 1 );
+  virtual void     insertColumns( int, int = 1 );
+  virtual void     removeRow( int );
+  virtual void     removeRows( const QMemArray<int>& );
+  virtual void     removeColumn( int );
+  virtual void     removeColumns( const QMemArray<int>& );
+
 private slots:
   void             onScrollBarMoved( int );
   void             onHeaderSizeChange( int, int, int );
 
 protected:
+  virtual void     hideEvent( QHideEvent* );
   virtual void     resizeEvent( QResizeEvent* );
 
   virtual bool     beginHeaderEdit( Orientation, const int );