Fix kapplication ARGB init methods

git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1246945 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
v3.5.13-sru
tpearson 13 years ago
parent 356e5c30a8
commit b56a10ae43

@ -667,6 +667,22 @@ KApplication::KApplication( bool allowStyles, bool GUIenabled ) :
}
#ifdef Q_WS_X11
KApplication::KApplication( Display *dpy, bool allowStyles ) :
TQApplication( dpy, *KCmdLineArgs::qt_argc(), *KCmdLineArgs::qt_argv(),
getX11RGBAVisual(dpy), getX11RGBAColormap(dpy) ),
KInstance( KCmdLineArgs::about), display(0L), d (new KApplicationPrivate)
{
aIconPixmap.pm.icon = 0L;
aIconPixmap.pm.miniIcon = 0L;
read_app_startup_id();
useStyles = allowStyles;
setName( instanceName() );
installSigpipeHandler();
parseCommandLine( );
init( true );
d->m_KAppDCOPInterface = new KAppDCOPInterface(this);
}
KApplication::KApplication( Display *dpy, Qt::HANDLE visual, Qt::HANDLE colormap,
bool allowStyles ) :
TQApplication( dpy, *KCmdLineArgs::qt_argc(), *KCmdLineArgs::qt_argv(),
@ -1803,11 +1819,16 @@ bool KApplication::detectCompositionManagerAvailable(bool force_available) {
Display* KApplication::openX11RGBADisplay() {
KCmdLineArgs *qtargs = KCmdLineArgs::parsedArgs("qt");
char *displayname = 0;
char *display = 0;
if ( qtargs->isSet("display"))
displayname = qtargs->getOption( "display" ).data();
display = qtargs->getOption( "display" ).data();
Display *dpy = XOpenDisplay( display );
if ( !dpy ) {
kdError() << "cannot connect to X server " << display << endl;
exit( 1 );
}
Display *dpy = XOpenDisplay( displayname );
return dpy;
}
@ -1866,53 +1887,6 @@ void KApplication::getX11RGBAInformation(Display *dpy) {
argb_visual = false;
return;
}
KApplication KApplication::KARGBApplicationObject( bool allowStyles ) {
KCmdLineArgs *qtargs = KCmdLineArgs::parsedArgs("qt");
bool argb_visual_available = false;
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_available = true;
break;
}
}
}
if( argb_visual_available ) {
return KApplication( dpy, Qt::HANDLE( visual ), Qt::HANDLE( colormap ), allowStyles );
}
else {
return KApplication(allowStyles, true);
}
}
#else
void KApplication::getX11RGBAInformation(Display *dpy) {
}

@ -113,9 +113,11 @@ public:
* This constructor takes aboutData and command line
* arguments from KCmdLineArgs.
*
* If ARGB (transparent) widgets are to be used in your application,
* please use KARGBApplication(new object name) or
* KARGBApplication(new object name, allow_styles) instead of KApplication(...).
* If ARGB (transparent) widgets are to be used in your application,
* please use
* KApplication app(KApplication::openX11RGBADisplay());
* or
* KApplication app(KApplication::openX11RGBADisplay(), useStyles);
*
* @param allowStyles Set to false to disable the loading on plugin based
* styles. This is only useful to applications that do not display a GUI
@ -129,6 +131,25 @@ public:
KApplication( bool allowStyles=true, bool GUIenabled=true);
#ifdef Q_WS_X11
/**
* Constructor. Parses command-line arguments. Use this constructor when you
* you want ARGB support to be automatically detected and enabled.
*
* @param display Will be passed to Qt as the X display. The display must be
* valid and already opened.
*
* @param allowStyles Set to false to disable the loading on plugin based
* styles. This is only useful to applications that do not display a GUI
* normally. If you do create an application with @p allowStyles set to false
* that normally runs in the background but under special circumstances
* displays widgets call enableStyles() before displaying any widgets.
*
* @since KDE 3.5
*
* @see RGBADisplay()
*/
KApplication(Display *display, bool allowStyles);
/**
* Constructor. Parses command-line arguments. Use this constructor when you
* you need to use a non-default visual or colormap.
@ -899,19 +920,13 @@ public:
/**
* @internal
* Opens an X11 display and returns the handle to it
* @return the X11 display handle
* Opens the display
* This can be used to initialize a KApplication with RGBA support like this:
* KApplication app(KApplication::openX11RGBADisplay());
* or
* KApplication app(KApplication::openX11RGBADisplay(), useStyles);
*/
Display *openX11RGBADisplay();
/**
* @internal
* Creates a default KApplication with transparency support
* (if available)
*/
static KApplication KARGBApplicationObject( bool allowStyles=true );
#define KARGBApplication(objectname, ...) const KApplication &__kapplication_internal_app = KApplication::KARGBApplicationObject(__VA_ARGS__); KApplication &objectname = const_cast<KApplication&>(__kapplication_internal_app);
static Display* openX11RGBADisplay();
/**
* Returns the X11 display visual

Loading…
Cancel
Save