From d7017c251b62a97fae3ba383e07b073ece9ee059 Mon Sep 17 00:00:00 2001 From: markd Date: Fri, 8 Jun 2007 12:35:37 +0000 Subject: 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. --- x11/kdebase3/Makefile | 3 +- x11/kdebase3/distinfo | 3 +- x11/kdebase3/patches/patch-ar | 168 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 x11/kdebase3/patches/patch-ar (limited to 'x11') 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 + # include + # include ++# include + #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; + } -- cgit v1.2.3