1
Window / Re: How to get clientrect position or the rect size of titlebar?
« on: December 30, 2015, 05:11:19 pm »You can call an OS-specific function on your window with window.getSystemHandle().
Hi Laurent, It works when using Win32 API on Window. But when porting my project to linux, I find it may be impossible to get the client rect of the window under linux/X11.
Because the Window.getSystemHandle() function calls sfWindow_getSystemHandle in CSFML.
public virtual IntPtr SystemHandle
{
get {return sfWindow_getSystemHandle(CPointer);}
}
https://github.com/SFML/SFML.Net/blob/master/src/Window/Window.cs#L325{
get {return sfWindow_getSystemHandle(CPointer);}
}
And sfWindow_getSystemHandle returns a sfWindowHandle.
sfWindowHandle sfWindow_getSystemHandle(const sfWindow* window)
{
CSFML_CHECK_RETURN(window, 0);
return (sfWindowHandle)window->This.getSystemHandle();
}
https://github.com/SFML/CSFML/blob/3e767dec4f812116f29edbbf58803f5e40833a4a/src/SFML/Window/Window.cpp#L326{
CSFML_CHECK_RETURN(window, 0);
return (sfWindowHandle)window->This.getSystemHandle();
}
https://github.com/SFML/SFML/blob/2d1fab374f3d7e9765fe1e83b23dfb5b7f80f012/src/SFML/Window/Window.cpp#L374
https://github.com/SFML/CSFML/blob/3e767dec4f812116f29edbbf58803f5e40833a4a/include/SFML/Window/WindowHandle.h#L47
Which refers to a xcb_window_t.
https://github.com/SFML/SFML/blob/2d1fab374f3d7e9765fe1e83b23dfb5b7f80f012/src/SFML/Window/Unix/WindowImplX11.cpp#L585
https://github.com/SFML/SFML/blob/2d1fab374f3d7e9765fe1e83b23dfb5b7f80f012/src/SFML/Window/Unix/WindowImplX11.cpp#L388
But I can't get the client rect when only a xcb_window_t is provided under linux/X11. The X Display is need to retrive the client rect info.
If the X Display is provided, I can use XGetGeometry to get the client area info.
Anyway, I cannot make it when only xcb_window_t is available.
I'm not familiar with linux/X11, Xlib and XCB and was just beginning to dig into these problem. Yet not a native English speaker. Ask me if any can not be understood.
PS.
I have looked into the Window.CPointer in SFML.NET, but it is just a opaque struct used internally. Am I right?
https://github.com/SFML/CSFML/blob/3e767dec4f812116f29edbbf58803f5e40833a4a/include/SFML/Window/Types.h#L30