- // VZ: is there any way to get the cursor size with GDK?
- // Mart Raudsepp: Yes, there is a way to get the default cursor size for a display ever since GDK 2.4
-#if defined(__WXGTK20__) && GTK_CHECK_VERSION(2, 4, 0)
- case wxSYS_CURSOR_X:
- case wxSYS_CURSOR_Y:
- return gdk_display_get_default_cursor_size(gdk_display_get_default());
-#else
- case wxSYS_CURSOR_X: return 16;
- case wxSYS_CURSOR_Y: return 16;
+ wxASSERT_MSG( wxDynamicCast(win, wxTopLevelWindow),
+ wxT("Asking for caption height of a non toplevel window") );
+
+ // Get the height of the top windowmanager border.
+ // This is the titlebar in most cases. The titlebar might be elsewhere, and
+ // we could check which is the thickest wm border to decide on which side the
+ // titlebar is, but this might lead to interesting behaviours in used code.
+ // Reconsider when we have a way to report to the user on which side it is.
+
+ Atom type;
+ gint format;
+ gulong nitems;
+
+#if GTK_CHECK_VERSION(2,2,0)
+ if (!gtk_check_version(2,2,0))
+ {
+ gulong bytes_after;
+ success = (XGetWindowProperty (GDK_DISPLAY_XDISPLAY(gdk_drawable_get_display(window)),
+ GDK_WINDOW_XWINDOW(window),
+ gdk_x11_get_xatom_by_name_for_display (
+ gdk_drawable_get_display(window),
+ "_NET_FRAME_EXTENTS" ),
+ 0, // left, right, top, bottom, CARDINAL[4]/32
+ G_MAXLONG, // size of long
+ false, // do not delete property
+ XA_CARDINAL, // 32 bit
+ &type, &format, &nitems, &bytes_after, &data
+ ) == Success);
+ }