]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Bug fix of non opaque dock widget resizing mode.
authorstv <stv@opencascade.com>
Fri, 13 May 2011 07:40:23 +0000 (07:40 +0000)
committerstv <stv@opencascade.com>
Fri, 13 May 2011 07:40:23 +0000 (07:40 +0000)
src/Qtx/QtxMainWindow.cxx

index 8546d96687bc89f4b93a42ecf688930dbdcfd28b..7ddeff7ddc8879d3aecb3c5096f45e26d4308556 100644 (file)
@@ -141,7 +141,7 @@ QtxMainWindow::Resizer::Resizer( const QPoint& p, const Qt::Orientation o, QtxMa
 
   setPosition( p );
 
-  myRubber->show();
+  myRubber->hide();
 };
 
 /*!
@@ -170,6 +170,8 @@ void QtxMainWindow::Resizer::setPosition( const QPoint& pos )
       r = QRect( p - 1, myMain->mapToGlobal( QPoint( 0, 0 ) ).y(), 3, myMain->height() );
     }
     myRubber->setGeometry( r );
+    if ( !myRubber->isVisible() )
+      myRubber->show();
   }
 }
 
@@ -560,22 +562,34 @@ void QtxMainWindow::onDestroyed( QObject* obj )
 
 bool QtxMainWindow::event( QEvent* e )
 {
-  if ( myResizer && e->type() == QEvent::MouseButtonRelease ) {
-    if ( myMouseMove ) {
-      QMainWindow::event( myMouseMove );
-      delete myMouseMove;
-      myMouseMove = 0;
-    }
+  if ( e->type() == QEvent::WindowDeactivate ) {
+    printf( "----------------> Deactivated\n" );
+  }
 
+  if ( myResizer ) {
     QMouseEvent* me = static_cast<QMouseEvent*>( e );
-    myResizer->setFinalEvent( new QMouseEvent( me->type(), me->pos(), me->globalPos(),
-                                              me->button(), me->buttons(), me->modifiers() ) );
-    myResizer = 0;
-    return true;
+    if ( ( e->type() == QEvent::MouseButtonRelease && me->button() == Qt::LeftButton ) || 
+        ( e->type() == QEvent::MouseButtonPress && me->button() != Qt::LeftButton ) ) {
+      if ( me->button() == Qt::LeftButton ) {
+       if ( myMouseMove ) {
+         QMainWindow::event( myMouseMove );
+         delete myMouseMove;
+         myMouseMove = 0;
+       }
+
+       QMouseEvent* me = static_cast<QMouseEvent*>( e );
+       myResizer->setFinalEvent( new QMouseEvent( QEvent::MouseButtonRelease, me->pos(), me->globalPos(),
+                                                  Qt::LeftButton, me->buttons(), me->modifiers() ) );
+       myResizer = 0;
+       return true;
+      }
+    }
   }
 
   if ( myResizer && e->type() == QEvent::MouseMove ) {
     QMouseEvent* me = static_cast<QMouseEvent*>( e );
+    if ( myMouseMove )
+      delete myMouseMove;
     myMouseMove = new QMouseEvent( me->type(), me->pos(), me->globalPos(),
                                    me->button(), me->buttons(), me->modifiers() );
     myResizer->setPosition( me->globalPos() );
@@ -583,8 +597,9 @@ bool QtxMainWindow::event( QEvent* e )
 
   bool ok = QMainWindow::event( e );
 
-  if ( e->type() == QEvent::MouseButtonPress ) {
-    if ( !isOpaqueResize() && ok && testAttribute( Qt::WA_SetCursor ) ) {
+  if ( !myResizer && e->type() == QEvent::MouseButtonPress ) {
+    QMouseEvent* me = static_cast<QMouseEvent*>( e );
+    if ( !isOpaqueResize() && ok && testAttribute( Qt::WA_SetCursor ) && me->button() == Qt::LeftButton ) {
       bool status = true;
       Qt::Orientation o;
       switch ( cursor().shape() )
@@ -600,8 +615,9 @@ bool QtxMainWindow::event( QEvent* e )
          break;
        }
       if ( status ) {
-       QMouseEvent* me = static_cast<QMouseEvent*>( e );
        myResizer = new Resizer( me->globalPos(), o, this );
+       myMouseMove = new QMouseEvent( me->type(), me->pos(), me->globalPos(),
+                                      me->button(), me->buttons(), me->modifiers() );
       }
     }
   }