aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Fabio Bas2009-02-27 15:11:49 +0000
committerGravatar Fabio Bas2009-02-27 15:11:49 +0000
commitcdb7d60c0c6c81d909715e7dcd99f3c63ed3d575 (patch)
tree37c5c3310e9b5856a6e42cd62736eea270069506 /src/modules
parentsmall fix for openbox (diff)
downloadKVIrc-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.cpp4
-rw-r--r--src/modules/filetransferwindow/filetransferwindow.cpp10
-rw-r--r--src/modules/iograph/libkviiograph.cpp10
-rw-r--r--src/modules/options/optw_interfacelookglobal.cpp52
-rw-r--r--src/modules/options/optw_interfacelookglobal.h6
-rw-r--r--src/modules/options/optw_messages.cpp10
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);