/////////////////////////////////////////////////////////////////////////////
-// Name: reparent.cpp
+// Name: src/x11/reparent.cpp
// Purpose: wxWindow
// Author: Julian Smart
// Modified by:
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#if defined(__BORLANDC__)
+#pragma hdrstop
+#endif
+
// ============================================================================
// declarations
// ============================================================================
// headers
// ----------------------------------------------------------------------------
-#ifdef __GNUG__
- #pragma implementation "reparent.h"
-#endif
-
-#include "wx/setup.h"
-
#if !wxUSE_NANOX
#include "wx/x11/reparent.h"
&children, &numchildren) || Xerror)
{
XSetErrorHandler(old);
- return TRUE;
+ return true;
}
if (numchildren > 0)
}
XSetErrorHandler(old);
- return TRUE;
+ return true;
}
// Wait for an appropriate window to be created.
sm_toReparent = toReparent;
sm_exactMatch = exactMatch;
sm_name = windowName;
-
+
Display* display = wxGlobalDisplay();
XSelectInput(display,
RootWindowOfScreen(DefaultScreenOfDisplay(display)),
WM_STATE = XInternAtom(display, "WM_STATE", False);
#ifdef __WXDEBUG__
- if (!windowName.IsEmpty())
+ if (!windowName.empty())
wxLogDebug(_T("Waiting for window %s"), windowName.c_str());
#endif
-
+
sm_done = FALSE;
wxEventLoop eventLoop;
#endif
}
}
- return TRUE;
+ return true;
}
bool wxReparenter::ProcessXEvent(WXEvent* event)
{
wxLogDebug(_T("Window was mapped"));
}
-
+
if (xevent->type == MapNotify && !xevent->xmap.override_redirect &&
(client = (Window) FindAClientWindow((WXWindow) xevent->xmap.window, sm_name)))
{
wxLogDebug(_T("Found a client window, about to reparent"));
wxASSERT(sm_toReparent->GetParent() == NULL);
-
+
sm_toReparent->SetHandle((WXWindow) client);
sm_newParent->AddChild(sm_toReparent);
sm_done = Reparent(sm_newParent, sm_toReparent);
sm_toReparent->SetHandle((WXWindow) xevent->xmap.window);
sm_newParent->AddChild(sm_toReparent);
wxASSERT(sm_toReparent->GetParent() == NULL);
-
+
sm_done = Reparent(sm_newParent, sm_toReparent);
return sm_done;
}
Window result = 0;
XErrorHandler old;
char *clientName;
-
+
Xerror = False;
old = XSetErrorHandler(ErrorHandler);
rvalue = XGetWindowProperty((Display*) wxGetDisplay(),
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)
return NULL;
}
XSetErrorHandler(old);
-
+
result = 0;
for (i=0; i<(int)numchildren && !result ;i++) {
result = (Window) FindAClientWindow((WXWindow) children[i], name);