laserpants / qt-material-widgets

:art: Qt widgets-based implementation of the Material Design specification.
BSD 3-Clause "New" or "Revised" License
3k stars 673 forks source link

QtMaterialDialog: overlay gets wrong size and position #30

Open ZimNovich opened 6 years ago

ZimNovich commented 6 years ago

When I am instantiating an object of QtMaterialDialog class, the overlay gets incorrectly positioned and resized. I do it this way:

// Show Preferences
QtMaterialDialog* prefs = new QtMaterialDialog(this);
// Adding child objects and stuff
. . .
prefs->setWindowLayout(dialogLayout);
prefs->show();
prefs->showDialog();

The possible solution is to call setGeometry(overlayGeometry()) in the constructor of QtMaterialOverlayWidget:

QtMaterialOverlayWidget::QtMaterialOverlayWidget(QWidget *parent)
: QWidget(parent)
{
    if (parent) {
        parent->installEventFilter(this);
        setGeometry(overlayGeometry() );
    }
}

The old version of QtMaterialOverlayWidget's constructor was:

QtMaterialOverlayWidget::QtMaterialOverlayWidget(QWidget *parent)
    : QWidget(parent)
{
    if (parent) {
        parent->installEventFilter(this);
    }
}