fix docking
authorcoolo <coolo@e0cc52ee-31ee-0310-8b87-e83c4596d67c>
Thu, 6 Dec 2007 20:24:43 +0000 (20:24 +0000)
committercoolo <coolo@e0cc52ee-31ee-0310-8b87-e83c4596d67c>
Thu, 6 Dec 2007 20:24:43 +0000 (20:24 +0000)
git-svn-id: http://svn.opensuse.org/svn/yast/trunk/qt4@42773 e0cc52ee-31ee-0310-8b87-e83c4596d67c

src/YQDialog.cc
src/YQMainWinDock.cc

index c4b23c3..1a56d1b 100644 (file)
 // like "Above", "Below" etc. that clash with some Qt headers.
 #include <X11/Xlib.h>
 
-#define YQMainDialogWFlags     Qt::Window
+#define YQMainDialogWFlags     Qt::Widget
 
-#define YQPopupDialogWFlags    Qt::Widget
-
-/* FIXME
-#define YQPopupDialogWFlags            \
-    ( Qt::WStyle_Customize     |       \
-      Qt::WStyle_Dialog                |       \
-      Qt::WShowModal           |       \
-      Qt::WType_Modal          |       \
-      Qt::WStyle_DialogBorder   )
-*/
+#define YQPopupDialogWFlags     Qt::Dialog
 
 
 YQDialog::YQDialog( YDialogType        dialogType,
                    YDialogColorMode    colorMode )
-    : QWidget( chooseParent( dialogType ),
-              dialogType == YMainDialog ? YQMainDialogWFlags : YQPopupDialogWFlags )
+// we first initialize without parent and then set a parent, so we can choose a parent
+// based on the YDialog constructor
+    : QWidget( 0 )
     , YDialog( dialogType, colorMode )
 {
+    setWidgetRep( this );
+    QWidget::setParent( chooseParent( dialogType ),
+                        dialogType == YMainDialog ? YQMainDialogWFlags : YQPopupDialogWFlags );
+
     _userResized       = false;
     _focusButton       = 0;
     _defaultButton     = 0;
 
-    setWidgetRep( this );
     setWindowTitle( "YaST2" );
     setFocusPolicy( Qt::StrongFocus );
 
@@ -107,14 +102,14 @@ QWidget *
 YQDialog::chooseParent( YDialogType dialogType )
 {
     QWidget * parent = 0;
-    
+
     if ( dialogType == YMainDialog &&
         YQMainWinDock::mainWinDock()->couldDock() )
     {
        y2debug( "Adding dialog to mainWinDock" );
        parent = YQMainWinDock::mainWinDock();
     }
-    
+
     return parent;
 }
 
index b1061fa..ed60b72 100644 (file)
@@ -32,7 +32,7 @@ YQMainWinDock *
 YQMainWinDock::mainWinDock()
 {
     static YQMainWinDock * mainWinDock = 0;
-    
+
     if ( ! mainWinDock )
        mainWinDock = new YQMainWinDock();
 
@@ -44,7 +44,7 @@ YQMainWinDock::YQMainWinDock()
     : QWidget( 0, // parent, name
               YQUI::ui()->noBorder() ?
               Qt::Widget :
-              Qt::Window ) 
+              Qt::Window )
 {
     setWindowTitle( "YaST2" );
 
@@ -76,7 +76,7 @@ YQMainWinDock::childEvent( QChildEvent * event )
            add( widget );
        }
     }
-    
+
     QWidget::childEvent( event );
 }
 
@@ -112,12 +112,12 @@ void
 YQMainWinDock::show()
 {
     QWidget::show();
-    
+
     if ( ! _widgetStack.empty() )
     {
        QWidget * dialog = _widgetStack.back();
-       dialog->raise();  
-       
+       dialog->raise();
+
        if ( dialog->isHidden() )
            dialog->show();
     }
@@ -135,7 +135,7 @@ YQMainWinDock::add( QWidget * dialog )
     y2debug( "Adding dialog %p to mainWinDock", dialog );
     _widgetStack.push_back( dialog );
     resizeVisibleChild();
-    
+
     if ( isHidden() )
        show();
 }
@@ -181,7 +181,7 @@ YQMainWinDock::remove( QWidget * dialog )
 
        y2warning( "Found dialog somewhere in the middle of the widget stack" );
        y2debug( "Removing dialog %p from mainWinDock", dialog );
-       
+
        _widgetStack.erase( pos );
     }
 
@@ -224,9 +224,6 @@ YQMainWinDock::topmostDialog() const
 bool
 YQMainWinDock::couldDock()
 {
-    //FIXME
-    return false;
-
     YDialog * topDialog = YDialog::topmostDialog( false ); // don't throw
 
     if ( ! topDialog ) // No dialog at all?