/
perlOGREGUI.cpp
52 lines (32 loc) · 1.41 KB
/
perlOGREGUI.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "perlOGREGUI.h"
#ifdef PERLOGRE_HAS_GTK2
// Don't assume I know what I'm doing; please send patches.
Ogre::String getWindowHandleString(GtkWidget *widget)
{
Ogre::String handle;
// GTK_WIDGET_SET_FLAGS(widget, GTK_REALIZED);
gtk_widget_realize(widget);
GdkWindow *parent = gtk_widget_get_parent_window(widget);
// gdk_window_show(parent);
#if defined(__WIN32__) || defined(_WIN32)
handle = Ogre::StringConverter::toString((unsigned long) GDK_WINDOW_HWND(parent));
#else
// #elif defined(__WXGTK__)
GdkDisplay* display = gdk_drawable_get_display(GDK_DRAWABLE(parent));
Display *xdisplay = GDK_DISPLAY_XDISPLAY(display);
XSync(xdisplay, false);
GdkScreen* screen = gdk_drawable_get_screen(GDK_DRAWABLE(parent));
Screen *xscreen = GDK_SCREEN_XSCREEN(screen);
int screen_number = XScreenNumberOfScreen(xscreen);
// XID xid_parent = GDK_WINDOW_XWINDOW(parent);
// "parentWindowHandle"
// handle =
// Ogre::StringConverter::toString(reinterpret_cast<unsigned long>(xdisplay)) + ":" +
// Ogre::StringConverter::toString(static_cast<unsigned int>(screen_number)) + ":" +
// Ogre::StringConverter::toString(static_cast<unsigned long>(xid_parent));
handle = Ogre::StringConverter::toString(static_cast<unsigned long>(GDK_WINDOW_XID(parent)));
#endif
// dunno what MacOS needs - you tell me
return handle;
}
#endif /* PERLOGRE_HAS_GTK2 */