Hello again, So I've looked over this a little more this morning and I think I have a solution (not necessarily the solution, that's up for discussion of course). I compared BNPView::showPassiveDroppedDelayed() to basket v1.0.3 and it's identical. The difference is that before when using KDE3 our SystemTray inherited from KSystemTray which inherited from QLabel which is a QWidget so there was no problem using our Global::systemTray as the parent of the KPassivePopup. But as of KDE4 it seems that KSystemTray has gone away in favor of KSystemTrayIcon which is no longer a QWidget. So as a proof of concept this patch first checks whether we're going to use the system tray, and if so calls systemTray->showMessage() rather than creating a KPassivePopup. QSystemTray->ShowMessage is more limited than KPassivePopup (no custom icons for example), but it looks like a very native system tray popup.
Comments/Concerns? If we do want to do something like this there are another three or four places in bnpview.cpp where we have the same KPassivePopup constructor line that should also be modified. -Jon =====PATCH===== diff --git a/src/bnpview.cpp b/src/bnpview.cpp index 5fbb3f0..6554eff 100644 --- a/src/bnpview.cpp +++ b/src/bnpview.cpp @@ -2308,19 +2308,25 @@ void BNPView::showPassiveDroppedDelayed() QString title = m_passiveDroppedTitle; - delete m_passivePopup; // Delete previous one (if exists): it will then hide it (only one at a time) - m_passivePopup = new KPassivePopup(Settings::useSystray() ? (QWidget*)Global::systemTray : this); - QImage contentsImage = NoteDrag::feedbackPixmap(m_passiveDroppedSelection).toImage(); - QResource::registerResource(contentsImage.bits(), ":/images/passivepopup_image"); - m_passivePopup->setView( - title.arg(Tools::textToHTMLWithoutP(currentBasket()->basketName())), - (contentsImage.isNull() ? "" : "<img src=\":/images/passivepopup_image\">"), - KIconLoader::global()->loadIcon( - currentBasket()->icon(), KIconLoader::NoGroup, 16, - KIconLoader::DefaultState, QStringList(), 0L, true - ) - ); - m_passivePopup->show(); + if (!Settings::useSystray()) { + delete m_passivePopup; // Delete previous one (if exists): it will then hide it (only one at a time) + m_passivePopup = new KPassivePopup(this); + QImage contentsImage = NoteDrag::feedbackPixmap(m_passiveDroppedSelection).toImage(); + QResource::registerResource(contentsImage.bits(), ":/images/passivepopup_image"); + m_passivePopup->setView( + title.arg(Tools::textToHTMLWithoutP(currentBasket()->basketName())), + (contentsImage.isNull() ? "" : "<img src=\":/images/passivepopup_image\">"), + KIconLoader::global()->loadIcon( + currentBasket()->icon(), KIconLoader::NoGroup, 16, + KIconLoader::DefaultState, QStringList(), 0L, true + ) + ); + m_passivePopup->show(); + } else { + Global::systemTray->showMessage("Grabbed screen zone...", + QString("to basket ") + Tools::textToHTMLWithoutP(currentBasket()->basketName()), + QSystemTrayIcon::Information, 4000); + } } void BNPView::showPassiveImpossible(const QString &message) ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Basket-devel mailing list Basket-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/basket-devel