+// For implementation purposes - sometimes decorations make the client area
+// smaller
+wxPoint wxTopLevelWindowX11::GetClientAreaOrigin() const
+{
+ // wxFrame::GetClientAreaOrigin
+ // does the required calculation already.
+ return wxPoint(0, 0);
+}
+
+void wxTopLevelWindowX11::DoGetClientSize( int *width, int *height ) const
+{
+ if (width)
+ *width = m_width;
+ if (height)
+ *height = m_height;
+}
+
+void wxTopLevelWindowX11::DoGetSize( int *width, int *height ) const
+{
+ // TODO add non-client size
+
+ if (width)
+ *width = m_width;
+ if (height)
+ *height = m_height;
+}
+
+void wxTopLevelWindowX11::DoSetClientSize(int width, int height)
+{
+ int old_width = m_width;
+ int old_height = m_height;
+
+ m_width = width;
+ m_height = height;
+
+ if (m_width == old_width && m_height == old_height)
+ return;
+
+ // wxLogDebug("DoSetClientSize: %s (%ld) %dx%d", GetClassInfo()->GetClassName(), GetId(), width, height);
+
+#if !wxUSE_NANOX
+ XSizeHints size_hints;
+ size_hints.flags = PSize;
+ size_hints.width = width;
+ size_hints.height = height;
+ XSetWMNormalHints( wxGlobalDisplay(), (Window) GetMainWindow(), &size_hints );
+#endif
+
+ wxWindowX11::DoSetClientSize(width, height);
+}
+
+void wxTopLevelWindowX11::DoSetSize(int x, int y, int width, int height, int sizeFlags)
+{
+ int old_x = m_x;
+ int old_y = m_y;
+ int old_width = m_width;
+ int old_height = m_height;
+
+ if (x != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
+ m_x = x;
+
+ if (y != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
+ m_y = y;
+
+ if (width != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
+ m_width = width;
+
+ if (height != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
+ m_height = height;
+
+ if (m_x == old_x && m_y == old_y && m_width == old_width && m_height == old_height)
+ return;
+
+ // wxLogDebug("DoSetSize: %s (%ld) %d, %d %dx%d", GetClassInfo()->GetClassName(), GetId(), x, y, width, height);
+
+#if !wxUSE_NANOX
+ XSizeHints size_hints;
+ size_hints.flags = 0;
+ size_hints.flags |= PPosition;
+ size_hints.flags |= PSize;
+ size_hints.x = m_x;
+ size_hints.y = m_y;
+ size_hints.width = m_width;
+ size_hints.height = m_height;
+ XSetWMNormalHints( wxGlobalDisplay(), (Window) GetMainWindow(), &size_hints);
+#endif
+
+ wxWindowX11::DoSetSize(x, y, width, height, sizeFlags);
+