summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarkd <markd@pkgsrc.org>2007-06-08 12:35:37 +0000
committermarkd <markd@pkgsrc.org>2007-06-08 12:35:37 +0000
commit48fba757a89cc030501de27f9f515cdf2a19778b (patch)
tree92d88dee221c459c771dd612f29f466ff0ad4d60
parent3e87827f34362ec161b7f8ca8d33858e7eaa03b8 (diff)
downloadpkgsrc-48fba757a89cc030501de27f9f515cdf2a19778b.tar.gz
Add update from KDE svn to provide real transparency support without side
effects in konsole, if qt-copy patch #0078 is available. Fixes issue of konsoles not grouping in the TaskBar. Bump PKGREVISION.
-rw-r--r--x11/kdebase3/Makefile3
-rw-r--r--x11/kdebase3/distinfo3
-rw-r--r--x11/kdebase3/patches/patch-ar168
3 files changed, 172 insertions, 2 deletions
diff --git a/x11/kdebase3/Makefile b/x11/kdebase3/Makefile
index 01fdb43e7a8..1c8f11c76db 100644
--- a/x11/kdebase3/Makefile
+++ b/x11/kdebase3/Makefile
@@ -1,6 +1,7 @@
-# $NetBSD: Makefile,v 1.128 2007/06/08 08:23:49 rillig Exp $
+# $NetBSD: Makefile,v 1.129 2007/06/08 12:35:37 markd Exp $
DISTNAME= kdebase-${_KDE_VERSION}
+PKGREVISION= 1
CATEGORIES= x11
COMMENT= Base modules for the KDE 3 integrated X11 desktop
diff --git a/x11/kdebase3/distinfo b/x11/kdebase3/distinfo
index 9ef1b8b20f2..9211b768ae2 100644
--- a/x11/kdebase3/distinfo
+++ b/x11/kdebase3/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.96 2007/05/23 13:05:34 markd Exp $
+$NetBSD: distinfo,v 1.97 2007/06/08 12:35:37 markd Exp $
SHA1 (Daemon.README) = eb1e6af52adc02ded77af17e8953134b7e60d23b
RMD160 (Daemon.README) = 39edd92ed4314397080f32a8caff0ac3f716ecf4
@@ -24,6 +24,7 @@ SHA1 (patch-ak) = df7ff2bf5ed6bb2442d49df1c277712712a7f966
SHA1 (patch-al) = 555384dc03ab59845e5794e081dd5d1a92e2959e
SHA1 (patch-an) = e1620c558d300db98580109e64ee44a63571e5f7
SHA1 (patch-aq) = 8cdc56fb3ca1646983790b6bb20b62ac04e41aa2
+SHA1 (patch-ar) = acfc797d1e599d81e5c19169e593c5bc1f0b63a7
SHA1 (patch-bb) = 4c85002b95661db18619283e50512f3ab131a0ba
SHA1 (patch-bc) = fd7e784b584763b7351dbdaefda58443bd1aaadb
SHA1 (patch-bx) = d58d16fd484fc0a46c1ae93267af19e73af6f990
diff --git a/x11/kdebase3/patches/patch-ar b/x11/kdebase3/patches/patch-ar
new file mode 100644
index 00000000000..9ebd7774fc1
--- /dev/null
+++ b/x11/kdebase3/patches/patch-ar
@@ -0,0 +1,168 @@
+$NetBSD: patch-ar,v 1.4 2007/06/08 12:35:38 markd Exp $
+
+kde svn patch 669488
+
+--- konsole/konsole/main.cpp.orig 2007/03/13 12:29:16 642131
++++ konsole/konsole/main.cpp 2007/05/29 14:32:54 669488
+@@ -46,18 +46,15 @@
+
+ #include "konsole.h"
+
+-// COMPOSITE disabled by default because the QApplication constructor
+-// needed to enable the ARGB32 visual has undesired side effects.
+-//#if 0
+ #if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
+ #define COMPOSITE
+ #endif
+-//#endif
+
+ #ifdef COMPOSITE
+ # include <X11/Xlib.h>
+ # include <X11/extensions/Xrender.h>
+ # include <fixx11h.h>
++# include <dlfcn.h>
+ #endif
+
+ static const char description[] =
+@@ -255,47 +252,62 @@
+ if( qtargs->isSet("font") )
+ kdWarning() << "The Qt option -fn, --font has no effect." << endl;
+
++ KApplication* a = NULL;
+ #ifdef COMPOSITE
+- char *display = 0;
+- if ( qtargs->isSet("display"))
+- display = qtargs->getOption( "display" ).data();
+-
+- Display *dpy = XOpenDisplay( display );
+- if ( !dpy ) {
+- kdError() << "cannot connect to X server " << display << endl;
+- exit( 1 );
+- }
+-
+- int screen = DefaultScreen( dpy );
+- Colormap colormap = 0;
+- Visual *visual = 0;
+- int event_base, error_base;
+-
+- if ( args->isSet("real-transparency") && XRenderQueryExtension( dpy, &event_base, &error_base ) )
+- {
+- int nvi;
+- XVisualInfo templ;
+- templ.screen = screen;
+- templ.depth = 32;
+- templ.c_class = TrueColor;
+- XVisualInfo *xvi = XGetVisualInfo( dpy, VisualScreenMask | VisualDepthMask
+- | VisualClassMask, &templ, &nvi );
+-
+- for ( int i = 0; i < nvi; i++ ) {
+- XRenderPictFormat *format = XRenderFindVisualFormat( dpy, xvi[i].visual );
+- if ( format->type == PictTypeDirect && format->direct.alphaMask ) {
+- visual = xvi[i].visual;
+- colormap = XCreateColormap( dpy, RootWindow( dpy, screen ), visual, AllocNone );
+- kdDebug() << "found visual with alpha support" << endl;
+- argb_visual = true;
+- break;
++ if ( args->isSet("real-transparency")) {
++ char *display = 0;
++ if ( qtargs->isSet("display"))
++ display = qtargs->getOption( "display" ).data();
++
++ Display *dpy = XOpenDisplay( display );
++ if ( !dpy ) {
++ kdError() << "cannot connect to X server " << display << endl;
++ exit( 1 );
++ }
++
++ int screen = DefaultScreen( dpy );
++ Colormap colormap = 0;
++ Visual *visual = 0;
++ int event_base, error_base;
++
++ if ( XRenderQueryExtension( dpy, &event_base, &error_base ) ) {
++ int nvi;
++ XVisualInfo templ;
++ templ.screen = screen;
++ templ.depth = 32;
++ templ.c_class = TrueColor;
++ XVisualInfo *xvi = XGetVisualInfo( dpy, VisualScreenMask | VisualDepthMask
++ | VisualClassMask, &templ, &nvi );
++
++ for ( int i = 0; i < nvi; i++ ) {
++ XRenderPictFormat *format = XRenderFindVisualFormat( dpy, xvi[i].visual );
++ if ( format->type == PictTypeDirect && format->direct.alphaMask ) {
++ visual = xvi[i].visual;
++ colormap = XCreateColormap( dpy, RootWindow( dpy, screen ), visual, AllocNone );
++ kdDebug() << "found visual with alpha support" << endl;
++ argb_visual = true;
++ break;
++ }
+ }
+ }
+- }
++ // The QApplication ctor used is normally intended for applications not using Qt
++ // as the primary toolkit (e.g. Motif apps also using Qt), with some slightly
++ // unpleasant side effects (e.g. #83974). This code checks if qt-copy patch #0078
++ // is applied, which allows turning this off.
++ bool* qt_no_foreign_hack = static_cast< bool* >( dlsym( RTLD_DEFAULT, "qt_no_foreign_hack" ));
++ if( qt_no_foreign_hack )
++ *qt_no_foreign_hack = true;
++ // else argb_visual = false ... ? *shrug*
+
+- KApplication a( dpy, Qt::HANDLE( visual ), Qt::HANDLE( colormap ) );
++ if( argb_visual )
++ a = new KApplication( dpy, Qt::HANDLE( visual ), Qt::HANDLE( colormap ) );
++ else
++ XCloseDisplay( dpy );
++ }
++ if( a == NULL )
++ a = new KApplication;
+ #else
+- KApplication a;
++ KApplication* a = new KApplication;
+ #endif
+
+ QString dataPathBase = KStandardDirs::kde_default("data").append("konsole/");
+@@ -351,7 +363,7 @@
+ fixed_size = !args->isSet("resize");
+
+ if (!full_script)
+- a.dcopClient()->setQtBridgeEnabled(false);
++ a->dcopClient()->setQtBridgeEnabled(false);
+
+ QCString type = "";
+
+@@ -467,13 +479,13 @@
+ putenv((char*)"COLORTERM="); // to trigger mc's color detection
+ KonsoleSessionManaged ksm;
+
+- if (a.isRestored() || !profile.isEmpty())
++ if (a->isRestored() || !profile.isEmpty())
+ {
+ if (!shell)
+ shell = konsole_shell(eargs);
+
+ if (profile.isEmpty())
+- sessionconfig = a.sessionConfig();
++ sessionconfig = a->sessionConfig();
+ sessionconfig->setDesktopGroup();
+ int n = 1;
+
+@@ -629,7 +641,7 @@
+ m->setAutoClose(auto_close);
+ }
+
+- int ret = a.exec();
++ int ret = a->exec();
+
+ //// Temporary code, waiting for Qt to do this properly
+
+@@ -654,6 +666,8 @@
+ delete w;
+ }
+ delete list;
++
++ delete a;
+
+ return ret;
+ }