aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Fabio Bas2010-02-08 15:57:48 +0000
committerGravatar Fabio Bas2010-02-08 15:57:48 +0000
commit024faf2edc6216668783bc197c80609c64557af0 (patch)
tree9e38f640d50da095ba101220a6a5190716a701f6 /src
parentapplied patch, thanks to egns (diff)
downloadKVIrc-024faf2edc6216668783bc197c80609c64557af0.tar.gz
KVIrc-024faf2edc6216668783bc197c80609c64557af0.tar.bz2
KVIrc-024faf2edc6216668783bc197c80609c64557af0.zip
Avoid the use of a direct X call to get an ARGB visual; use Qt::WA_TranslucentBackground instead.
This way we can use a QApplication() ctor without the Display* parameter, gaining: 1) more respect from kde, that will stop calling us a "Qt-subapplication" 2) compositing portability (still to be tested) git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@3933 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
-rw-r--r--src/kvilib/tal/kvi_tal_application.cpp16
-rw-r--r--src/kvilib/tal/kvi_tal_application.h9
-rw-r--r--src/kvirc/kernel/kvi_app.cpp15
-rw-r--r--src/kvirc/kernel/kvi_app.h24
-rw-r--r--src/kvirc/kernel/kvi_main.cpp56
-rw-r--r--src/kvirc/ui/kvi_customtoolbar.cpp6
-rw-r--r--src/kvirc/ui/kvi_frame.cpp3
-rw-r--r--src/kvirc/ui/kvi_ircview.cpp6
-rw-r--r--src/kvirc/ui/kvi_menubar.cpp1
-rw-r--r--src/kvirc/ui/kvi_statusbar.cpp2
-rw-r--r--src/kvirc/ui/kvi_windowlist_tree.cpp1
-rw-r--r--src/modules/options/optw_interfacelookglobal.cpp39
12 files changed, 50 insertions, 128 deletions
diff --git a/src/kvilib/tal/kvi_tal_application.cpp b/src/kvilib/tal/kvi_tal_application.cpp
index db31689f5..55e07658b 100644
--- a/src/kvilib/tal/kvi_tal_application.cpp
+++ b/src/kvilib/tal/kvi_tal_application.cpp
@@ -26,31 +26,15 @@
#include "kvi_tal_application.h"
#ifdef COMPILE_KDE_SUPPORT
-
KviTalApplication::KviTalApplication(int &, char **)
: KApplication()
{
}
-
- #ifdef COMPILE_X11_SUPPORT
- KviTalApplication::KviTalApplication(Display * display, int &, char **, Qt::HANDLE visual, Qt::HANDLE colormap)
- : KApplication(display, visual, colormap)
- {
- }
- #endif
#else
-
KviTalApplication::KviTalApplication(int & iArgc, char ** ppcArgv)
: QApplication(iArgc,ppcArgv)
{
}
-
- #ifdef COMPILE_X11_SUPPORT
- KviTalApplication::KviTalApplication(Display * display, int & iArgc, char ** ppcArgv, Qt::HANDLE visual, Qt::HANDLE colormap)
- : QApplication(display, iArgc, ppcArgv, visual, colormap)
- {
- }
- #endif
#endif
KviTalApplication::~KviTalApplication()
diff --git a/src/kvilib/tal/kvi_tal_application.h b/src/kvilib/tal/kvi_tal_application.h
index b5d92d4e7..8e7ea7af4 100644
--- a/src/kvilib/tal/kvi_tal_application.h
+++ b/src/kvilib/tal/kvi_tal_application.h
@@ -61,15 +61,6 @@ public:
*/
KviTalApplication(int & iArgc, char ** ppcArgv);
-#ifdef COMPILE_X11_SUPPORT
- /**
- * \brief Constructs the application object
- * \param iArgc The number of arguments
- * \param ppcArgv The arguments list
- * \return KviTalApplication
- */
- KviTalApplication(Display * display, int & iArgc, char ** ppcArgv, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0);
-#endif
/**
* \brief Destructs the application object
*/
diff --git a/src/kvirc/kernel/kvi_app.cpp b/src/kvirc/kernel/kvi_app.cpp
index 8b8376dd7..34a4c42c5 100644
--- a/src/kvirc/kernel/kvi_app.cpp
+++ b/src/kvirc/kernel/kvi_app.cpp
@@ -172,21 +172,6 @@ QPixmap * g_pActivityMeterPixmap = 0;
KviApp::KviApp(int &argc,char ** argv)
: KviTalApplication(argc,argv)
{
- internalInit();
- m_bSupportsCompositing=false;
-}
-
-#ifdef COMPILE_X11_SUPPORT
-KviApp::KviApp(Display * display, int & argc, char ** argv, Qt::HANDLE visual, Qt::HANDLE colormap)
-: KviTalApplication(display, argc, argv, visual, colormap)
-{
- internalInit();
- m_bSupportsCompositing=true;
-}
-#endif
-
-void KviApp::internalInit()
-{
setApplicationName("KVIrc");
setApplicationVersion(KVIRC_VERSION_RELEASE);
setOrganizationDomain("kvirc.net");
diff --git a/src/kvirc/kernel/kvi_app.h b/src/kvirc/kernel/kvi_app.h
index b836025e3..f26742502 100644
--- a/src/kvirc/kernel/kvi_app.h
+++ b/src/kvirc/kernel/kvi_app.h
@@ -49,6 +49,10 @@
class KviIpcSentinel;
#endif // !COMPILE_NO_IPC
+#ifdef COMPILE_X11_SUPPORT
+ #include <QX11Info>
+#endif
+
class KviTalPopupMenu;
class QPixmap;
class KviTalListBox;
@@ -85,9 +89,6 @@ class KVIRC_API KviApp : public KviTalApplication
Q_OBJECT
public:
KviApp(int &argc,char ** argv);
-#ifdef COMPILE_X11_SUPPORT
- KviApp(Display * display, int & argc, char ** argv, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0);
-#endif
~KviApp();
protected:
@@ -107,7 +108,6 @@ protected:
#ifdef COMPILE_PSEUDO_TRANSPARENCY
bool m_bUpdatePseudoTransparencyPending;
#endif
- bool m_bSupportsCompositing;
#ifndef COMPILE_NO_IPC
KviIpcSentinel * m_pIpcSentinel;
#endif
@@ -144,7 +144,20 @@ public:
static int getGloballyUniqueId(); // returns an unique integer identifier across the application
bool firstTimeRun(){ return m_bFirstTimeRun; };
- bool supportsCompositing() { return m_bSupportsCompositing; };
+ inline bool supportsCompositing()
+ {
+#if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW)
+ //we need >= win2000
+ return true;
+#endif
+#ifdef COMPILE_X11_SUPPORT
+ return QX11Info::isCompositingManagerRunning();
+#endif
+#ifdef COMPILE_ON_MAC
+ return true;
+#endif
+ return false;
+ };
void setupBegin();
void setupFinish();
@@ -281,7 +294,6 @@ public slots:
void restoreDefaultScript();
void addRecentUrl(const QString& text);
private:
- void internalInit();
void createSplashScreen();
void destroySplashScreen();
diff --git a/src/kvirc/kernel/kvi_main.cpp b/src/kvirc/kernel/kvi_main.cpp
index 8e6eb4492..a7b558f1b 100644
--- a/src/kvirc/kernel/kvi_main.cpp
+++ b/src/kvirc/kernel/kvi_main.cpp
@@ -41,17 +41,13 @@
extern bool kvi_sendIpcMessage(const char * message); // kvi_ipc.cpp
#endif
-#include <qglobal.h> //for qDebug()
-
+#include <QtGlobal> //for qDebug()
#include <QMessageBox>
#ifdef COMPILE_KDE_SUPPORT
#include <KCmdLineArgs>
#include <KAboutData>
#endif
-#ifdef COMPILE_X11_SUPPORT
- #include <X11/extensions/Xrender.h>
-#endif
#define KVI_ARGS_RETCODE_OK 0
#define KVI_ARGS_RETCODE_ERROR 1
@@ -362,55 +358,7 @@ int main(int argc, char ** argv)
KCmdLineArgs::init(1, &argv[0], pAbout);
#endif
- bool bArgVisual = false;
-
-#ifdef COMPILE_X11_SUPPORT
- //this makes sure we are running X11 with a compositing manager that supports ARGV visuals
- //Code taken from an example by Zack Rusin http://zrusin.blogspot.com
- Display * pDisplay = XOpenDisplay(0); // open default display
- Colormap colormap = 0;
- Visual * pVisual = 0;
-
- if(pDisplay)
- {
- int iScreen = DefaultScreen(pDisplay);
- int iEventBase, iErrorBase;
-
- if(XRenderQueryExtension(pDisplay, &iEventBase, &iErrorBase))
- {
- int iNvi;
- XVisualInfo templ;
- templ.screen = iScreen;
- templ.depth = 32;
- templ.c_class = TrueColor;
- XVisualInfo * pXvi = XGetVisualInfo(pDisplay, VisualScreenMask |
- VisualDepthMask |
- VisualClassMask, &templ, &iNvi);
-
- for(int i = 0; i < iNvi; ++i)
- {
- XRenderPictFormat * pFormat = XRenderFindVisualFormat(pDisplay, pXvi[i].visual);
- if(pFormat->type == PictTypeDirect && pFormat->direct.alphaMask)
- {
- pVisual = pXvi[i].visual;
- colormap = XCreateColormap(pDisplay, RootWindow(pDisplay, iScreen), pVisual, AllocNone);
- bArgVisual = true;
- break;
- }
- }
- }
- }
-
- // Need to have the X socket open before IPC startup
- if(bArgVisual)
- {
- pTheApp = new KviApp(pDisplay, argc, argv, Qt::HANDLE(pVisual), Qt::HANDLE(colormap));
- } else {
-#endif
- pTheApp = new KviApp(argc,argv);
-#ifdef COMPILE_X11_SUPPORT
- }
-#endif
+ pTheApp = new KviApp(argc,argv);
#ifdef COMPILE_DBUS_SUPPORT
#ifndef COMPILE_KDE_SUPPORT
diff --git a/src/kvirc/ui/kvi_customtoolbar.cpp b/src/kvirc/ui/kvi_customtoolbar.cpp
index 0549deb06..3142de3e3 100644
--- a/src/kvirc/ui/kvi_customtoolbar.cpp
+++ b/src/kvirc/ui/kvi_customtoolbar.cpp
@@ -75,13 +75,15 @@ KviCustomToolBar::~KviCustomToolBar()
void KviCustomToolBar::paintEvent(QPaintEvent * e)
{
KviToolBar::paintEvent(e);
+
if(KviActionManager::customizingToolBars() && (KviActionManager::currentToolBar() == this))
{
- QPainter p(this);
+ QPainter *p = new QPainter(this);
QPalette pal=palette();
QColor col=pal.highlight().color();
col.setAlpha(127);
- p.fillRect(rect(),QBrush(col));
+ p->fillRect(rect(),QBrush(col));
+ delete p;
}
}
diff --git a/src/kvirc/ui/kvi_frame.cpp b/src/kvirc/ui/kvi_frame.cpp
index 0757954b4..bdd3d53b1 100644
--- a/src/kvirc/ui/kvi_frame.cpp
+++ b/src/kvirc/ui/kvi_frame.cpp
@@ -93,6 +93,9 @@ KviFrame::KviFrame()
{
g_pFrame = this;
setAutoFillBackground(false);
+ setAttribute(Qt::WA_TranslucentBackground);
+ //disable this flag that gets enabled by qt when using Qt::WA_TranslucentBackground
+ setAttribute(Qt::WA_NoSystemBackground, false);
m_pWinList = new KviPointerList<KviWindow>;
setWindowTitle(KVI_DEFAULT_FRAME_CAPTION);
diff --git a/src/kvirc/ui/kvi_ircview.cpp b/src/kvirc/ui/kvi_ircview.cpp
index dad199c2b..f4ce1bc85 100644
--- a/src/kvirc/ui/kvi_ircview.cpp
+++ b/src/kvirc/ui/kvi_ircview.cpp
@@ -225,8 +225,8 @@ KviIrcView::KviIrcView(QWidget *parent,KviFrame *pFrm,KviWindow *pWnd)
// initialize the initializable
setAttribute(Qt::WA_NoSystemBackground); // This disables automatic qt double buffering
- setAttribute(Qt::WA_OpaquePaintEvent);
- //setAttribute(Qt::WA_PaintOnScreen); // disable qt backing store (that would force us to trigger repaint() instead of the 10 times faster paintEvent(0))
+// setAttribute(Qt::WA_OpaquePaintEvent);
+// setAttribute(Qt::WA_PaintOnScreen); // disable qt backing store (that would force us to trigger repaint() instead of the 10 times faster paintEvent(0))
m_iFlushTimer = 0;
m_pToolsPopup = 0;
@@ -295,6 +295,7 @@ KviIrcView::KviIrcView(QWidget *parent,KviFrame *pFrm,KviWindow *pWnd)
// Create the scroll bar
m_pScrollBar = new QScrollBar(Qt::Vertical,this);
+ m_pScrollBar->setAutoFillBackground(true);
m_pScrollBar->setMaximum(0);
m_pScrollBar->setMinimum(0);
m_pScrollBar->setSingleStep(1);
@@ -308,6 +309,7 @@ KviIrcView::KviIrcView(QWidget *parent,KviFrame *pFrm,KviWindow *pWnd)
m_pToolsButton = new QToolButton(this);
m_pToolsButton->setObjectName("btntools");
+ m_pToolsButton->setAutoFillBackground(true);
QIcon is1(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_POPUPMENU)));
m_pToolsButton->setAutoRaise(true);
diff --git a/src/kvirc/ui/kvi_menubar.cpp b/src/kvirc/ui/kvi_menubar.cpp
index 32d0dd8bc..71b36a9f8 100644
--- a/src/kvirc/ui/kvi_menubar.cpp
+++ b/src/kvirc/ui/kvi_menubar.cpp
@@ -44,6 +44,7 @@
KviMenuBar::KviMenuBar(KviFrame * par,const char * name)
: KviTalMenuBar(par,name)
{
+ setAutoFillBackground(false);
m_pFrm = par;
m_iNumDefaultItems = 0;
diff --git a/src/kvirc/ui/kvi_statusbar.cpp b/src/kvirc/ui/kvi_statusbar.cpp
index 6f2e14d7c..38e92fd87 100644
--- a/src/kvirc/ui/kvi_statusbar.cpp
+++ b/src/kvirc/ui/kvi_statusbar.cpp
@@ -54,6 +54,8 @@
KviStatusBar::KviStatusBar(KviFrame * pFrame)
: QStatusBar(pFrame)
{
+ setAutoFillBackground(false);
+
setProperty("name","statusbar");
m_pFrame = pFrame;
// ugh :D
diff --git a/src/kvirc/ui/kvi_windowlist_tree.cpp b/src/kvirc/ui/kvi_windowlist_tree.cpp
index 033173453..f3355c876 100644
--- a/src/kvirc/ui/kvi_windowlist_tree.cpp
+++ b/src/kvirc/ui/kvi_windowlist_tree.cpp
@@ -169,6 +169,7 @@ KviTreeWindowListTreeWidget::KviTreeWindowListTreeWidget(QWidget * par)
setFont(KVI_OPTION_FONT(KviOption_fontTreeWindowList));
setFocusPolicy(Qt::NoFocus);
setFrameShape(NoFrame);
+ setAutoFillBackground(false);
viewport()->setAutoFillBackground(false);
m_pPrevItem=0;
}
diff --git a/src/modules/options/optw_interfacelookglobal.cpp b/src/modules/options/optw_interfacelookglobal.cpp
index 6e08dc8bb..dd69cecc8 100644
--- a/src/modules/options/optw_interfacelookglobal.cpp
+++ b/src/modules/options/optw_interfacelookglobal.cpp
@@ -96,35 +96,26 @@ KviThemeTransparencyOptionsWidget::KviThemeTransparencyOptionsWidget(QWidget * p
KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),c,SLOT(setEnabled(bool)));
- #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));
- m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0,6,1,6,__tr2qs_ctx("Transparency blend image:","options"),KviOption_pixmapGlobalTransparencyBackground, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) && !KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency));
- layout()->setRowStretch(6,1);
+ m_pUseCompositingForTransparencyBoolSelector = addBoolSelector(0,4,1,4,__tr2qs_ctx("Use compositing for real transparency","options"),KviOption_boolUseCompositingForTransparency, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
- 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);
- }
+ m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0,6,1,6,__tr2qs_ctx("Transparency blend image:","options"),KviOption_pixmapGlobalTransparencyBackground, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) && !KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency));
+ layout()->setRowStretch(6,1);
- #elif defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW)
- m_pUseWindowsFakeDesktopTransparencyBoolSelector = addBoolSelector(0,4,1,4,__tr2qs_ctx("Use desktop background for transparency","options"),KviOption_boolUseWindowsDesktopForTransparency, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
-
- m_pGlobalBackgroundPixmapSelector = addPixmapSelector(0,6,1,6,__tr2qs_ctx("Transparency blend image:","options"),KviOption_pixmapGlobalTransparencyBackground, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency) && !KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency));
- layout()->setRowStretch(6,1);
+ 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);
+ }
- connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),m_pUseWindowsFakeDesktopTransparencyBoolSelector,SLOT(setEnabled(bool)));
+ #if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW)
+ m_pUseWindowsFakeDesktopTransparencyBoolSelector = addBoolSelector(0,4,1,4,__tr2qs_ctx("Use desktop background for transparency","options"),KviOption_boolUseWindowsDesktopForTransparency, KVI_OPTION_BOOL(KviOption_boolUseGlobalPseudoTransparency));
connect(m_pUseWindowsFakeDesktopTransparencyBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableGlobalBackgroundPixmapSelector(bool)));
-
- #else
- 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_X11_SUPPORT
+ #endif
connect(m_pUseTransparencyBoolSelector,SIGNAL(toggled(bool)),this,SLOT(enableGlobalBackgroundPixmapSelector(bool)));
#else //!COMPILE_PSEUDO_TRANSPARENCY
createLayout();