Formatting tidy-up

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19607 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2003-03-18 15:26:37 +00:00
parent 1cfa5d8e39
commit 174046a33c

View File

@@ -34,57 +34,6 @@
#include "wx/x11/private.h"
#include "X11/Xatom.h"
/*
Adapted from code by Mike Yang, as follows.
From: Mike Yang (mikey@eukanuba.wpd.sgi.com)
Subject: Re: Wrapping new widget around existing windows
Newsgroups: comp.windows.x
View: Complete Thread (17 articles) | Original Format
Date: 1991-08-09 09:45:48 PST
Enough people asked, so here's my test program which reparents another
window. It's a single file (reparent.c), and will work with Motif or
Xaw. Xaw users should comment out the "#define MOTIF" line.
The reparent program first prompts for the application name of the
client that it will reparent. If you're going to start the
application override_redirect (e.g. -xrm "*overrideRedirect: true"),
then this name is ignored and the first override_redirect window is
assumed to be the one.
Input focus is supposed to be correctly handled, as is resizing with
window manager hints. If you have input focus problems, try launching
your application override_redirect instead. This method is preferred
anyway, since you can map it off-screen and then avoid the "window
flash" effect as the application's top-level window is reparented.
-----------------------------------------------------------------------
Mike Yang Silicon Graphics, Inc.
mikey@sgi.com 415/335-1786
------------------------------- cut here ------------------------------
*/
/*
Copyright 1991 by Mike Yang, mikey@sgi.com, Silicon Graphics, Inc.
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation, and that the name of SGI not be used in advertising or
publicity pertaining to distribution of the software without specific,
written prior permission. SGI makes no representations about the
suitability of this software for any purpose. It is provided "as is"
without express or implied warranty.
*/
/*
* wxAdoptedWindow
*/
@@ -101,6 +50,7 @@ wxAdoptedWindow::wxAdoptedWindow(WXWindow window)
wxAdoptedWindow::~wxAdoptedWindow()
{
}
/*
* wxReparenter
*/
@@ -113,11 +63,10 @@ wxWindow* wxReparenter::sm_newParent = NULL;
wxString wxReparenter::sm_name;
bool wxReparenter::sm_exactMatch = FALSE;
static int
ErrorHandler(Display* dpy, XErrorEvent* event)
static int ErrorHandler(Display* dpy, XErrorEvent* event)
{
Xerror = True;
return False;
Xerror = True;
return False;
}
// We assume that toReparent has had its X window set
@@ -267,69 +216,71 @@ bool wxReparenter::ProcessXEvent(WXEvent* event)
WXWindow wxReparenter::FindAClientWindow(WXWindow window, const wxString& name)
{
int rvalue, i;
Atom actualtype;
int actualformat;
unsigned long nitems, bytesafter;
unsigned char *propreturn;
Window *children;
unsigned int numchildren;
Window returnroot, returnparent;
Window result = 0;
XErrorHandler old;
char *clientName;
int rvalue, i;
Atom actualtype;
int actualformat;
unsigned long nitems, bytesafter;
unsigned char *propreturn;
Window *children;
unsigned int numchildren;
Window returnroot, returnparent;
Window result = 0;
XErrorHandler old;
char *clientName;
Xerror = False;
old = XSetErrorHandler(ErrorHandler);
rvalue = XGetWindowProperty((Display*) wxGetDisplay(),
(Window) window, WM_STATE,
0, 1, False,
AnyPropertyType, &actualtype, &actualformat,
&nitems, &bytesafter, &propreturn);
Xerror = False;
old = XSetErrorHandler(ErrorHandler);
rvalue = XGetWindowProperty((Display*) wxGetDisplay(),
(Window) window, WM_STATE,
0, 1, False,
AnyPropertyType, &actualtype, &actualformat,
&nitems, &bytesafter, &propreturn);
XSetErrorHandler(old);
if (!Xerror && rvalue == Success && actualtype != None)
{
if (rvalue == Success)
{
XFree((char *) propreturn);
}
XFetchName((Display*) wxGetDisplay(), (Window) window, &clientName);
wxString str1(name);
wxString str2 = wxString::FromAscii(clientName);
str1.Lower();
str2.Lower();
bool matches;
if (sm_exactMatch)
matches = (name == wxString::FromAscii(clientName));
else
matches = (str1.Contains(str2) || str2.Contains(str1));
XFree(clientName);
if (matches)
return (WXWindow) window;
else
return NULL;
}
old = XSetErrorHandler(ErrorHandler);
if (!XQueryTree((Display*) wxGetDisplay(), (Window) window, &returnroot, &returnparent,
&children, &numchildren) || Xerror)
{
XSetErrorHandler(old);
return NULL;
}
XSetErrorHandler(old);
result = 0;
for (i=0; i<(int)numchildren && !result ;i++) {
result = (Window) FindAClientWindow((WXWindow) children[i], name);
}
if (numchildren) {
XFree((char *) children);
} return (WXWindow) result;
if (!Xerror && rvalue == Success && actualtype != None)
{
if (rvalue == Success)
{
XFree((char *) propreturn);
}
XFetchName((Display*) wxGetDisplay(), (Window) window, &clientName);
wxString str1(name);
wxString str2 = wxString::FromAscii(clientName);
str1.Lower();
str2.Lower();
bool matches;
if (sm_exactMatch)
matches = (name == wxString::FromAscii(clientName));
else
matches = (str1.Contains(str2) || str2.Contains(str1));
XFree(clientName);
if (matches)
return (WXWindow) window;
else
return NULL;
}
old = XSetErrorHandler(ErrorHandler);
if (!XQueryTree((Display*) wxGetDisplay(), (Window) window, &returnroot, &returnparent,
&children, &numchildren) || Xerror)
{
XSetErrorHandler(old);
return NULL;
}
XSetErrorHandler(old);
result = 0;
for (i=0; i<(int)numchildren && !result ;i++) {
result = (Window) FindAClientWindow((WXWindow) children[i], name);
}
if (numchildren) {
XFree((char *) children);
} return (WXWindow) result;
}
#endif