diff options
| author | 2009-02-27 15:11:49 +0000 | |
|---|---|---|
| committer | 2009-02-27 15:11:49 +0000 | |
| commit | cdb7d60c0c6c81d909715e7dcd99f3c63ed3d575 (patch) | |
| tree | 37c5c3310e9b5856a6e42cd62736eea270069506 /src/modules | |
| parent | small fix for openbox (diff) | |
| download | KVIrc-cdb7d60c0c6c81d909715e7dcd99f3c63ed3d575.tar.gz KVIrc-cdb7d60c0c6c81d909715e7dcd99f3c63ed3d575.tar.bz2 KVIrc-cdb7d60c0c6c81d909715e7dcd99f3c63ed3d575.zip | |
support for real transparency using compositing under X11
removed old kde3 "krootpixmap" fake transparency
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@3104 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/aliaseditor/aliaseditor.cpp | 4 | ||||
| -rw-r--r-- | src/modules/filetransferwindow/filetransferwindow.cpp | 10 | ||||
| -rw-r--r-- | src/modules/iograph/libkviiograph.cpp | 10 | ||||
| -rw-r--r-- | src/modules/options/optw_interfacelookglobal.cpp | 52 | ||||
| -rw-r--r-- | src/modules/options/optw_interfacelookglobal.h | 6 | ||||
| -rw-r--r-- | src/modules/options/optw_messages.cpp | 10 |
6 files changed, 50 insertions, 42 deletions
diff --git a/src/modules/aliaseditor/aliaseditor.cpp b/src/modules/aliaseditor/aliaseditor.cpp index bba96b979..77e82bbcb 100644 --- a/src/modules/aliaseditor/aliaseditor.cpp +++ b/src/modules/aliaseditor/aliaseditor.cpp @@ -57,10 +57,6 @@ #include <QList> #include <QPainter> -#ifdef COMPILE_PSEUDO_TRANSPARENCY - extern KVIRC_API QPixmap * g_pShadedChildGlobalDesktopBackground; -#endif - extern KviAliasEditorWindow * g_pAliasEditorWindow; extern KviModule * g_pAliasEditorModule; diff --git a/src/modules/filetransferwindow/filetransferwindow.cpp b/src/modules/filetransferwindow/filetransferwindow.cpp index 893156424..d8e40d363 100644 --- a/src/modules/filetransferwindow/filetransferwindow.cpp +++ b/src/modules/filetransferwindow/filetransferwindow.cpp @@ -185,7 +185,15 @@ void KviFileTransferWidget::paintEvent(QPaintEvent * event) QRect rect = event->rect(); #ifdef COMPILE_PSEUDO_TRANSPARENCY - if(g_pShadedChildGlobalDesktopBackground) + if(KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency) && g_pApp->supportsCompositing()) + { + p->save(); + p->setCompositionMode(QPainter::CompositionMode_Source); + QColor col=KVI_OPTION_COLOR(KviOption_colorGlobalTransparencyFade); + col.setAlphaF((float)((float)KVI_OPTION_UINT(KviOption_uintGlobalTransparencyChildFadeFactor) / (float)100)); + p->fillRect(rect, col); + p->restore(); + } else if(g_pShadedChildGlobalDesktopBackground) { QPoint pnt = viewport()->mapToGlobal(rect.topLeft()); p->drawTiledPixmap(rect,*g_pShadedChildGlobalDesktopBackground,pnt); diff --git a/src/modules/iograph/libkviiograph.cpp b/src/modules/iograph/libkviiograph.cpp index 3ae54a2ae..bc0f2431e 100644 --- a/src/modules/iograph/libkviiograph.cpp +++ b/src/modules/iograph/libkviiograph.cpp @@ -108,7 +108,15 @@ void KviIOGraphWindow::paintEvent(QPaintEvent * e) QRect rect = e->rect(); #ifdef COMPILE_PSEUDO_TRANSPARENCY - if(g_pShadedChildGlobalDesktopBackground) + if(KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency) && g_pApp->supportsCompositing()) + { + p.save(); + p.setCompositionMode(QPainter::CompositionMode_Source); + QColor col=KVI_OPTION_COLOR(KviOption_colorGlobalTransparencyFade); + col.setAlphaF((float)((float)KVI_OPTION_UINT(KviOption_uintGlobalTransparencyChildFadeFactor) / (float)100)); + p.fillRect(rect, col); + p.restore(); + } else if(g_pShadedChildGlobalDesktopBackground) { QPoint pnt = mapToGlobal(rect.topLeft()); p.drawTiledPixmap(rect,*g_pShadedChildGlobalDesktopBackground,pnt); diff --git a/src/modules/options/optw_interfacelookglobal.cpp b/src/modules/options/optw_interfacelookglobal.cpp index ad0a6be3a..4a028780b 100644 --- a/src/modules/options/optw_interfacelookglobal.cpp +++ b/src/modules/options/optw_interfacelookglobal.cpp @@ -27,6 +27,7 @@ #include "kvi_settings.h" #include "kvi_options.h" #include "kvi_locale.h" +#include "kvi_app.h" #include "kvi_tal_tooltip.h" #include <QLayout> @@ -61,19 +62,15 @@ KviThemeTransparencyOptionsWidget::KviThemeTransparencyOptionsWidget(QWidget * p { #ifdef COMPILE_PSEUDO_TRANSPARENCY - #ifdef COMPILE_KDE_SUPPORT - createLayout(); - #else - createLayout(); - #endif + createLayout(); m_pUseTransparencyBoolSelector = addBoolSelector(0,0,1,0,__tr2qs_ctx("Enable fake transparency","options"),KviOption_boolUseGlobalPseudoTransparency); - #ifdef COMPILE_KDE_SUPPORT + #ifdef COMPILE_X11_SUPPORT mergeTip(m_pUseTransparencyBoolSelector, __tr2qs_ctx("<center>This option makes all KVIrc windows look " \ "transparent.<br>You must choose a blending " \ "background image to below or check the " \ - "\"Use KDE desktop for transparency\" option.</center>","options")); + "\"real transparency option below\" option.</center>","options")); #else mergeTip(m_pUseTransparencyBoolSelector, __tr2qs_ctx("<center>This option makes all KVIrc windows look " \ @@ -93,28 +90,30 @@ KviThemeTransparencyOptionsWidget::KviThemeTransparencyOptionsWidget(QWidget * p KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency)); connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),c,SLOT(setEnabled(bool))); -// addRowSpacer(0,13,0,13); -#ifdef COMPILE_KDE_SUPPORT - m_pObtainBackgroundFromKdeBoolSelector = addBoolSelector(0,4,1,4,__tr2qs_ctx("Use KDE desktop for transparency","options"),KviOption_boolObtainGlobalBackgroundFromKde, +#ifdef COMPILE_X11_SUPPORT + m_pUseCompositingForTransparencyBoolSelector = addBoolSelector(0,4,1,4,__tr2qs_ctx("Use compositing for real transparency","options"),KviOption_boolUseCompositingForTransparency, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency)); - connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),m_pObtainBackgroundFromKdeBoolSelector,SLOT(setEnabled(bool))); - connect(m_pObtainBackgroundFromKdeBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableUpdateKdeBackgroundBoolSelector(bool))); - - m_pUpdateKdeBackgroundOnChangeBoolSelector = addBoolSelector(0,5,1,5,__tr2qs_ctx("Keep in sync with KDE background changes","options"),KviOption_boolUpdateKdeBackgroundOnChange, - KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) && KVI_OPTION_BOOL(KviOption_boolObtainGlobalBackgroundFromKde)); m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0,6,1,6,__tr2qs_ctx("Transparency blend image:","options"),KviOption_pixmapGlobalTransparencyBackground, - KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) && !KVI_OPTION_BOOL(KviOption_boolObtainGlobalBackgroundFromKde)); + KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) && !KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency)); layout()->setRowStretch(6,1); - connect(m_pObtainBackgroundFromKdeBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableGlobalBackgroundPixmapSelector(bool))); -#else //!COMPILE_KDE_SUPPORT + if(g_pApp->supportsCompositing()) + { + connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),m_pUseCompositingForTransparencyBoolSelector,SLOT(setEnabled(bool))); + connect(m_pUseCompositingForTransparencyBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableGlobalBackgroundPixmapSelector(bool))); + } else { + m_pUseCompositingForTransparencyBoolSelector->setEnabled(false); + m_pUseCompositingForTransparencyBoolSelector->setChecked(false); + enableGlobalBackgroundPixmapSelector(true); + } + +#else //!COMPILE_X11_SUPPORT m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0,4,1,4,__tr2qs_ctx("Transparency blend image:","options"),KviOption_pixmapGlobalTransparencyBackground, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency)); layout()->setRowStretch(4,1); -#endif //!COMPILE_KDE_SUPPORT +#endif //!COMPILE_X11_SUPPORT connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableGlobalBackgroundPixmapSelector(bool))); - connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableUpdateKdeBackgroundBoolSelector(bool))); #else createLayout(); addRowSpacer(0,0,0,0); @@ -128,23 +127,14 @@ KviThemeTransparencyOptionsWidget::~KviThemeTransparencyOptionsWidget() void KviThemeTransparencyOptionsWidget::enableGlobalBackgroundPixmapSelector(bool) { #ifdef COMPILE_PSEUDO_TRANSPARENCY - #ifdef COMPILE_KDE_SUPPORT - m_pGlobalBackgroundPixmapSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked() && !(m_pObtainBackgroundFromKdeBoolSelector->isChecked())); + #ifdef COMPILE_X11_SUPPORT + m_pGlobalBackgroundPixmapSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked() && !(m_pUseCompositingForTransparencyBoolSelector->isChecked())); #else m_pGlobalBackgroundPixmapSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked()); #endif #endif } -void KviThemeTransparencyOptionsWidget::enableUpdateKdeBackgroundBoolSelector(bool) -{ -#ifdef COMPILE_PSEUDO_TRANSPARENCY - #ifdef COMPILE_KDE_SUPPORT - m_pUpdateKdeBackgroundOnChangeBoolSelector->setEnabled(m_pUseTransparencyBoolSelector->isChecked() && m_pObtainBackgroundFromKdeBoolSelector->isChecked()); - #endif -#endif -} - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/modules/options/optw_interfacelookglobal.h b/src/modules/options/optw_interfacelookglobal.h index 83b0a1004..a33f55748 100644 --- a/src/modules/options/optw_interfacelookglobal.h +++ b/src/modules/options/optw_interfacelookglobal.h @@ -60,14 +60,12 @@ protected: #ifdef COMPILE_PSEUDO_TRANSPARENCY KviPixmapSelector * m_pGlobalBackgroundPixmapSelector; KviBoolSelector * m_pUseTransparencyBoolSelector; - #ifdef COMPILE_KDE_SUPPORT - KviBoolSelector * m_pObtainBackgroundFromKdeBoolSelector; - KviBoolSelector * m_pUpdateKdeBackgroundOnChangeBoolSelector; + #ifdef COMPILE_X11_SUPPORT + KviBoolSelector * m_pUseCompositingForTransparencyBoolSelector; #endif #endif protected slots: void enableGlobalBackgroundPixmapSelector(bool); - void enableUpdateKdeBackgroundBoolSelector(bool); }; diff --git a/src/modules/options/optw_messages.cpp b/src/modules/options/optw_messages.cpp index c79b47bd7..cc8159e39 100644 --- a/src/modules/options/optw_messages.cpp +++ b/src/modules/options/optw_messages.cpp @@ -226,7 +226,15 @@ void KviMessageListWidgetItemDelegate::paint(QPainter * p, const QStyleOptionVie const KviTalListWidget *tb = (const KviTalListWidget *)parent(); KviMessageListWidgetItem *it = static_cast<KviMessageListWidgetItem*>(index.internalPointer()); #ifdef COMPILE_PSEUDO_TRANSPARENCY - if(g_pShadedChildGlobalDesktopBackground) + if(KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency) && g_pApp->supportsCompositing()) + { + p->save(); + p->setCompositionMode(QPainter::CompositionMode_Source); + QColor col=KVI_OPTION_COLOR(KviOption_colorGlobalTransparencyFade); + col.setAlphaF((float)((float)KVI_OPTION_UINT(KviOption_uintGlobalTransparencyChildFadeFactor) / (float)100)); + p->fillRect(opt.rect, col); + p->restore(); + } else if(g_pShadedChildGlobalDesktopBackground) { QPoint pnt = tb->viewport()->mapToGlobal(opt.rect.topLeft()); p->drawTiledPixmap(opt.rect,*g_pShadedChildGlobalDesktopBackground, pnt); |
