if the graphicswidget isn't on a corona, use the applet's scene
This commit is contained in:
parent
9775682bef
commit
7ed45afaaf
@ -341,8 +341,8 @@ void PopupAppletPrivate::popupConstraintsEvent(Plasma::Constraints constraints)
|
||||
q->resize(prefSize);
|
||||
emit q->appletTransformedItself();
|
||||
}
|
||||
//Applet on popup
|
||||
} else {
|
||||
//Applet on popup
|
||||
if (icon && lay) {
|
||||
lay->addItem(icon);
|
||||
}
|
||||
@ -363,56 +363,57 @@ void PopupAppletPrivate::popupConstraintsEvent(Plasma::Constraints constraints)
|
||||
delete proxy.data();
|
||||
}
|
||||
|
||||
if (!dialogPtr) {
|
||||
//save the aspect ratio mode in case we drag'n drop in the Desktop later
|
||||
savedAspectRatio = q->aspectRatioMode();
|
||||
//save the aspect ratio mode in case we drag'n drop in the Desktop later
|
||||
savedAspectRatio = q->aspectRatioMode();
|
||||
|
||||
if (icon) {
|
||||
icon->show();
|
||||
q->setAspectRatioMode(Plasma::ConstrainedSquare);
|
||||
}
|
||||
|
||||
Dialog *dialog = new Dialog();
|
||||
dialog->d->appletPtr = q;
|
||||
dialogPtr = dialog;
|
||||
|
||||
if (icon) {
|
||||
dialog->setAspectRatioMode(savedAspectRatio);
|
||||
}
|
||||
|
||||
//no longer use Qt::Popup since that seems to cause a lot of problem when you drag
|
||||
//stuff out of your Dialog (extenders). Monitor WindowDeactivate events so we can
|
||||
//emulate the same kind of behavior as Qt::Popup (close when you click somewhere
|
||||
//else.
|
||||
|
||||
if (gWidget) {
|
||||
Corona *corona = qobject_cast<Corona *>(gWidget->scene());
|
||||
|
||||
if (corona) {
|
||||
corona->addOffscreenWidget(gWidget);
|
||||
}
|
||||
|
||||
dialog->setGraphicsWidget(gWidget);
|
||||
//gWidget->resize(gWidget->preferredSize());
|
||||
dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | (gWidget->windowFlags() & Qt::X11BypassWindowManagerHint));
|
||||
} else if (qWidget) {
|
||||
QVBoxLayout *l_layout = new QVBoxLayout(dialog);
|
||||
l_layout->setSpacing(0);
|
||||
l_layout->setMargin(0);
|
||||
l_layout->addWidget(qWidget);
|
||||
dialog->adjustSize();
|
||||
dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | (qWidget->windowFlags() & Qt::X11BypassWindowManagerHint));
|
||||
} else {
|
||||
dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
|
||||
}
|
||||
|
||||
restoreDialogSize();
|
||||
KWindowSystem::setState(dialog->winId(), NET::SkipTaskbar | NET::SkipPager);
|
||||
dialog->installEventFilter(q);
|
||||
|
||||
QObject::connect(dialog, SIGNAL(dialogResized()), q, SLOT(dialogSizeChanged()));
|
||||
QObject::connect(dialog, SIGNAL(dialogVisible(bool)), q, SLOT(dialogStatusChanged(bool)));
|
||||
if (icon) {
|
||||
icon->show();
|
||||
q->setAspectRatioMode(Plasma::ConstrainedSquare);
|
||||
}
|
||||
|
||||
Dialog *dialog = new Dialog();
|
||||
dialog->d->appletPtr = q;
|
||||
dialogPtr = dialog;
|
||||
|
||||
if (icon) {
|
||||
dialog->setAspectRatioMode(savedAspectRatio);
|
||||
}
|
||||
|
||||
//no longer use Qt::Popup since that seems to cause a lot of problem when you drag
|
||||
//stuff out of your Dialog (extenders). Monitor WindowDeactivate events so we can
|
||||
//emulate the same kind of behavior as Qt::Popup (close when you click somewhere
|
||||
//else.
|
||||
|
||||
if (gWidget) {
|
||||
Corona *corona = qobject_cast<Corona *>(gWidget->scene());
|
||||
if (!corona) {
|
||||
corona = qobject_cast<Corona *>(q->scene());
|
||||
}
|
||||
|
||||
if (corona) {
|
||||
corona->addOffscreenWidget(gWidget);
|
||||
}
|
||||
|
||||
gWidget->show();
|
||||
dialog->setGraphicsWidget(gWidget);
|
||||
dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | (gWidget->windowFlags() & Qt::X11BypassWindowManagerHint));
|
||||
} else if (qWidget) {
|
||||
QVBoxLayout *l_layout = new QVBoxLayout(dialog);
|
||||
l_layout->setSpacing(0);
|
||||
l_layout->setMargin(0);
|
||||
l_layout->addWidget(qWidget);
|
||||
dialog->adjustSize();
|
||||
dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | (qWidget->windowFlags() & Qt::X11BypassWindowManagerHint));
|
||||
} else {
|
||||
dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
|
||||
}
|
||||
|
||||
restoreDialogSize();
|
||||
KWindowSystem::setState(dialog->winId(), NET::SkipTaskbar | NET::SkipPager);
|
||||
dialog->installEventFilter(q);
|
||||
|
||||
QObject::connect(dialog, SIGNAL(dialogResized()), q, SLOT(dialogSizeChanged()));
|
||||
QObject::connect(dialog, SIGNAL(dialogVisible(bool)), q, SLOT(dialogStatusChanged(bool)));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user